Lossless audio codec for uploading to YouTube

6,174

While YouTube may interpret FLAC, it could very well be that their conversion process has a bug, or isn't resilient enough. If you cut the FLAC bitstream with -shortest, it could just happen that it's not properly written and YouTube chokes on that.

I've had YouTube produce playback errors for some formats I used for uploading, and it comes down to trial and error if you want to deviate from their encoding suggestions.

As for your alternatives:

  • WAV should see better support but is unnecessarily huge in terms of file size. You could give it a try regardless.
  • From what I've read, ALAC is not compatible with YouTube.

AAC should be your codec of choice. It doesn't offer a mathematically lossless mode, but listening tests suggest that at even 96 kBit/s (constrained) VBR encoding, quality is remarkably good.

Per the ISO/IEC 13818-7 standard which defines AAC, "it provides ITU-R 'indistinguishable' quality at a data rate of 320 kbit/s for five full-bandwidth channel audio signals." This means that even at 128 kBit/s CBR for stereo audio, you should have an acoustically lossless file given a good enough encoder (in FFmpeg, libfdk-aac and libfaac should be used, not libvo_aacenc and aac.)

YouTube's probably going to re-encode your video and audio anyway, so unfortunately there's no chance of uploading lossless and downloading the exact same bitstreams.

Share:
6,174

Related videos on Youtube

Zombo
Author by

Zombo

Updated on September 18, 2022

Comments

  • Zombo
    Zombo almost 2 years

    I took a FLAC file and JPG to create a video

    ffmpeg -loop 1 -i aa.jpg -i bb.flac -c:a copy -shortest cc.mkv
    

    However after uploading the resultant MKV to YouTube I noticed that the audio cuts out about 5 times around the end for 1/2 second each.

    I read on how to fix audio problems with YouTube, which suggest to use AAC.

    Would it be best to use

    • FLAC with a different command
    • WAV
    • ALAC
    • AAC lossless (if that exists)
    • something else

    To clarify, the errors only occur on YouTube, not with the local FLAC or local MKV files.

    I ended up going with this silly command; the skipping seems to have gone away.

    ffmpeg -loop 1 -i aa.jpg -i bb.flac -shortest \
      -c:a aac -strict -2 -b:a 529200 cc.mp4
    
    • LeonG
      LeonG over 11 years
      libfdk-aac is ok, but libfaac struggles even at high bitrates. I would never recommend libfaac for anything. Even LAME MP3 will work better than libfaac. Safe AAC encoders: libfdk-aac Apple AAC Nero AAC Another option that would work is to upload a very high bitrate Vorbis audio track in a WEBM container.
  • Elisa Cha Cha
    Elisa Cha Cha over 11 years
    A higher bitrate ABX test between the four ffmpeg supported AAC-LC encoders would be interesting. aac may not be as bad as we expect at higher bitrates, but I haven't tried.
  • slhck
    slhck over 11 years
    Yeah… all I ever did was video quality testing, so I'll have to read up a little on the protocols for audio, but if I ever find the time I'll force a dozen students to do some ABC/HR testing for the AAC encoders to get a better feeling for what bit rates are acceptable :)
  • slhck
    slhck about 11 years
    Since the OP is using FFmpeg, the choices for AAC encoders are quite limited. libfdk-aac and libfaac are the only reasonable encoders there.
  • Martin Hansen
    Martin Hansen about 11 years
    As someone mentioned, even Vorbis or LAME are better than FFMPEGs built-in AAC encoders, so use these codecs instead. They're both better than the built-in AAC encoders of FFMPEG.<br /> If you're desperate for AAC, I'd suggest batch converting FLAC to AAC first and then use FFMPEG to mux the existing AAC files into the video container. YouTube in fact doesn't care which audio codec you use for uploaded files as it re-encodes everything to AAC anyway.