视频流故障转移rtp协议

时间:2014-03-04 11:47:54

标签: ffmpeg video-streaming vlc rtp

Unix服务器(ffmpeg)和Windows客户端(vlc)之间的视频流完成没有错误。

服务器端:

ffmpeg -f v4l2 -r 25 -i /dev/video0 http://192.168.1.114:27018/feed1.ffm

客户端:

vlc播放器:媒体 - >打开网络流:http://192.168.1.114:27018/test.swf

然而,视频流约有10秒。延迟。出于这个原因,我尝试使用rtp而不是http,但没有结果。具体来说,在服务器端我运行:

ffmpeg -f v4l2 -r 25 -i /dev/video0 rtp://192.168.1.114:27018/feed1.ffm

在流开始之后,在客户端我输入了rtp://@:27018但它没有响应。

我缺少什么?还有其他方法可以避免延误吗?

1 个答案:

答案 0 :(得分:2)

RTP流问题的简短(不完整)解决方案:

  • 使用命令行设置FFMPEG:

    ffmpeg -f v4l2 -r 25 -i /dev/video0 rtp://<client_ip>:<client_port>
    

    其中<client_ip><client_port>需要分别替换为客户端的IP地址和端口号。

RTP流和解决方案的问题描述:

  • 通常,在设置 HTTP服务器(在本例中为HTTP多媒体服务器)时,在服务器端,本地端口和服务器需要侦听的本地IP地址是指定。因此,当您将FFMPEG设置为在http://192.168.1.114:27018/上流式传输时,这可能意味着FFMPEG(服务器将在其一个具有IP 192.168的接口上侦听。 1.114并在端口27018上。然后客户端需要连接到http://192.168.1.114:27018以获取流。
  • 但是,在设置 RTP FFMPEG服务器时,会在服务器端指定客户端地址和端口,这意味着(不准确)服务器将数据包发送到需要地址和客户端需要在他们的端口上> 他们想要可用的流。因此,需要使用URL rtp://<client_ip>:<client_port>设置FFMPEG服务器,而不是URL rtp://<server_ip>:<server_port>,以便<client_ip>能够访问其本地端口<client_port>上的流。

有关FFMPEG的RTP URL格式的更多信息以及RTP流中一些有趣概念的起点(如多播),请访问here