Imf*_*ego 7 ffmpeg video-editing
\n\n\n使用 -ss 作为输入选项和 -c:v copy 可能不准确,因为 ffmpeg 被迫仅在 i 帧上使用/分割。尽管\n它会\xe2\x80\x94(如果可能)\xe2\x80\x94将流的开始时间调整为负\n值以对此进行补偿。基本上,如果您指定“第二个 157”,并且直到第二个 159 为止都没有关键帧,它将在开始时包含两秒的音频(没有视频),然后将从第一个关键帧开始。因此,在分割和进行编解码器复制时要小心。
\n
-ss
为了避免这种情况,我首先尝试通过-to
构建所有附近帧的图块来查找所需帧的时间戳。I\xe2\x80\x99ve 使用生成的图块
ffmpeg -i "INPUT.mkv" -ss 09:55 -t 3 -vf "drawtext=fontfile=I\\\\:\\Misc\\\\\\\\~Software\\\\\\\\~OS\\\\\\\\I386\\\\\\\\arial.ttf: fontsize=60: text=\'F%{n}\\(%{pict_type}\\)\\@%{pts\\:hms}\': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1,scale=320:-1,tile=layout=12x10" tiles%03d.png
根据他们的说法,所需的关键帧应从 00:09:56.012 开始,最后所需的帧应在 00:10:00.224 处。但是,使用这些时间戳进行切割时创建的片段
\n\nffmpeg -i "INPUT.mkv" -map 0:0 -map 0:4 -map 0:5 -map 0:6 -ss 09:56.012 -to 00:10:00.224 -vcodec copy -acodec copy J01.mkv
从非关键帧(仅声音)开始,也在错误的位置结束。相比之下,即使视频和音频输出设置设置为Copy
(IIUC,无需重新编码并从无关键帧开始),在 Avidemux 中剪切相同片段也能正常工作。Avidemux 中显示的时间戳也不同 ( -ss 09:56.346 -to 10:00.558
vs -ss 09:56.012 -to 10:00.224
)。
我\xe2\x80\x99ve也尝试过按pkt_dts_time(/sf/ask/980357731/)进行切割,但这也\xe2\x80\x99不起作用。
\n\nps 另一个与我尝试做的类似的过程(对于上述 Avidemux)是在 Sony Vegas 中放大时间线,直到可以从一个帧步进到另一个帧,然后在场景更改后设置第一帧(这也是一个关键帧)作为起点,以同一场景的最后一帧(之后是下一个不需要的关键帧)作为端点,然后进行渲染。类似的事情也可以在 Avidemux 中完成,同时复制视频和音频流。
\n\nedit1:Here\xe2\x80\x99s 版本的日志-copyts
:pastebin 。com /Cxzrc8Er. 我也应该做其他人吗?
edit2:这是 的结果"PATHTO\\ffprobe.exe" -select_streams v -show_entries packet=pts_time,flags -of compact -read_intervals 580%600 "INPUT.mkv" | findstr K
。
packet|pts_time=578.160000|flags=K\npacket|pts_time=581.205000|flags=K\npacket|pts_time=583.499000|flags=K\npacket|pts_time=585.042000|flags=K\npacket|pts_time=588.671000|flags=K\npacket|pts_time=594.885000|flags=K\npacket|pts_time=596.012000|flags=K\n
Run Code Online (Sandbox Code Playgroud)\n\n我\xe2\x80\x99ve还在另外2个视频上尝试了整个命令组合(平铺、以这种方式列出帧、以两种不同的方式切割片段),结果相似。使用您建议的命令在终端中列出的关键帧时间与我制作的图块中的关键帧时间相匹配;通常,用我的方法进行切割会在开始时留下一个小的冻结部分(~1s),有时在最后会留下几个不需要的帧,而用你的方法进行切割会在开始时留下较长的空视频流。
\n\n我还找到了一个更好的视频片段进行实验,因为它在视觉上更容易确定有多少想要的帧丢失以及添加了多少不需要的帧(imgur.com /a /DTzmt ,相关部分可以在bit.ly /Kmnz112f1下载)。您的解决方案也效果更好。
\n\n另外,只是为了确保:您的原始解决方案中的意思是 -ss 09:56.01 3而不是 -ss 09:56.01 2吗?而且,我的猜测是否正确,它通常适用于您正在剪切的视频,而它不适用于我的视频,这与平常不同?
\n\n尝试
ffmpeg -ss 09:56.013 -i "INPUT.mkv" -map 0:0 -map 0:4 -map 0:5 -map 0:6 -to 00:10:00.224 -vcodec copy -acodec copy -avoid_negative_ts make_zero J01.mkv
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6820 次 |
最近记录: |