ffmpeg 导出多声道音频立体声无法播放

ffmpeg 导出多声道音频立体声无法播放

我正在尝试使用 ffmpeg 从具有以下音频配置的多通道 Quicktime 文件中导出所有音频通道,但不确定以下命令是否正确。除了 L+R_Total.wav 之外,所有文件在 Quicktime 播放器中看起来和播放都正确,L+R_Total.wav 拒绝在 Quicktime 播放器或 Final Cut 中播放,但在 VLC 中播放正常,所以我确定我的 ffmpeg 命令对于第 7 轨上的立体声不正确。立体声文件大小约为 1.8GB。这是我在 Quicktime 文件中的轨道布局:

Track 1 - mono
Track 2 - mono
Track 3 - mono
Track 4 - mono
Track 5 - mono
Track 6 - mono
Track 7 - stereo

我在用:

/Users/me/Desktop/python/ffmpeg/ffmpeg -i /Users/me/Desktop/test.mov -acodec pcm_s24le -map 0:1 -y Left.wav -acodec pcm_s24le -map 0:2 Right.wav -acodec pcm_s24le -map 0:3 Center.wav -acodec pcm_s24le -map 0:4 LFE.wav -acodec pcm_s24le -map 0:5 Left_Surround.wav -acodec pcm_s24le -map 0:6 Right_Surround.wav -acodec pcm_s24le -map 0:7 Left+Right_Total.wav

以下是终端的打印输出:

    MacBook-Pro:~ me$ /Users/me/Desktop/python/ffmpeg/ffmpeg -i /Users/me/Desktop/test.mov -acodec pcm_s24le -map 0:1 -y Left.wav -acodec pcm_s24le -map 0:2 Right.wav -acodec pcm_s24le -map 0:3 Center.wav -acodec pcm_s24le -map 0:4 LFE.wav -acodec pcm_s24le -map 0:5 Left_Surround.wav -acodec pcm_s24le -map 0:6 Right_Surround.wav -acodec pcm_s24le -map 0:7 Left+Right_Total.wav
ffmpeg version 2.2 Copyright (c) 2000-2014 the FFmpeg developers
  built on Mar 25 2014 15:00:55 with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
  configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --arch=x86_64 --enable-runtime-cpudetect
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/me/Desktop/test.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2014-03-06 11:25:34
  Duration: 00:01:03.48, start: 0.000000, bitrate: 153967 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 144704 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 23976 tbn, 23976 tbc (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
      timecode        : 00:00:00:00
    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FL), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FR), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (LFE), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (BL), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (BR), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, downmix, s32, 2304 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
    Stream #0:8(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2014-03-06 11:26:04
      handler_name    : Apple Alias Data Handler
      timecode        : 00:00:00:00
Output #0, wav, to 'Left.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #0:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels (FL), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #1, wav, to 'Right.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #1:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels (FR), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #2, wav, to 'Center.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #2:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, mono, s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #3, wav, to 'LFE.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #3:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels (LFE), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #4, wav, to 'Left_Surround.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #4:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels (BL), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #5, wav, to 'Right_Surround.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #5:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels (BR), s32, 1152 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Output #6, wav, to 'Left+Right_Total.wav':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    ISFT            : Lavf55.33.100
    Stream #6:0(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, downmix, s32, 2304 kb/s (default)
    Metadata:
      creation_time   : 2014-03-06 11:25:34
      handler_name    : Apple Alias Data Handler
Stream mapping:
  Stream #0:1 -> #0:0 (pcm_s24le -> pcm_s24le)
  Stream #0:2 -> #1:0 (pcm_s24le -> pcm_s24le)
  Stream #0:3 -> #2:0 (pcm_s24le -> pcm_s24le)
  Stream #0:4 -> #3:0 (pcm_s24le -> pcm_s24le)
  Stream #0:5 -> #4:0 (pcm_s24le -> pcm_s24le)
  Stream #0:6 -> #5:0 (pcm_s24le -> pcm_s24le)
  Stream #0:7 -> #6:0 (pcm_s24le -> pcm_s24le)
Press [q] to stop, [?] for help
size=    8927kB time=00:01:03.48 bitrate=1152.0kbits/s    
video:0kB audio:71415kB subtitle:0 data:0 global headers:0kB muxing overhead -87.499863%

答案1

您可以尝试一下ffmpeg -i Feature.mov -map 0:7 -c copy Left_Total.wav看看这是否有效吗?

我们需要确保立体声流中的数据可供 ffmpeg 使用。Quicktime 文件可能包含 ffmpeg 无法读取的专有容器/编解码器信息。

答案2

好的,我找到了问题所在。在 Quicktime 文件中,所有音轨均被命名并标记为左、右、中、LFE、左环绕、右环绕、左总、右总。ffmpeg 不喜欢将第 7 轨标记为左总右总,在这种情况下,它会生成一个无法播放的文件。如果我在 Quicktime Pro 中将第 7 轨重新标记为左和右并保存文件,则 ffmpeg 会运行,文件会正常播放。有没有办法解决这个问题,我不想每次在运行 ffmpeg 脚本之前手动重新标记第 7 轨。

将 Quicktime 文件第 7 轨标记为“左总计右总计”后,我从 ffmpeg 获得以下内容:

Metadata:
  creation_time   : 2014-03-06 11:25:34
  handler_name    : Apple Alias Data Handler
Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, downmix, s32, 2304 kb/s (default)

将 Quicktime 文件第 7 轨标记为“左右”后,我从 ffmpeg 获得以下内容:

Metadata:
  creation_time   : 2014-03-06 11:25:34
  handler_name    : Apple Alias Data Handler
Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32, 2304 kb/s (default)

更新:收集了更多信息。我决定逐个版本地回滚 ffmpeg,看看是否有任何不同。问题 ID 是 ffmpeg 正确地从 quicktime 继承了轨道名称/分配,因此如果轨道被分配为左环绕,这将被继承到 ffmpeg 制作的 wav 文件中。版本 ffmpeg-1.1.3 可以工作并导出正确的立体声 wav,但它导出的所有单声道轨道都分配了“中央”。因此,此后的 ffmpeg 版本可以正确分配名称,但无法与左总右总配合使用,这似乎会破坏它,但只有在导出到 24 位时才会这样!16 位在所有版本上都可以正常工作。

所以总而言之……如果轨道分配了“左总计”“右总计”,ffmpeg 将不会从 quicktime 导出 24 位立体声音频。

相关内容