使用ffmpeg创建一个Android可播放的音乐幻灯片放映

时间:2014-04-21 12:26:14

标签: android video ffmpeg mp4 aac

我现在正在创建一个音乐幻灯片mp4视频,然后用ffmpeg在Android设备上播放。

我使用以下命令来完成此任务。

第一个是输入一批jpg文件并将其转换为mp4文件。

1.)C:/xampp/htdocs/bin/ffmpeg -y -r 1/5 -i C:/xampp/htdocs/bin/%03d.jpg -c:v libx264 -profile:v baseline -level 3.0 -r 30 -pix_fmt yuv420p C:/xampp/htdocs/bin/out.mp4

第二个是将音频放到上一个创建的视频中。

2.)C:/xampp/htdocs/bin/ffmpeg -i C:/xampp/htdocs/bin/out.mp4 -i C:/xampp/htdocs/upload/1.mp3 -y -map 0 -map 1 -codec copy -shortest C:/xampp/htdocs/bin/haha.mp4"

这两个命令都是正确的并创建了mp4文件。但是只有out.mp4可以在android deivce中播放,而haha.mp4则不能。

所以似乎音轨违反了android mp4的要求。第二个命令应该是什么,以便我可以在Android设备中播放mp4文件。

1 个答案:

答案 0 :(得分:0)

有些设备不喜欢MP4容器中的MP3音频。 AAC音频更常见。一个简单的命令:

ffmpeg -i video -i audio -map 0:v -map 1:a -codec:v copy -codec:a aac \
-strict experimental -b:a 192k -shortest output.mp4

请注意,我将-map 0 -map 1更改为-map 0:v -map 1:a更具体,因为您可能不希望ffmpeg包含音频输入中的任何专辑封面(它会创建一个额外的单独视频流)

针对您案例的更具体的命令。您可以使用一个命令而不是两个命令执行所有操作:

ffmpeg -framerate 1/5 -i %03d.jpg -i audio.mp3 -map 0:v -map 1:a -c:v libx264 \
-profile:v baseline -level 3.0 -r 30 -pix_fmt yuv420p -c:a aac \
-strict experimental -b:a 192k -shortest output.mp4
  • 此示例使用本机FFmpeg AAC编码器。它被认为是实验性的,因此结果可能会有所不同,但它并不是一个具有足够比特率的可怕编码器。

  • 如果您的ffmpeg支持其他AAC编码器,请参阅FFmpeg and AAC Encoding Guide以获取更多建议,示例和信息。

  • 从图像制作视频时,您可能会遇到一些问题,例如跳过的帧。请参阅FFmpeg slideshow from images - only one frame shown的答案以获取解决方案。