【问题标题】:VLC streaming requires extreme bandwidthVLC 流媒体需要极高的带宽
【发布时间】:2017-12-31 12:57:54
【问题描述】:

我正在使用 RTP 将 1080p 视频从一台计算机流式传输到另一台计算机。我使用以下命令行:

.\vlc.exe -Idummy -vvv "test.mp4" --sout "#rtp{mux=ts,dst=10.0.0.5,port=1234}" "vlc://quit"

我的源文件(H.264 High profile)的视频轨道比特率低于 6 Mbit/s,音频比特率低于 100 kbit/s (AAC HE)。尽管如此,VLC 使用近 1 Gbit/s 进行流传输:

即使指定了比特率,额外的转码也不会真正改变任何东西:

.\vlc.exe -Idummy -vvv "test.mp4" --sout "transcode{venc=x264{preset=veryfast},vb=3000}:rtp{mux=ts,dst=10.0.0.5,port=1234}" "vlc://quit"

由于某些视频可以正常工作(即,它们以几 Mbit/s 的速度流式传输,几乎没有任何 CPU 负载)而其他视频则不能(如上文所述),我想问问有哪些可能的故障排除步骤。 -vvv 在初始缓冲后不会给出任何错误、警告或调试信息。

发送和接收计算机都运行 Windows 10 64 位,并通过千兆以太网交换机连接。连接似乎很好,因为它与任何其他应用程序一样。我还在本地测试了 VLC 流设置,接收器位于同一主机上的 Docker 容器内,但这使问题变得更糟,即消耗的带宽甚至更高,并且(字面上)丢弃了数百万个数据包。

有没有人知道如何解决这个问题?我使用的是最新的 VLC 2.2.6。

【问题讨论】:

    标签: video-streaming h.264 vlc bandwidth aac


    【解决方案1】:

    【讨论】:

    • 虽然 Wireshark 在 10 秒内在接收计算机上捕获了超过一百万个数据包,但在 "Telephony\RTP\RTP Streams" 中找不到 RTP 流。捕获后我看不到单个 RTP 数据包,只有 UDP 数据包,其有效负载始终相似且大部分为 ff 字节。这是一个 VLC 错误还是我在这里过快下结论? [编辑:统计输出表明那里有 5 个 RTCP 数据包,以防这有什么不同]
    • 通常所说的RTP包括RTP、RTSP和RTCP。 RTSP (TCP) 设置有效载荷 RTP (UDP) 和 RTCP 控制它。
    • 我知道,但是没有任何 RTP 数据包。
    • 更新:它适用于每晚最新的 VLC 3。那时候好像是个bug。如果我早点尝试过就好了:)。感谢您指点我分析网络流量 - 看到它关闭让我怀疑 VLC 是否真的在发送有意义的数据。
    • 如果您没有看到任何 RTP - 可能是某些东西阻止了 UDP 导致重新传输。
    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2020-11-06
    相关资源
    最近更新 更多