
我想剪切 23.976 fps 蓝光电影的第 2928 帧到第 5177 帧的音频。
我已阅读了一些文章,但不知道如何准确地做到这一点。
从我的角度来看,我必须先提取音频:
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 中获取音频。