无法使用 ffmpeg 将 FLV 转换为 iPhone 专用的 MP4

无法使用 ffmpeg 将 FLV 转换为 iPhone 专用的 MP4

我在将 FLV 转换为 MP4 以便通过 Video-js 在 iPhone/iPad 上播放时遇到了问题。

看起来 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 2M2 MBit/s 的固定比特率编码。

最初的转换使用的是 MPEG-4 Part 2 视频,而不是 MPEG-4 Part 10,移动设备应该支持后者,但不一定非要支持。这样更安全。

此外,现在你真的不需要创建 FLV 视频。我不知道有任何设备或播放技术需要这种(有点过时的)格式。

您可能也对此感兴趣:我需要哪些 ffmpeg 脚本才能获得与 HTML5 兼容的“人人享有的视频”?

相关内容