xteve-project / xTeVe

M3U Proxy for Plex DVR and Emby Live TV
MIT License
1.84k stars 238 forks source link

"user_agent not found" when using ffmpeg #197

Open vquie opened 3 years ago

vquie commented 3 years ago

Please first read the documentation. Problems affecting the client, e.g. Plex or Emby should be reported there in the forum.

Describe the bug When running the ffmpeg buffer, the stream fails with error "Option user_agent not found." I tried only using ffmpeg, don't know if the others still work.

ffmpeg started on 2020-12-20 at 19:23:22
Report written to "ffmpeg-20201220-192322.log"
Command line:
/usr/bin/ffmpeg -user_agent xTeVe -report -hide_banner -loglevel verbose -i "udp://@232.0.20.2:10000?sources=87.141.215.251" -c copy pipe:1
Splitting the commandline.
Reading option '-user_agent' ... matched as AVOption 'user_agent' with argument 'xTeVe'.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'verbose'.
Reading option '-i' ... matched as input url with argument 'udp://@232.0.20.2:10000?sources=87.141.215.251'.
Reading option '-c' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option 'pipe:1' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option hide_banner (do not show program banner) with argument 1.
Applying option loglevel (set logging level) with argument verbose.
Successfully parsed a group of options.
Parsing a group of options: input url udp://@232.0.20.2:10000?sources=87.141.215.251.
Successfully parsed a group of options.
Opening an input file: udp://@232.0.20.2:10000?sources=87.141.215.251.
[NULL @ 0x7f538bd4e780] Opening 'udp://@232.0.20.2:10000?sources=87.141.215.251' for reading
[udp @ 0x7f538ba10180] No default whitelist set
[udp @ 0x7f538ba10180] end receive buffer size reported is 131072
[mpegts @ 0x7f538bd4e780] Format mpegts probed with size=2048 and score=47
[mpegts @ 0x7f538bd4e780] stream=0 stream_type=1b pid=100 prog_reg_desc=
[mpegts @ 0x7f538bd4e780] stream=1 stream_type=6 pid=101 prog_reg_desc=
[mpegts @ 0x7f538bd4e780] stream=2 stream_type=6 pid=103 prog_reg_desc=
[mpegts @ 0x7f538bd4e780] stream=3 stream_type=5 pid=104 prog_reg_desc=
[mpegts @ 0x7f538bd4e780] stream=4 stream_type=6 pid=106 prog_reg_desc=
Option user_agent not found.

Server (please complete the following information):

To Reproduce Steps to reproduce the behavior: Run using ffmpeg buffer with these options -report -hide_banner -loglevel verbose -i [URL] -c copy pipe:1

Expected behavior I'd expect xteve to run the stream. Running the exact same command without the user_agent works in cli. Too bad the user_agent is hard coded in src/buffer.go.

vquie commented 3 years ago

Reviewing the code I found out that leaving the user agent empty leaves the option. The issue is fixed for me.

mar-mei commented 3 years ago

What version of FFmpeg are you using? The user_agent parameter has been around for a few years

vquie commented 3 years ago
# ffmpeg -version
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.2.0 (Alpine 9.2.0)
configuration: --prefix=/usr --enable-avresample --enable-avfilter --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --disable-stripping --disable-static --disable-librtmp --enable-vaapi --enable-vdpau --enable-libopus --disable-debug
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100
mar-mei commented 3 years ago
# ffmpeg -version
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
configuration: --prefix=/usr/local --mandir=/usr/local/man --datadir=/usr/local/share/ffmpeg --pkgconfigdir=/usr/local/libdata/pkgconfig --enable-shared --enable-pic --enable-gpl --enable-avresample --cc=cc --cxx=c++ --disable-alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --enable-libaom --disable-libaribb24 --enable-asm --enable-libass --disable-libbs2b --disable-libcaca --disable-libcdio --disable-libcelt --disable-libcodec2 --enable-libdav1d --disable-libdavs2 --disable-libdc1394 --disable-debug --enable-htmlpages --enable-libdrm --disable-libfdk-aac --disable-libflite --enable-fontconfig --enable-libfreetype --enable-frei0r --disable-libfribidi --disable-gcrypt --disable-libglslang --disable-libgme --enable-gmp --enable-gnutls --enable-version3 --disable-libgsm --enable-iconv --disable-libilbc --disable-libjack --disable-libklvanc --disable-libkvazaar --disable-ladspa --enable-libmp3lame --disable-liblensfun --disable-libbluray --disable-librsvg --disable-librtmp --enable-libxml2 --disable-lto --disable-lv2 --disable-mbedtls --disable-libmfx --disable-libmodplug --disable-libmysofa --disable-nonfree --disable-openal --disable-opencl --enable-libopencv --disable-opengl --disable-libopenh264 --disable-libopenjpeg --disable-libopenmpt --disable-openssl --enable-optimizations --enable-libopus --disable-pocketsphinx --disable-libpulse --disable-librabbitmq --disable-librav1e --enable-runtime-cpudetect --disable-librubberband --disable-sdl2 --disable-libsmbclient --disable-libsnappy --disable-sndio --disable-libsoxr --disable-libspeex --disable-libsrt --disable-libssh --disable-libtensorflow --disable-libtesseract --enable-libtheora --disable-libtwolame --enable-libv4l2 --enable-vaapi --disable-vapoursynth --enable-vdpau --disable-libvidstab --disable-libvmaf --enable-libvorbis --disable-libvo-amrwbenc --enable-libvpx --disable-vulkan --disable-libwavpack --disable-libwebp --enable-libx264 --enable-libx265 --disable-libxavs2 --enable-libxcb --enable-libxvid --disable-outdev=xv --disable-libzimg --disable-libzmq --disable-libzvbi
libavutil      56. 51.100 / 56. 51.100
libavcodec     58. 91.100 / 58. 91.100
libavformat    58. 45.100 / 58. 45.100
libavdevice    58. 10.100 / 58. 10.100
libavfilter     7. 85.100 /  7. 85.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  7.100 /  5.  7.100
libswresample   3.  7.100 /  3.  7.100
libpostproc    55.  7.100 / 55.  7.100

I think from 4.3.0 the option was added.

vquie commented 3 years ago

Are you running the docker container? I just removed the images and and started from scratch. Again..... 4.2.1.

mar-mei commented 3 years ago

I don't use docker. Who created the Docker container?

vquie commented 3 years ago

This ist the one I use: https://github.com/alturismo/xteve

The latest version I am able to get is 4.2.4.

mar-mei commented 3 years ago

Does it work with 4.2.4? The user agent is only important if the default user agent is blocked.

vquie commented 3 years ago

Nope, does not work in 4.2.4.

ffmpeg started on 2020-12-23 at 10:04:53
Report written to "ffmpeg-20201223-100453.log"
Command line:
/usr/bin/ffmpeg -user_agent xTeve -report -hide_banner -loglevel error -i "udp://@232.0.20.234:10000?sources=87.141.215.251" -c copy -f mpegts pipe:1
Splitting the commandline.
Reading option '-user_agent' ... matched as AVOption 'user_agent' with argument 'xTeve'.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'error'.
Reading option '-i' ... matched as input url with argument 'udp://@232.0.20.234:10000?sources=87.141.215.251'.
Reading option '-c' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mpegts'.
Reading option 'pipe:1' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option hide_banner (do not show program banner) with argument 1.
Applying option loglevel (set logging level) with argument error.
Successfully parsed a group of options.
Parsing a group of options: input url udp://@232.0.20.234:10000?sources=87.141.215.251.
Successfully parsed a group of options.
Opening an input file: udp://@232.0.20.234:10000?sources=87.141.215.251.
[NULL @ 0x7fa0bb447780] Opening 'udp://@232.0.20.234:10000?sources=87.141.215.251' for reading
[udp @ 0x7fa0bb109180] No default whitelist set
[udp @ 0x7fa0bb109180] end receive buffer size reported is 131072
[mpegts @ 0x7fa0bb447780] Format mpegts probed with size=2048 and score=47
[mpegts @ 0x7fa0bb447780] Unable to seek back to the start
[mpegts @ 0x7fa0bb447780] stream=0 stream_type=1b pid=100 prog_reg_desc=
[mpegts @ 0x7fa0bb447780] stream=1 stream_type=6 pid=101 prog_reg_desc=
[mpegts @ 0x7fa0bb447780] stream=2 stream_type=6 pid=103 prog_reg_desc=
[mpegts @ 0x7fa0bb447780] stream=3 stream_type=5 pid=104 prog_reg_desc=
[mpegts @ 0x7fa0bb447780] stream=4 stream_type=6 pid=106 prog_reg_desc=
[mpegts @ 0x7fa0bb447780] Unable to seek back to the start
Option user_agent not found.
yash-fn commented 2 years ago

I'm running 4.4.1 and I am also having this problem

nickyfoster commented 1 year ago

Same problem with static macOS binaries. Version: 5.1.2-tessus

➜  ~ ffmpeg -i "https://example.com" -user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:108.0) Gecko/20100101 Firefox/108.0" -c:v copy -bsf:a aac_adtstoasc ./out.mp4
ffmpeg version 5.1.2-tessus Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100

Unrecognized option 'user-agent'.
Error splitting the argument list: Option not found
MCTyler commented 1 year ago

**ffmpeg is a independent app. I beleive they have a website for reporting errors, we have no control over it.