【问题标题】:Video streaming fails over rtp protocol视频流通过 rtp 协议失败
【发布时间】:2014-04-05 22:29:37
【问题描述】:

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 但它没有响应。

我错过了什么?有没有其他方法可以避免延误?

【问题讨论】:

    标签: ffmpeg video-streaming vlc rtp


    【解决方案1】:

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

    • 使用命令行设置 FFMPEG:

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

      其中&lt;client_ip&gt;&lt;client_port&gt;需要分别替换为客户端的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 服务器 时,客户端地址和端口是在服务器端指定的,这意味着(不准确)服务器将数据包发送到所需的地址和客户端需要在其端口上侦听如果他们想要可用的流。因此,FFMPEG 服务器需要使用 URL rtp://&lt;client_ip&gt;:&lt;client_port&gt; 而不是 URL rtp://&lt;server_ip&gt;:&lt;server_port&gt; 进行设置,以便 &lt;client_ip&gt; 能够访问其本地端口 &lt;client_port&gt; 上的流。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-28
      • 2014-02-06
      • 1970-01-01
      • 2012-04-10
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      相关资源
      最近更新 更多