V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abcbuzhiming
V2EX  ›  问与答

有没有人注意到串流类远程桌面的画面声音不同步问题?

  •  
  •   abcbuzhiming · 343 天前 · 765 次点击
    这是一个创建于 343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近折腾了串流,主要是想云游戏,也试用了不少云游戏平台,这类串流软件都是基于差不多的原理,在被控端实时采集视频然后编码,传输到主控端解码。然后我发现了一个现象:
    随着被控端上传的带宽(码率)和帧数的提升,控制端的电脑会因为无法及时的解码,而画面开始延迟(画面声音不同步,画面比声音慢的多,可以达到几秒甚至十几秒),主控端的输入要半天才能反应。但是很有趣的是,它不卡顿,一点都不卡,就是影音不同步。


    这个现象我仔细研究过,目前的结论是,是由不同的硬件配置导致的,一开始我还以为是网络,后来一个偶然的契机,我在同一网络条件下使用了不同硬件配置的电脑来做主控端,控制端是相同的电脑,结果发现它们在同一网络下,性能表现不一样。
    简单的说就是,硬件性能越高的的电脑,就能承受更高的带宽(码率)和展示更高的帧数。配置越低,你就不能开高帧数,否则很快就画面声音不同步了。


    我对这个问题刚开始很不理解,因为有另外一个现象,出现影音不同步的时候,不管主控端这边的解码,是通过 CPU 的软解,还是通过 GPU 的硬解,CPU 占用率或 GPU 硬编码器的占用率,都没有满载,甚至只有最多 20%不到。这让我产生了一个怀疑,就是视频解码这个工作,是否存在一个内定的上限,它并不是如同其它计算工作一样,会吃掉所有计算资源来完成计算,而是达到一定上限后就不再提升,就像游戏中的限制最大帧率一样。比如它就限死了,解码每秒只能 60 帧,可被控端那边源源不断的输送着每秒 144 帧的数据过来,那可不就画面越来越慢于声音了。

    有这个怀疑是因为视频这个东西长期都是用在电视和电影领域的,而这些领域长期以来都有自身的行业标准,比如 30 帧,60 帧之类的。那么仅仅是把这些软件化的东西,会不会也带有这个限制?

    我自己去搜了一下相关的东西,可能我不是视频领域的专业人员,找 ffmpeg 没有找到可能相关的资料。然后我就又转头去找各家显卡的硬解码资料,但是各家显卡,都只写了它们对各种编码,在某个分辨率下的支持,但是并没有资料证明它们对解码这些视频数据的时候存在,或不存在限制最大帧数的东西?

    我不知道这个推论对不对,所以求教一下更专业的人。谢谢
    1 条回复    2024-01-18 23:56:09 +08:00
    journalist
        1
    journalist  
       343 天前
    https://jchuynh.medium.com/how-fast-can-you-decode-videos-into-frames-with-ffmpeg-part-1-d12a267f9b13 很明显没有,起码不可能限制到 60 帧。你用的软件如果有缓冲区大小的设置可以尝试调节一下。性能不够只能丢包和增加延迟二选一,另外画面和声音不同步可以选择给音频额外增加延迟。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5831 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:25 · PVG 10:25 · LAX 18:25 · JFK 21:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.