use*_*421 5 audio video ffmpeg cut
我使用 ffmpeg 来剪切视频文件。我使用的格式是这样的:
ffmpeg -i input.avi -ss 00:06:30 -to 00:07:15 -c copy output.avi
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会在我的输出视频的开头留下一些黑框,所以我丢失了视频的某些部分。在我尝试的一个视频中,这持续了一秒钟,在另一个视频中,黑框持续了 4 秒。
有趣的是,当我使用相同的命令时,同一视频存在完全相同数量的黑框。意思是,无论我为第二个视频做了多少次,在所有输出中,输出视频在前 4 秒都是空白的!
不过声音效果很好!
以下是我尝试过但不起作用的其他一些命令格式:
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
Run Code Online (Sandbox Code Playgroud)
我用我使用的命令找到了我的解决方案,但后来出现了这个问题
编辑:我发现如果我不使用-c copy 标志,那么我就没有黑框:
ffmpeg -i input.avi -ss 00:06:30 -to 00:07:15 output.avi
Run Code Online (Sandbox Code Playgroud)
但是,使用这种方法,我的输出视频的质量明显低于输入视频,或以前方法的输出视频。所以我回到了第一广场。
例如,通过下载静态构建,确保您使用的是最新版本的 ffmpeg 。前一段时间发生了一些重大变化,影响了流切割的工作方式。
以下是您运行的命令之间的重要区别:
指定 时-c copy,ffmpeg 将在不修改实际比特流的情况下剪切视频。换句话说,它将按原样获取帧并将它们复制到输出文件中。在某些情况下(简单地说,当开始时间不对应于I-frame 时),ffmpeg 需要包含更多的帧,这些帧需要正确解码要显示的第一帧。那些将获得负时间戳,因此不应显示它们。
当您省略 时-c copy,ffmpeg 将使用任何编码器(mpeg4, libx264, ...)为所选输出格式(在您的情况下为 AVI 或 MP4)的默认编码器重新编码视频。这些编码器可能具有默认质量或比特率设置,使输出看起来很糟糕。因此,在重新编码时,您应该知道要设置的目标质量。
如果使用流复制剪切对您不起作用,并且您必须重新编码视频,您不妨使用最新且高效的视频编解码器(H.264)和容器(MP4),并复制音频流:
ffmpeg -ss 00:10:45 -i input.avi -c:v libx264 -crf 18 -to 00:11:45 -c:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)
在这里,CRF 选项控制输出质量。18 到 28 之间的值是“正常的”,值越低越好。该-ss选项可以是一个输入选项(即出现在 之前的选项-i),它使一切变得更快。
有关更多信息,请阅读FFmpeg Wiki 上的搜索指南。
| 归档时间: |
|
| 查看次数: |
5330 次 |
| 最近记录: |