使用ffmpeg通过HTTP隧道使用RTSP流式传输H.264的正确语法是什么?

时间:2017-12-01 14:49:26

标签: ffmpeg video-streaming h.264

我尝试通过http隧道以10 fps的速度通过rtsp发送H.264视频流,因此可以通过防火墙远程访问视频,理想情况下,只使用一个端口进行所有通信。我不能只使用rtsp,因为它需要一个请求流的开放端口,这很好,但它会打开两个服务器端口,它为视频流随机选择它们并且它们无法通过路由器走向世界 - 一个普遍的问题。

我尝试过VLC,但它不会让我控制它打开的服务器端口。 ffmpeg似乎有更多选择端口的功能,但我无法正确使用语法。这是我使用的命令,其中10 fps的H.264流来自管道/ home / vout1,我尝试限制服务器端口以防万一它不会让我只需使用一个端口即可:

root@Z-1:~# ffmpeg -r 10 -i /home/vout1 -f rtsp -rtsp_transport http -min_port 25000 -max_port 25009 rtsp://localhost:8554

这是结果,我将错误信息以粗体显示:

ffmpeg版本3.2.4-static http://johnvansickle.com/ffmpeg/版权所有(c)2000-2017 FFmpeg开发人员使用gcc 5.4.1(Debian 5.4.1-5)20170205配置:--enable-gpl --enable-version3 --enable-static --disable-debug --disable -ffplay --disable-indev = sndio --disable-outdev = sndio --cc = gcc-5 --enable-fontconfig --enable- frei0r --enable-gnutls --enable-grey --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable -libx264 --enable-libxvid   libavutil 55. 34.101 / 55. 34.101   libavcodec 57. 64.101 / 57. 64.101   libavformat 57. 56.101 / 57. 56.101   libavdevice 57. 1.100 / 57. 1.100   libavfilter 6. 65.100 / 6. 65.100   libswscale 4. 2.100 / 4. 2.100   libswresample 2. 3.100 / 2. 3.100   libpostproc 54. 1.100 / 54. 1.100 输入#0,h264,来自' / home / vout1':   持续时间:N / A,比特率:N / A.     流#0:0:视频:h264(高),yuv420p(渐进),960x540,25 fps,25 tbr,1200k tbn,50 tbc [rtsp @ 0x3d68b30]不支持的低传输方法,输出仅支持UDP和TCP。 无法为输出文件#0写入标头(编解码器参数不正确?):无效的argumentStream映射:   流#0:0 - > #0:0(h264(原生) - > mpeg4(原生))     最后一条消息重复了1次

ffmpeg看到了流,因为它获得了正确的分辨率。但它认为我的流是默认的25 fps,但我指定-r 10表示帧速率只有10 fps。其次,没有创建流。

什么是正确的命令行语法?如何让ffmpeg为所有内容使用一个端口,即使我只能有一个流?

提前感谢您的帮助。

0 个答案:

没有答案