升级你的 ffmpeg

升级你的 ffmpeg

前言:

以下所有内容均与 --audio-device=alsa 或 --audio-device=pulse 无关。mplayer 或 mpv 也会发生类似情况。Arch 和 Debian 10.x 稳定版均如此。

重现步骤(Arch):

  1. 打开 Konsole/终端 ( ctrl+ alt+ T),

  2. 输入以下音乐音频流:

    $ mpv https://secure.live-streams.nl/flac.flac
    

    您将收到一堆 ffmpeg 错误,但无论如何流都会播放:

    这些是 ffmpeg 使用 FLAC 流时出现的错误,会导致 CPU 使用率(逐渐)飙升至 100%:

    (+) Audio --aid=1 (flac 2ch 44100Hz) [ffmpeg/audio] 
    flac: Multiple frames in a packet. 
    AO: [pulse] 44100Hz stereo 2ch s32 [ffmpeg/audio] 
    flac: invalid sync code [ffmpeg/audio] 
    flac: invalid frame header [ffmpeg/audio] 
    flac: decode_frame() failed Error decoding audio. Invalid audio PTS: 0.092880 -> 1552320.005805
    
  3. 立即打开新的 Konsole 选项卡

  4. 类型$ htop

  5. F3/ Fn+F3并输入mpv

  6. 观察 CPU 使用率如何稳定但逐渐地达到 100%。

奇怪的是,这种现象在 opus 或 vorbis 或 mpeg layer 3 上根本不会发生。

奇怪的是,VLC ($ cvlc https://secure.live-streams.nl/flac.flac)它确实会启动自身的多个实例 - 就像 mpv 一样 - 但很快就会杀死它们,并且有一个“CPU 使用率低”的实例。

这是否意味着 VLC 有一些特殊的官方 ffmpeg“调整版本”,而其余版本无法消除任何 ffmpeg 的疯狂行为?

请修复它。

PS. 在播放相同音频时,mplayer 占用的 CPU 比 mpv 少 2 倍以上。请不要责怪 mpv 或 mplayer,因为播放此音乐流时会出现大量错误(https://secure.live-streams.nl/flac.flac)。

答案1

升级你的 ffmpeg

惰性测试表明,使用 FFmpeg 4.3.1 可重现 CPU 负载,但使用来自 git master 分支的版本(使用--enable-gnutlsHTTPS 支持编译)则无法重现。我没有执行git bisect或搜索错误追踪器

测试命令(您将听不到任何声音):

ffmpeg -i https://secure.live-streams.nl/flac.flac -f null -

升级ffmpeg并重新链接/重新编译依赖的播放器或等待 FFmpeg 4.4。

相关内容