FFMpeg:将图像与音频合并特定的持续时间

时间:2018-07-03 13:52:58

标签: android ffmpeg

过去7天内,我一直在FFMpeg上工作。我需要在以下位置创建视频:

  1. Concat很少有图像从Android存储设备中提取到视频中。
  2. Add a music文件[与从Android存储设备中选取的文件相同。]
  3. Set Duration per image要在视频中显示。例如如果选择了3张图像,则视频的总时长应为用户选择的3 *持续时间。

我到目前为止所做的。

我正在为implementation 'nl.bravobit:android-ffmpeg:1.1.5'的预构建二进制文件使用FFmpeg。 以下是用于串联图像并设置持续时间的命令:

ffmpeg -r 1/duration_selected_by_user -f concat -safe 0 -i path_of_concat_file.txt -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p path_of_output_video_file.mp4 

注意:

  1. 通过添加用户选择的持续时间作为帧速率,我可以设置要显示的每个图像的持续时间。
  2. Concat运作良好,并且图像已合并到视频中。

问题: 当我尝试在同一过程中添加音频时,通过使用以下命令,即使对于较小的音频,进度也会运行很长时间:

ffmpeg -r 1/duration_selected_by_user -i path_of_audio_file.mp3 -f concat -safe 0 -i path_of_concat_file.txt -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p path_of_output_video_file.mp4

由于我对该技术不太熟悉和经验丰富,因此似乎在命令中存在一些问题。如何提高图像和音频合并的性能以获得更好的结果?

与上下文相关的重要链接:

https://github.com/bravobit/FFmpeg-Android

1 个答案:

答案 0 :(得分:0)

@HB在评论中提到:

  

尝试在-pix_fmt yuv420p之后添加-preset ultrafast

preset是一组选项的集合,这些选项将提供一定的编码速度与压缩率。较慢的预设将提供更好的压缩(压缩是每个文件大小的质量)。这意味着,例如,如果您以某个文件大小或恒定比特率为目标,则使用较慢的预设可获得更好的质量。同样,对于恒定质量的编码,只需选择较慢的预设即可简单地节省比特率。  可用的速度降序预设为:

  • 超快
  • 超快
  • 非常快
  • 更快
  • 快速
  • 中-默认预设
  • 较慢
  • 非常慢
  • 安慰剂–忽略它,因为它没有用

参考:https://trac.ffmpeg.org/wiki/Encode/H.264#Preset