ffmpeg音视频同步计算例子

假设我们有一个视频文件video.mp4和一个音频文件audio.mp3,我们想要将它们合并成一个同步的视频文件。

首先,我们可以使用ffprobe命令获取视频文件的帧率(fps)和音频文件的采样率(sample rate):

shell ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 video.mp4

输出:

25/1

这表示视频文件的帧率为25。现在让我们检查音频文件的采样率:

shell ffprobe -v error -show_entries format=sample_rate -of default=noprint_wrappers=1:nokey=1 audio.mp3

输出:

44100

这表示音频文件的采样率为44100。

接下来,我们可以使用以下命令将两个文件合并:

shell ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4

该命令中的-c:v copy选项表示复制视频流,并且不对视频进行重新编码。-c:a aac选项表示使用AAC编码音频流。-strict experimental选项是必需的,否则会出现“aac编码器不支持”的错误。最后,指定输出文件名为output.mp4

如果我们发现输出文件的音频和视频不同步,我们可以使用以下命令调整音频的时间偏移量:

shell ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y -itsoffset 0.5 -i audio.mp3 -map 0:v -map 2:a -shortest output.mp4

在这个命令中,我们添加了-itsoffset 0.5选项,表示将音频的时间偏移量增加了0.5秒。如果输出文件的音频比视频快,可以将此值设置为负数。此外,我们使用-y选项覆盖已存在的输出文件,并使用-map选项指定要复制的流,并使用-shortest选项强制输出流与最短输入流的长度相同。

通过这些步骤,我们可以将音频和视频同步,并得到一个正确同步的输出文件。

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

猜你喜欢

转载自blog.csdn.net/yinshipin007/article/details/130407897