我现在正在创建一个音乐幻灯片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文件。
答案 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的答案以获取解决方案。