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

使用ffmpeg通过HTTP隧道使用RTSP传输H.264的正确语法是什么?,ffmpeg,video-streaming,h.264,Ffmpeg,Video Streaming,H.264,我正在尝试通过http隧道通过rtsp以10 fps的速度发送H.264视频流,这样视频就可以通过防火墙远程访问,理想情况下,所有通信只使用一个端口。我不能只使用rtsp,因为它需要一个打开的端口来请求流,这很好,但是它打开了两个服务器端口,它随机选择用于视频流,它们不能通过路由器映射到世界上——这是一个常见的问题 我尝试了VLC,但它不允许我控制它打开的服务器端口。ffmpeg似乎有更多的选择端口的功能,但我无法正确使用语法。下面是我正在使用的命令,其中我的H.264流以10 fps的速度来自

我正在尝试通过http隧道通过rtsp以10 fps的速度发送H.264视频流,这样视频就可以通过防火墙远程访问,理想情况下,所有通信只使用一个端口。我不能只使用rtsp,因为它需要一个打开的端口来请求流,这很好,但是它打开了两个服务器端口,它随机选择用于视频流,它们不能通过路由器映射到世界上——这是一个常见的问题

我尝试了VLC,但它不允许我控制它打开的服务器端口。ffmpeg似乎有更多的选择端口的功能,但我无法正确使用语法。下面是我正在使用的命令,其中我的H.264流以10 fps的速度来自一个管道/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-静态版权(c)2000-2017 ffmpeg开发人员使用gcc 5.4.1(Debian 5.4.1-5)20170205配置构建:--启用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 libfribidi--enable-libmp3lame--enable libopencore amrnb--enable libopencore amrwb--enable libopus--enable librtmp--enable libsoxr--enable libspeex--enable liborea--enable libvidstab--enable libvo amrwbenc--enable libvorbis--enable libvpx--enable libwebp--enable-libx264--enable libxvid libavutil 55。34.101 / 55. 34.101 libavcodec57。64.101 / 57. 64.101 libav57格式。56.101 / 57. 56.101 libav57设备。1.100 / 57. 1.100 libav6。65.100 / 6. 65.100 libsw4。2.100 / 4. 2.100 libswresample2。3.100 / 2. 3.100 Libroc 54。1.100 / 54. 1.100 输入#0,h264,来自“/home/vout1”: 持续时间:不适用,比特率:不适用 流#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看到流是因为它获得了正确的分辨率。但是它认为我的流是默认的25fps,但是我指定了-r10来表示帧速率只有10fps。其次,没有创建流

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

提前感谢您的帮助