YouTube ではアップロードして公開できました。
しかし、Twitter で動画アップロード時、完了できてるのに、ダイアログがグレーアウトしたまま。
ツイートができない。戻るとエラーの表示。
エラー
長い動画はアップロードされるまで時間がかかります。アップロードが中断されないように、ブラウザのタブは開いたままにしてください
アップロードはできてるのに。
なんでかな。
🎞️ ffmpeg で .mov → .mp4 に変換するときの注意点
ffmpeg
では、以下のようにすれば Twitter でもいけます。
画質は
-crf
で設定するだけです。0
はロスなし、18
は実際はロスしていますが見た目では問題ありません。もし、FFmpeg以外のプレイヤーで再生できるようにしたい場合は、
-vf format=yuv420p
を追加してください。色の再現性が若干低下することがありますが、広い互換性のために必要です。
ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4
YouTubeにアップロードする場合は、
-vf format=yuv420p
を省略することができます。
👉 video - ffmpeg convert mov to mp4 without reduction of bit rate - Stack Overflow
それぞれのコマンドオプションで作成された output.mp4 を ffprobe
で確認。
# -vf format=yuv420p なし
ffmpeg -i input.mov -crf 18 output.mp4
Stream #0:0[0x1](und): Video: h264 (High 4:2:2) (avc1 / 0x31637661),
yuv422p10le
(tv, bt709, progressive), 720x1280 [SAR 1:1 DAR 9:16], 216 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
yuv420p
(tv, bt709, progressive), 720x1280 [SAR 1:1 DAR 9:16], 212 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
となり、ピクセルフォーマットが
yuv422p10le
↓
yuv420p
と変化していることが分かります。
この話、Twitter 公式にもきちんと書いてました。
YUV 4:2:0 ピクセルフォーマットにのみ対応しています。
👉 メディアのベストプラクティス | Docs | Twitter Developer Platform
その他、分かったことメモ。
※ ffmpeg で .mov → .mp4 にすれば コーデックは H.264 になる。
※ mov のコーデックは ProRes も H.264 も存在する。
動画ファイルって、いろんなきまりがあるんですね!
🎞️ まとめ
ffmpeg で、広く互換性を優先して、.mov
を .mp4
に変換する。
# .mov → .mp4
ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4