そのままではつかえない
iPadではmp4
をサポートしていると読んだので、Linuxで作った動画をiPadに移せば普通に使えるだろうと思っていたら、
iMovieには影も形も出てこない。ファイルアプリで見てみると、ファイルは認識されるもののプレビュー不可。
他の動画編集ソフトでももちろん使えなかった。。
VLCで変換するとOK
mp4
の音声部分をAAC
にすればOKで、VLCでそれができるというブログを見たので、やってみるとうまく行った。
ffmpegでできないか
VLCはGUIの奥深くまでいかないと変換できず、動画ごとにやるのはきついので、ffmpegで出来ないか試してみた
$ ffmpeg -i src.mp4 -vcodec libx264 -acodec aac out.mp4
が、ダメだった。。
うまくいくファイルと、うまくいかないファイルを比較
何がおかしいのか調べるために、ffmpegで動画ファイルの属性を出力して比較してみた。
Audio
Audioは、うまく行かない方はmp3
で、うまく行く方はAAC
になっている。問題なさそう。。
# うまくいくファイル
$ ffmpeg -i working.mp4 2>&1|grep Audio:
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 21 kb/s (default)
# うまくいかないファイル
$ ffmpeg -i not-working.mp4 2>&1|grep Audio:
Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, mono, s16p, 40 kb/s (default)
Video
Videoの方では大きな違いが見付かった。うまく行く方はyuv420p
、うまく行かない方はyuv444v
になっている!
# うまく行くファイル
$ ffmpeg -i working.mp4 2>&1|grep Video:
Stream #0:1(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1898x1400 [SAR 1:1 DAR 949:700], 284 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default)
# うまくいかないファイル
$ ffmpeg -i not-working.mp4 2>&1|grep Video:
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p(tv, bt709), 1898x1400 [SAR 1:1 DAR 949:700], 599 kb/s, 30 fps, 30 tbr, 3k tbn, 60 tbc (default)
動いた!
ググると、-pix_fmt yuv420p
でyuv420p
を指定できるようなので、そのオプションを追加したところ動いた。
$ ffmpeg -i src.mp4 -vcodec libx264 -pix_fmt yuv420p -acodec aac out.mp4