相关疑难解决方法(0)

从命令行准确剪切视频文件

我很难找到一个 cli 应用程序,它可以获取视频文件(最好是 avi、mkv 和 mp4)并以精确的时间精度剪切非常短的剪辑(2-6 秒)。我试过ffmpegmencoderavidemuxmp4box但它们都在关键帧上剪切,从而创建了 6 秒以上的剪辑。有没有什么工具可以把输入文件重新编码后切准确时间或切不准确,重新编码再准确切?

video mp4 command-line video-editing

27
推荐指数
1
解决办法
2万
查看次数

使用 ffmpeg 选择过滤器以精确的帧切割视频

不是使用-ss-to寻找看起来不太准确的参数,我可以根据给定的帧数剪切视频吗?例如;

ffmpeg -i video.webm -startingframe 80 -endingframe 560 output.webm
Run Code Online (Sandbox Code Playgroud)

[包括第 80 帧和第 560 帧。因此,总的来说它使 (560 - 80 +1) 帧]

在回答和搜索之后,我尝试了一些命令。但到目前为止,我找不到可接受的方式。

如果有人想在第 250 帧和第 750 帧之间剪切视频流,这就是要走的路。它将给出 501 帧作为输出:

注意: movie.mp4 为 25 fps,音频采样率为 48k

ffmpeg -i movie.mp4 -an -vf "select=between(n\,250\,750),setpts=PTS-STARTPTS" v_stream.webm
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,输出正好是 20 秒。

对音频使用相同的方法:

ffmpeg -i movie.mp4 -vn -af "aselect=between(n\,480\,1440),setpts=PTS-STARTPTS" a_stream.webm
Run Code Online (Sandbox Code Playgroud)

出乎意料的是,这个精度很差。它应该给了我 960001 (960k+1) 个等于 20 秒音频的样本。但是,输出的长度为 20.505 秒,并且有 984240 个样本。此外,如果我增加持续时间,错误也会增加。

然后我尝试使用 -ss -to 参数来切割音频流:

ffmpeg -i movie.mp4 -vn -ss 10.000 -to 30.000 a_stream.webm
Run Code Online (Sandbox Code Playgroud)

旧的经典方式效果更好。输出长度为 20.003 …

ffmpeg

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

command-line ×1

ffmpeg ×1

mp4 ×1

video ×1

video-editing ×1