我尝试通过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为所有内容使用一个端口,即使我只能有一个流?
提前感谢您的帮助。