無法使用 ffmpeg 將 FLV 轉換為 iPhone 的 MP4

無法使用 ffmpeg 將 FLV 轉換為 iPhone 的 MP4

我在將 FLV 轉換為可透過 Video-js 在 iPhone/iPad 上播放的 MP4 時遇到問題。

ffmpeg 指令似乎無法正確轉換。

以下是 cumulusclips 軟體在轉換時運行的原始命令之一:

/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 2 視訊而不是 MPEG-4 Part 10,行動裝置應該要支持,但不一定必須支援。這樣比較安全。

此外,現在您確實不需要建立 FLV 影片。我不知道有任何設備或播放技術需要這種(有點古董)格式。

您可能對此也感興趣:我需要哪些 ffmpeg 腳本才能獲得與 HTML5 相容的「適合所有人的影片」?

相關內容