(发现)用 Emacs 剪辑视频

主要是通过 mpv 和 ffmpeg 与 emacs 结合。

  1. 用户使用 mpv 和 Subed 模式观看视频。
  2. 当用户到达剪辑的开始位置时,调用 subed-clip-mark-begin 函数。 此函数将当前视频播放位置存储在一个变量中 (subed-clip-beginning)。
  3. 当用户到达剪辑的结束位置时,调用 subed-clip-mark-end 函数。 此函数:
  • 获取当前的视频播放位置。
  • 使用存储的开始位置和当前结束位置,构建一个 ffmpeg 命令行。
  • 该 ffmpeg 命令指定输入视频文件,开始时间 (-ss),结束时间 (-to),可选的字幕处理 (-filter:v 如果用户指定嵌入字幕),视频编码器 (-c:v libx264),音频编码器 (-c:a copy 表示直接复制音频流),和输出文件名 (clip.mp4)。
  • 使用 Emacs 的 call-process 函数执行 ffmpeg 命令。
  1. ffmpeg 裁剪视频,并将结果保存到 clip.mp4 文件中。
10 个赞

EAF做一个APP应该体验更好,哈哈哈哈

2 个赞

那是肯定的

@yibie @manateelazycat 我还真尝试过用 EAF 做一个 eaf-video-editor, 根据 eaf-video-player 改的。

  1. 它把 eaf-video-player 的播放进度,改为一个剪辑栏,并且通过竖线展示“关键帧”;
  2. c 把当前时间点设置为 “剪辑起始/结束” 点。如图灰色的框框,表示哪些时间片需要导出;
  3. 剪辑数据存储倒 org 文件当中,也可以编辑 org 文件的内容来微调;
  4. e export 即可导出剪辑的文件。

剪辑页面:

存储为 org 文本:

还有一些小功能例如:

  1. 在目标视频里添加纯文本帧:[[eaf-ve-text:Hello:10]] 添加10 秒显示 Hello;
  2. 导出前预览剪辑结果:跳过为标记的时间片段。
6 个赞

我也曾经想实现一个类似的,但是用ffmpeg截取片段总是不精确,好像它只能通过关键帧定位,而不是精确的时间戳,所以最后还是使用更专业的软件了,可以截取非关键帧

Wow, 我把 eaf-video-editor 添加到首页和自动安装脚本了。

是不是直接实现ffmpeg 的elisp bind 更好呀,感觉套工具并不好用

没用,Elisp这边没有多线程, 你接什么过来都会在Emacs这边卡住。

你用EAF框架,你想做啥都可以。