mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-04 18:09:12 +03:00
[Issue]: IPTV FREEBOX CODEC #3435
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ckd77 on GitHub (Dec 10, 2021).
Please describe your bug
Hi!
I can't get the iptv from my freebox delta to work under jellyfin.
My playlist.m3u works perfectly in VLC.
I tested a comparison of the ffmpeg from jellyfin and the base one from the debian distro.
Jellyfin ffmpeg test
Debian ffmpeg test
I tested the apha2 the problem persists.
Any idea why? Thank
Jellyfin Version
10.7.7
if other:
No response
Environment
Jellyfin logs
FFmpeg logs
Please attach any browser or client logs here
No response
Please attach any screenshots here
No response
Code of Conduct
@crobibero commented on GitHub (Dec 10, 2021):
Try switching rtsp:// with http:// as suggested here https://github.com/jellyfin/jellyfin/issues/4282
@ckd77 commented on GitHub (Dec 10, 2021):
Already tested and this solution did not work :(
@ckd77 commented on GitHub (Dec 13, 2021):
I installed jellyfin outside of docker, everything works fine, and even jellyfin is more responsive like loading content :) Bye docker!
@MayeulC commented on GitHub (Apr 20, 2022):
There are some issues with the Freebox:
I sidestepped these by running rstp-simple-server as a rtsp proxy outside of docker to make the udp->tcp conversion, though I'm having other issues (#7630). Edit: now fixed, it somewhat works (transcode only).
@Mavyre commented on GitHub (Nov 28, 2022):
Could you specify how you did that using rtsp-simple-server? I'm interested into making that work. Thanks!
@MayeulC commented on GitHub (Nov 29, 2022):
Well, since rtsp-simple-server does not support dynamically proxying everything (https://github.com/aler9/rtsp-simple-server/issues/824), the most complicated step is to transform the .m3u playlist into a configuration file for rtsp-simple-server, then regenerate the playlist (it is also needed to strip characters such as
&and?from the URLs).This is the script I wrote some time ago to perform that step, it might not be perfect. The invocation goes like that:
./playlist2yaml.sh source-playlist.m3u target-paths.yaml target-new-playlist.m3u.Then concatenate the yaml with the rest of a rtsp config.
You can check it's working if ffprobe lists available streams:
ffprobe -rtsp_transport udp -analyzeduration 3000000 -i "rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=ld" -threads 0 -v warning -print_format json -show_streams -show_format(this should work outside the container on any computer, now try replacing the URL with one that targets your proxy. Double check with transport set totcpinstead ofudp. Then try inside the container with/usr/lib/jellyfin-ffmpeg/ffprobeYou may need to open your firewall to incoming feeds from the freebox for anything to work:
iptables -A INPUT -p udp -s 212.27.38.253 -j ACCEPT(this is the ip ofmafreebox.freebox.fr).@Mavyre commented on GitHub (Nov 30, 2022):
Great discovery. However, as I'm bridged behind a custom router, I need to enable port forwarding for udp to the rtsp simple server. As long as it can't request Free to use some ports as VLC allows to do (RTSP Client port), I can't use it :(
@MayeulC commented on GitHub (Nov 30, 2022):
@Mavyre I think you should be able to run
rtsp-simple-serveron your custom router?You can also forward every UDP stream from 212.27.38.253 (mafreebox.freebox.fr) to your server, I don't think it will be an issue for other features.
@Mavyre commented on GitHub (Dec 13, 2022):
That was a good idea. I reconfigured my docker network in a macvlan, which allows me to directly "plug" the docker onto the network. I then forwarded ports 5000-65535 on the router from 212.27.38.253 to my docker IP. IPTV working, tadah!
Have you had any issue with the XMLTV from free, though? Can't get it to work either
@MayeulC commented on GitHub (Dec 14, 2022):
That's indeed better than what I was doing; no need for proxying.
The XMLTV used to work (albeit with manual mapping of channels). But it seems like it doesn't these days, possibly due to a jellyfin change? Here are the logs:
I'm probably going to open a dedicated issue.
@Mavyre commented on GitHub (Dec 14, 2022):
@MayeulC Sounds like it's trying to directly read an XML file. I've digged into XMLTV thing, and you can add directly http://xmltvfree.free.fr/xmltv.xml. However, it seems like that xmltv isn't update since... 2006? Last update timestamp (http://xmltvfree.free.fr/timestamp.txt) indicates Sun Mar 5 13:09:56 CET 2006 😞
However, I'm currently trying another solution someone developed for TVHeadEnd here: https://gitlab.com/snouf/tvheadend_tools/. Their tv_grab_fr_mafreebox_hts python script grabs everything from mafreebox epg programme, and converts it to xmltv. It's pretty slow running, but it can grab the programme from free itself... I'll keep you posted about how well or not it works for Jellyfin
@MayeulC commented on GitHub (Dec 14, 2022):
@Mavyre I hadn't realized it hadn't been updated in such a long time. Ideally, someone would run that script and upload it to a website periodically (possibly github pages). Let me know how this goes, and maybe we can work something out!
Edit: looking at the code, it relies heavily on TVHeadEnd, I think it could be simplified a lot to grab both the m3u and guide from the Freebox, then export a proper xmltv. Don't hesitate to ping me on Matrix.
@Mavyre commented on GitHub (Dec 14, 2022):
Maybe we could do that, but the fact there is almost 1100 channels which at least half of it, isn't in the Free TV m3u, makes a lot of work to initially filter the useful channels from the initial configuration. That could be doable with a oneshot script, though.
I'll first keep it running at home regularly for my usage with a restricted list of channels to grab!
@Mavyre commented on GitHub (Dec 15, 2022):
Update: so far, using that script to generate an xmltv and importing it does work in Jellyfin!
@Murazaki commented on GitHub (Dec 17, 2022):
@Mavyre Hey tried running this code but unsuccessfully, did you made any modifications to make it work properly ? (I have to say I have too much on my plate to dig more though)
@Mavyre commented on GitHub (Dec 19, 2022):
@Murazaki No modification needed.
First you need to install slugify:
pip3 install python-slugifyThen, under a Free internet connection, configure the channels you want and run it. Something like:
@Mavyre commented on GitHub (Dec 20, 2022):
@MayeulC So I've made a great progress about auto XMLTV generation from the Freebox m3u.
I generated a config file using
tv_grab_fr_mafreebox_hts.py --config-file orig.conf --configure, inputing 1 to include all channels by default. I then created a barbaric but working command that filters the channels to include in the XMLTV generation using the freebox m3u:That creates a
gen.conffile which only contains channels available from the Freebox itself. I finally run a cron command to generate the xmltv file for the next 14 days:I'll keep an eye to check if everything is working properly!
Edit: Everything does work!
@LelouBil commented on GitHub (Aug 2, 2023):
Hey, so I would like a bit of help regarding making jellyfin able to read the rtsp streams of the Freebox.
Currently I have Jellyfin running in a docker container with only the web port being proxied trought a reverse proxy, nothing else is opened.
What steps do I need to take to make it work (everything is already configured inside Jellyfin, I'm talking about making the UDP rtmp feed readable which I understood was possible without proxying by reading this thread).
@MayeulC commented on GitHub (Aug 9, 2023):
Something like that (untested, adapted from there, replace
172.1.2.3with your jellyfin container's IP address:Edit: though with https://github.com/bluenviron/mediamtx/pull/2799 the proxy part is much simpler!
@Fradouille commented on GitHub (Aug 31, 2025):
For my part, I was able to resolve this issue by setting the network mode to Host and not Bridge.
network_mode: "host"