IOS cannot play “slow” or “veryslow” h.264 videos

h.264iosvideo

I have encoded a video that I want to transfer to my iPad.

Using FFmpeg, the settings are:

ffmpeg -i input.mkv -c:v libx264 -preset veryslow -crf 32 output.mp4"

When I have tried the presets veryslow and slow, I get this message when trying to sync the video via iTunes to the device:

"[Your File] was not copied to the [Device Name] because it cannot be
played on this iPad."

However, I have tried encoding the same video using the preset medium and sync and playback in iOS's Videos app works.

Is there a work-around to get the "slow" preset videos onto the iPad?

Best Answer

Use next parameters to ensure compatibility with apple devices.

-profile:v baseline -level 3.0

This disables some advanced features but provides for better compatibility. Typically you may not need this setting (and therefore avoid using -profile:v and -level), but if you do use this setting it may increase the bit rate quite a bit compared to what is needed to achieve the same quality in higher profiles.

Encoding video using H.264 compression:

  • H.264 Baseline 3.0: All devices
  • H.264 Baseline 3.1: iPhone 3G and later, and iPod touch 2nd generation and later.
  • H.264 Main profile 3.1: iPad (all versions), Apple TV 2 and later, and iPhone 4 and later.
  • H.264 Main Profile 4.0: Apple TV 3 and later, iPad 2 and later, and iPhone 4S and later
  • H.264 High Profile 4.0: Apple TV 3 and later, iPad 2 and later, and iPhone 4S and later.
  • H.264 High Profile 4.1: iPad 2 and later and iPhone 4S and later.

A frame rate of 10 fps is recommended for video streams under 200 kbps. For video streams under 300 kbps, a frame rate of 12 to 15 fps is recommended. For all other streams, a frame rate of 29.97 is recommended.

Encode audio as either of the following:

  • HE-AAC or AAC-LC, stereo
  • MP3 (MPEG-1 Audio Layer 3), stereo