HoH*_*y22 3 audio h.264 ffmpeg video-editing video-conversion
我已经尝试了所有可能的命令来剪切 H.264 mp4 视频的一部分(1-3 分钟),但结果是好是坏。我的视频为 29.97 FPS、1080p、~80 分钟、~3.5 GB,比特率约为 6200 KB/s。问题是我的输出在没有视频的情况下开始 1-2 秒然后继续正常,但音频从 0 秒开始。它在任何媒体播放器中都能很好地同步(音频和视频),但是当在其他任何地方使用它时(渲染用于制作目的),比如在 Adobe AE、Media Encoder 或视频转换器中,最终渲染的视频从 0 秒开始,音频开始了。因此,音频提前 1-2 秒结束,我不想要这个。在http://clipconverter.cc在线修剪 YouTube 视频时也会发生这种情况
我的命令如下:
ffmpeg -ss 01:19:22.000 -t 00:1:43.000 -i "in.mp4" -acodec copy -vcodec copy out.mp4
我什至尝试将 -ss 放在 -i 之后,但我得到了相同的结果。另外,如果我已经有一个关于这个问题的视频,我可以做些什么来解决它?为此,我还可以在 Adobe AE 中做什么?这个站点:https : //ubuntuforums.org/showthread.php?t= 1824250 说它需要在“关键帧”处进行剪切。如果是这样,我如何在 FFmpeg 中做到这一点?我如何找到它们?这些是什么?我不打算重新编码(使用 -c:v x264),它花费的时间太长并且使用伪影重新压缩视频。
我使用过 FFmpeg 的静态和共享版本。还使用了稳定版 3.2.2 和 ffmpeg-20170112-6596b34-win64-static,没有运气。
TLDR:我在 FFMPEG 中剪切的视频在开始时丢失了帧(甚至不是黑色或空白帧),最终在任何视频渲染软件中渲染时都会导致音频/视频不同步。
用
ffmpeg -ss 01:19:22 -t 00:1:43 -i "in.mp4" -c copy -avoid_negative_ts make_zero out.mp4
Run Code Online (Sandbox Code Playgroud)
大多数压缩视频使用时间压缩,因此帧依赖其他帧进行完整解码。如果您使用copy模式修剪视频,则您的入点之后的某些帧可能会依赖入点之前的帧进行解码。如果是这样,则必须包括这些帧。这些帧被分配了负时间戳,因此优秀的视频播放器将它们用于解码而不是用于演示。视频从inpoint开始显示。由于所有音频帧都是关键帧,因此音频修剪是精确的并保留了 A/V 同步。
显然,视频编辑器似乎并不注意 PTS,因此他们会显示存储在文件中的所有帧。我上面的命令强制所有存储的帧为正 TS,因此视频/音频将保持同步*。
*不完全正确。对于 MP3/AAC 等基于 MDCT 的音频编解码器,前一帧包含在负 PTS 中,因为解码需要它。也许你的 NLE 会解码那个帧,导致 21 - 23 ms 的异步。解决方法是重新编码音频。
| 归档时间: |
|
| 查看次数: |
4875 次 |
| 最近记录: |