tellytv / telly

An IPTV proxy
MIT License
750 stars 105 forks source link

FFMPEG No such file or directory but ffmeg is found #277

Open risiko79 opened 3 years ago

risiko79 commented 3 years ago

telly release with the issue: telly is preparing to go live (version=1.1.0.8, branch=dev, revision=96424a4719f33de9c1b66d8d2186e0452e45a234)

Last working telly release (if known):

Operating environment (Docker/Windows/Linux/QNAP, etc.): Debian 10 (LXC)

Description of problem: ffmpeg is found and started bu last message in log is "No such file or directory" (see log)

Contents of telly.config.toml [if you're using a version above 1.1]: ffmpeg=true (see log)

Command line used to run telly [if applicable]: none

telly or docker log: time="2020-07-31T10:01:28+02:00" level=info msg="telly is preparing to go live (version=1.1.0.8, branch=dev, revision=96424a4719f33de9c1b66d8d2186e0452e45a234)" time="2020-07-31T10:01:28+02:00" level=debug msg="Build context (go=go1.12.17, user=root@7abd9a6a6502, date=20200704-05:23:36)" time="2020-07-31T10:01:28+02:00" level=debug msg="Loaded configuration {\n \"config\": {\n \"file\": \"\"\n },\n \"discovery\": {\n \"device-auth\": \"telly123\",\n \"device-firmware-name\": \"hdhomeruntc_atsc\",\n \"device-firmware-version\": \"20150826\",\n \"device-friendly-name\": \"telly\",\n \"device-id\": \"12345678\",\n \"device-manufacturer\": \"Silicondust\",\n \"device-model-number\": \"HDTC-2US\",\n \"device-uuid\": \"12345678-AE2A-4E54-BBC9-33AF7D5D6A92\",\n \"ssdp\": true\n },\n \"filter\": {\n \"regex\": \".*\",\n \"regex-inclusive\": false\n },\n \"iptv\": {\n \"ffmpeg\": true,\n \"playlist\": \"\",\n \"starting-channel\": 10000,\n \"streams\": 10,\n \"xmltv-channels\": true\n },\n \"log\": {\n \"level\": \"debug\",\n \"requests\": true\n },\n \"source\": [\n {\n \"M3U\": \"/home/telly/playlistTV_rewrite.m3u\",\n \"Name\": \"\",\n \"Provider\": \"Custom\"\n }\n ],\n \"version\": false,\n \"web\": {\n \"base-address\": \"192.168.178.226:6077\",\n \"listen-address\": \"0.0.0.0:6077\"\n }\n}" time="2020-07-31T10:01:28+02:00" level=info msg="Loading M3U from /home/telly/playlistTV_rewrite.m3u" time="2020-07-31T10:01:28+02:00" level=debug msg="These channels (75) passed the filter and successfully parsed: .... time="2020-07-31T10:01:28+02:00" level=debug msg="These channels (0) did NOT pass the filter: " time="2020-07-31T10:01:28+02:00" level=info msg="Loaded 75 channels into the lineup from " time="2020-07-31T10:01:28+02:00" level=debug msg="creating device xml" time="2020-07-31T10:01:28+02:00" level=debug msg="creating webserver routes" [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.

[GIN-debug] GET /metrics --> github.com/tellytv/telly/internal/go-gin-prometheus.prometheusHandler.func1 (4 handlers) [GIN-debug] GET / --> main.deviceXML.func1 (4 handlers) [GIN-debug] GET /discover.json --> main.discovery.func1 (4 handlers) [GIN-debug] GET /lineup_status.json --> main.serve.func1 (4 handlers) [GIN-debug] POST /lineup.post --> main.serve.func2 (4 handlers) [GIN-debug] GET /device.xml --> main.deviceXML.func1 (4 handlers) [GIN-debug] GET /lineup.json --> main.serveLineup.func1 (4 handlers) [GIN-debug] GET /lineup.xml --> main.serveLineup.func1 (4 handlers) [GIN-debug] GET /auto/:channelID --> main.stream.func1 (4 handlers) [GIN-debug] GET /epg.xml --> main.xmlTV.func2 (4 handlers) [GIN-debug] GET /debug.json --> main.serve.func3 (4 handlers) time="2020-07-31T10:01:28+02:00" level=debug msg="Advertising telly as telly (12345678-AE2A-4E54-BBC9-33AF7D5D6A92)" [GIN-debug] GET /manage/filepath --> github.com/gin-gonic/gin.(RouterGroup).createStaticHandler.func1 (4 handlers) [GIN-debug] HEAD /manage/filepath --> github.com/gin-gonic/gin.(RouterGroup).createStaticHandler.func1 (4 handlers) time="2020-07-31T10:01:28+02:00" level=info msg="telly is live and on the air!" time="2020-07-31T10:01:28+02:00" level=info msg="Broadcasting from http://192.168.178.226:6077/" time="2020-07-31T10:01:28+02:00" level=info msg="EPG URL: http://192.168.178.226:6077/epg.xml" time="2020-07-31T10:01:28+02:00" level=info msg="Lineup JSON: http://192.168.178.226:6077/lineup.json" [GIN-debug] Listening and serving HTTP on 0.0.0.0:6077 time="2020-07-31T10:01:36+02:00" level=info msg="Serving channel number 10006" time="2020-07-31T10:01:36+02:00" level=info msg="Remuxing stream with ffmpeg" time="2020-07-31T10:01:36+02:00" level=info msg="ffmpeg version 4.1.6-1~deb10u1 Copyright (c) 2000-2020 the FFmpeg developers" time="2020-07-31T10:01:36+02:00" level=info msg=" built with gcc 8 (Debian 8.3.0-6)" time="2020-07-31T10:01:36+02:00" level=info msg=" configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared" time="2020-07-31T10:01:36+02:00" level=info msg=" libavutil 56. 22.100 / 56. 22.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libavcodec 58. 35.100 / 58. 35.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libavformat 58. 20.100 / 58. 20.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libavdevice 58. 5.100 / 58. 5.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libavfilter 7. 40.101 / 7. 40.101" time="2020-07-31T10:01:36+02:00" level=info msg=" libavresample 4. 0. 0 / 4. 0. 0" time="2020-07-31T10:01:36+02:00" level=info msg=" libswscale 5. 3.100 / 5. 3.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libswresample 3. 3.100 / 3. 3.100" time="2020-07-31T10:01:36+02:00" level=info msg=" libpostproc 55. 3.100 / 55. 3.100" time="2020-07-31T10:01:36+02:00" level=info msg=": No such file or directory" time="2020-07-31T10:01:36+02:00" level=info msg="Stopped streaming 10006" time="2020-07-31T10:01:36+02:00" level=info msg="Stopped streaming 10006" http: superfluous response.WriteHeader call from github.com/gin-gonic/gin.(*responseWriter).WriteHeaderNow (response_writer.go:70)

Additional information: ffmpeg is working fine from command line

mulbc commented 2 years ago

I have the same issue and just found out that ffmpeg is executed as ffmpeg -i -codec copy -f mpegts pipe:1 (so the feed URI is empty in my data set)

I'm currently on 1.1.0 beta 8 and try to proxy my FritzBox with rtsp links

mulbc commented 2 years ago

The issue for me is this line: https://github.com/tellytv/telly/blob/f43e486ae42864ce7c3c061abcfa78f76a56ea42/internal/m3uplus/main.go#L99

Since it only selects http or udp URIs, my m3u with rtsp links is not properly parsed and thus has empty URI fields.

I changed the line to

    case strings.HasPrefix(line, "http") || strings.HasPrefix(line, "udp") || strings.HasPrefix(line, "rtsp"):

and it immediately started to work for me