在哪里可以按视频帧剪切音频?

在哪里可以按视频帧剪切音频?

我想剪切 23.976 fps 蓝光电影的第 2928 帧到第 5177 帧的音频。

我已阅读了一些文章,但不知道如何准确地做到这一点。

使用 ffmpeg 选择过滤器按精确帧剪切视频

https://video.stackexchange.com/questions/25291/how-to-precisely-trim-video-with-ffmpeg-ss-and-t-are-off-by-more-than-a-half

如何使用 ffmpeg 进行精确帧剪切?

从我的角度来看,我必须先提取音频:

ffmpeg.exe -i movie.mkv -map 0:1 -c:a flac -sample_fmt:a s16 audio.flac

检查音频和视频是否同时开始:

ffprobe -show_entries stream=codec_type,start_time -v 0 -of compact=p=1:nk=0 movie.mkv stream|codec_type=video|start_time=0.000000 stream|codec_type=audio|start_time=0.000000

并使用帧/时间计算剪切音频:

ffmpeg.exe -i audio.flac -ss (2928/(24000/1001)) -to (5177/(24000/1001)) -codec flac audio_cut.flac ffmpeg.exe -i audio.flac -ss 122.122 -to 215.9240417 -codec flac audio_cut.flac

对于视频来说,一帧是时间中的一个瞬间,而对于音频来说,一帧是时间段。所以我必须包括第 2928 帧和第 5177 帧。但我不确定在哪里开始和停止剪切。

来自 ffmpeg 文档:

-ss:当用作输出选项时[...]解码但丢弃输入,直到时间戳到达位置。

-to:停止在位置写入输出或读取输入。

因此,当我想提取第一帧的音频时,我必须像这样剪切:

ffmpeg.exe -i audio.flac -ss (0/(24000/1001)) -to (1/(24000/1001)) -codec flac audio_cut.flac

考虑到这一点,我必须像这样将 2928 剪切到 5177:

ffmpeg.exe -i audio.flac -ss (2927/(24000/1001)) -to (5177/(24000/1001)) -codec flac audio_cut.flac

那是对的吗?

答案1

ffmpeg 从 0 开始计数。

ffmpeg.exe -i audio.flac -ss (2927/(24000/1001)) -to (5177/(24000/1001)) -codec flac audio_cut.flac

--> 2927 - 5176

ffmpeg.exe -i audio.flac -ss (2928/(24000/1001)) -to (5178/(24000/1001)) -codec flac audio_cut.flac

--> 2928 - 5177

我需要剪切到 5178 才能从帧 5177 中获取音频。

相关内容