ffmpeg で FLV を iPhone 用の MP4 に変換できない

ffmpeg で FLV を iPhone 用の MP4 に変換できない

Video-js 経由で FLV を iPhone/iPad で再生できる MP4 に変換するときに問題が発生します。

ffmpeg コマンドが正しく変換されていないようです。

以下は、変換時にソフトウェア cumulusclips が実行する元のコマンドの 1 つです。

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 640x480 -vb 800k -ac 2 -ab 96k -ar 44100     -f flv /var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv

出力は次のようになります。

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, flv, to '/var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: flv, yuv420p, 640x480, q=2-31, 800 kb/s, 1k tbn, 24 tbc
    Stream #0.1: Audio: libmp3lame, 44100 Hz, 2 channels, s16, 96 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

この後、モバイルでは以下を実行します。

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 480x360 -vb 600k -ac 2 -ab 96k -ar 44    100 -f mp4 /var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4

出力:

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, mp4, to '/var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 480x360, q=2-31, 600 kb/s, 24 tbn, 24 tbc
    Stream #0.1: Audio: libfaac, 44100 Hz, 2 channels, s16, 96 kb/s

答え1

あなたが使用しているffmpegのバージョンはかなり古いものだと思います。システム用の静的ビルドを以下からダウンロードしてください。公式ホームページffmpeg古いパスではなく新しいパスを使用します/usr/bin/ffmpeg

たとえば、静的ビルドをダウンロードした場合は、それを に配置し/usr/local/bin/ffmpeg、実行可能ファイル ( chmod ugo+x /usr/local/bin/ffmpeg) にして使用することができます。

次に、ビデオを HTML5 対応であらゆる種類のモバイル デバイスで再生可能な MP4 に変換するには、次のようなコマンドを使用します。

ffmpeg -i input.avi -c:v libx264 -c:a aac -strict experimental -b:a 128k \
-crf 23 -profile:v baseline -movflags faststart output.mp4

必要な品質に応じて CRF を変更します (18 ~ 28 が適切な範囲で、低いほど高品質になります)。または、-b:v 2Mたとえば 2 MBit/s の固定ビットレート エンコーディングを選択します。

元の変換では、MPEG-4 Part 10 ではなく MPEG-4 Part 2 ビデオが使用されていました。これはモバイル デバイスでサポートされているはずですが、必ずしもサポートされている必要はありません。その方が安全です。

また、最近では FLV ビデオを作成する必要はまったくありません。この (少し古い) 形式を必要とするデバイスや再生テクノロジーは知りません。

これにも興味があるかもしれません:HTML5 互換の「誰でも視聴できるビデオ」を実現するには、どのような ffmpeg スクリプトが必要ですか?

関連情報