更轻松地获取视频文件中的时间码

问题描述

我正在浏览一些视频以修剪它们(提取视频的部分内容)。

我知道有数十亿个软件可以轻松修剪视频,但我还没有找到任何不会重新编码结果的软件。

我现在的方法是在 MPC-BE 中打开视频 -> 播放 -> 暂停 -> 记下时间 -> 继续找地方结束剪辑 -> 暂停 -> 记下视频的结束时间夹子。然后我取时间码并使用 ffmpeg 提取部分。通常是这样的:

ffmpeg -i input.mp4 -ss 01:50:00 -to 01:55:00 -c:v copy -c:a copy output.mp4

我的问题是有没有更简单的方法获取时间码?最好的办法是使用 ffplay 播放,只需点击组合键即可复制时间码。但我也开放任何其他方法,可以更容易地获得时间码。正如您可能理解的那样,为 23 个剪辑手动写下时间码是一件非常痛苦的事情。

解决方法

mpv

播放器 mpv 支持不属于核心播放器的自定义功能的脚本。有几个涉及剪切/修剪的 user scripts 可用,可能会有所帮助:

  • copyTime - 获取视频的当前时间并以 HH:MM:SS.MS 格式将其复制到剪贴板。
  • trim.lua - 无需转码即可创建视频文件的剪辑。利用 ffprobe 获取准确的关键帧。
  • splice - 根据当前播放视频中的剪辑创建视频。
  • mpv_slicing_copying - 来自 mpv_slicing 的分叉。它将以原始格式而不是 RGB 剪切视频片段。
  • excerpt - 允许您从媒体文件中快速创建摘录,您只需设置开始和结束标记。

无损切割

LosslessCutffmpeg 的 GUI,用于无损修剪和剪切视频和音频文件。

losslesscut screenshot

,

这是我的方法:使用ffplay,

ffplay -vf "drawtext=text='%{pts\:hms}':box=1:x=(w-tw)/2:y=h-(2*lh)" J1.mp4

其中 J1 是要播放的文件。

在电影中写时间:

ffmpeg -start_at_zero -copyts -ss 00:00:14.435 -i showfreqs.mp4 -vf "drawtext=fontfile=/path/to/Arial.ttf: fontsize=45:fontcolor=yellow:box=1:boxcolor=black:x=(W-tw)/2:y=H-th-10:text='Time\: %{pts\:hms}'" outputTemps.mp4

或尝试:

ffmpeg -i output.mp4 -vcodec libx264 -cmp 22 -vf "drawtext=fontfile=DroidSansMono.ttf: timecode='09\:57\:00\:00': r=23.976: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000099" -y output.mov

我发现本教程显示:https://www.youtube.com/watch?v=noKvwcnT9aw