3

I'm trying to convert a TrueHD 7.1 soundtrack to PCM format but ffmpeg give me an error and stopped. Here's the output of ffmpeg:

user:~$ ffmpeg -i source.thd -c:a pcm_s24le -ar 48000 output.wav      
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
      configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
      libavutil      54. 31.100 / 54. 31.100
      libavcodec     56. 60.100 / 56. 60.100
      libavformat    56. 40.101 / 56. 40.101
      libavdevice    56.  4.100 / 56.  4.100
      libavfilter     5. 40.101 /  5. 40.101
      libavresample   2.  1.  0 /  2.  1.  0
      libswscale      3.  1.101 /  3.  1.101
      libswresample   1.  2.101 /  1.  2.101
      libpostproc    53.  3.100 / 53.  3.100
    Input #0, truehd, from 'source.thd':
      Duration: N/A, start: 0.000000, bitrate: N/A
        Stream #0:0: Audio: truehd, 48000 Hz, 7.1, s32 (24 bit)
    Output #0, wav, to 'output.wav':
      Metadata:
        ISFT            : Lavf56.40.101
        Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 7.1, s32 (24 bit), 9216 kb/s
        Metadata:
          encoder         : Lavc56.60.100 pcm_s24le
    Stream mapping:
      Stream #0:0 -> #0:0 (truehd (native) -> pcm_s24le (native))
    Press [q] to stop, [?] for help
    [wav @ 0x206a2e0] Filesize 9129246822 invalid for wav, output file will be broken
    size= 8915280kB time=02:12:04.69 bitrate=9216.0kbits/s    
    video:0kB audio:8915280kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000001%

How can I make to conversion successful?

6

The WAV header is typically 32-bits. Your output will need 64 bits.

ffmpeg -i source.thd -c:a pcm_s24le -ar 48000 -rf64 auto output.wav    
  • Can you explain more what -rf64 auto does? I search the official document but I can't find it explanation. – Hartman Jun 27 '17 at 14:49
  • If the size of the output file is larger than 2^32-1, the WAV header needs to be 64-bits large. By default, ffmpeg will only write 32-bit headers. With the auto option, ffmpeg will use the variant that works. – Gyan Jun 27 '17 at 15:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.