Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 使用FFMPEG将修剪过的音频插入视频_Audio_Video_Ffmpeg_Video Processing - Fatal编程技术网

Audio 使用FFMPEG将修剪过的音频插入视频

Audio 使用FFMPEG将修剪过的音频插入视频,audio,video,ffmpeg,video-processing,Audio,Video,Ffmpeg,Video Processing,最近我不得不使用FFMPEG,有时我很难理解应该使用哪些命令/过滤器来实现我的目标,这篇文章只是分享我在这个过程中获得的知识,特别是在处理音频文件并将其插入视频的过程中 我需要用一个新的音频文件替换视频的音频,在一个特定的位置,具有特定的持续时间,最好在音频结束时淡出,下面是我的问题的解决方案及其解释 我还应该提到,这方面所需的一些知识是获得的 通过学习本书中提供的答案,也非常感谢他 这是完整的命令,提供了一个名为vinput.mp4的输入视频文件和一个名为ainput.wav的音频文件: ff

最近我不得不使用FFMPEG,有时我很难理解应该使用哪些命令/过滤器来实现我的目标,这篇文章只是分享我在这个过程中获得的知识,特别是在处理音频文件并将其插入视频的过程中

我需要用一个新的音频文件替换视频的音频,在一个特定的位置,具有特定的持续时间,最好在音频结束时淡出,下面是我的问题的解决方案及其解释

我还应该提到,这方面所需的一些知识是获得的
通过学习本书中提供的答案,也非常感谢他

这是完整的命令,提供了一个名为vinput.mp4的输入视频文件和一个名为ainput.wav的音频文件:

ffmpeg -y -i vinput.mp4 -i ainput.wav -filter_complex "\
 [1:a]aloop=-1:2e+09[aloop];\
 [aloop]aformat=channel_layouts=mono,atrim=end=2[atrim];\
 [atrim]adelay=2000[afinal];\
 [afinal]afade=t=out:st=3.5:d=0.5[afinal]" \
-shortest -map "[afinal]" -map 0:v output.mp4

以下是每个步骤的说明:

[1:a]aloop=-1:2e+09[aloop]
将无限次循环我的音频(-1),并重复尽可能多的帧数(2e+09)(我没有找到方法告诉命令完全重复音频


这将从上一条指令(aloop)中获取循环音频,并主要将其修剪为仅持续2秒


这将延迟音频启动2000毫秒(2秒),使其在视频的第二秒开始播放


这将淡出我们的音频,在视频的第4秒开始淡出,使淡出持续0.5秒,意味着声音将从第3.5秒淡出到第4秒


由于我们有一个无限期重复的音频流,我们需要告诉ffmpeg何时停止编码,这是由标记完成的,它告诉ffmpeg,我们期望输出的最终结果与接收到的最短输入(在输出情况下,是视频输入)一样长


正如中善意地指出的,此选项指示ffmpeg我们要复制到生成的输出的流,在这种情况下,我们想要最终音频(afinal)和源视频流(0:v)

-map选项指示ffmpeg需要哪些流。要从input_0.mp4复制视频,从input_1.mp4复制音频,请执行以下操作:


$ffmpeg-i input\u 0.mp4-i input\u 1.mp4-c copy-map 0:0-map 1:1-shortest out.mp4

谢谢你,塞缪尔,忘了解释那部分了!谢谢分享:)我应该把这个添加到原始答案中,在同一个地方编译所有信息吗?当然!请务必相信我,并链接我的答案。这个答案为我省去了很多麻烦!非常感谢。
[aloop]aformat=channel_layouts=mono,atrim=end=2[atrim]
[atrim]adelay=2000[afinal]
[afinal]afade=t=out:st=3.5:d=0.5[afinal]
-shortest
-map "[afinal]" -map 0:v