#命令行 #解码 #视频处理 #命令行工具 #otrkey #在线电视录制器

应用 otr

otr可解码并剪切从在线电视录制器https://onlinetvrecorder.com/下载的视频文件。

6个版本 (破坏性更新)

0.11.1 2024年5月8日
0.9.0 2024年2月9日
0.8.0 2024年1月29日
0.7.0 2024年1月11日
0.6.2 2024年1月4日

#44 in 视频

GPL-3.0-or-later

61KB
995

Crates.io REUSE status

otr

otr是一款命令行工具,可以从在线电视录制器(OTR)解码并剪切视频文件。它运行在Linux和macOS上。

支持的架构有

目录

功能

解码

otr解码OTRKEY文件(即从OTR下载的编码视频文件)。解码功能基于eddy14的工作,他逆向工程了OTRKEY文件格式,请参阅他的博客文章 [德语,由PyroPeter镜像]。

解码包括验证OTRKEY文件和解码文件的校验和。

剪切

otr使用FFmpegFFMS2剪切视频。剪切精确到帧。也就是说,即使剪切间隔的边界不在关键帧上,剪切也会精确地在那个边界进行。为了实现这一点,可能需要重新编码视频的部分。

关于剪切列表的确定和选择,有两种不同的选项

  1. otr会自动从剪切列表提供商cutlist.at下载并选择剪切列表

    如果可用多个剪切列表,otr优先选择评分高的那些。

  2. 可以在命令行上指定剪切间隔

    当cutlist.at无法为视频提供剪辑列表时,此选项可能是有意义的。在这种情况下,剪辑间隔可以手动使用视频编辑器(例如,在Linux上可以使用AvidemuxOpenShotShotcut)来确定,并通过命令行输入otr。otr可以将此类自制的剪辑列表上传到cutlist.at,使其公开可用。

快速、并发处理

otr试图尽可能快地处理文件。视频文件是顺序解码的(即,一个接一个),但每个文件都是使用并发线程解码的,以充分利用CPU能力。对于剪辑,使用FFmpeg的多线程功能。

自动处理otrkey文件

可以为otrkey文件创建一个专用的MIME类型。otr可以将其定义为默认应用程序。此存储库包含Linux所需的文件。

简单使用

虽然otr是一个命令行应用程序,但其使用方法相当简单。例如,如果您已从OTR下载了一些OTRKEY文件,则命令otr process处理所有文件(即,它们被解码,下载剪辑列表,然后剪辑文件)。使用专用MIME类型,它甚至更简单:双击OTRKEY文件即可启动otr。此外,otr还有专门的子命令用于解码和剪辑视频,提供了更多选项。

安装

Linux

手动安装

这适用于Linux和macOS。请确保安装FFmpeg和FFMS2(需要二进制文件ffmsindex),因为otr需要这两者来剪辑视频。

要下载otr,通过以下方式克隆此存储库:

git clone https://gitlab.com/mipimipi/otr.git

之后,通过执行以下命令构建otr:

cd otr
make

最后,以root身份执行以下命令以安装otr:

make install

使用软件包管理器安装

对于Arch Linux(以及其他可以从Arch用户存储库安装软件包的Linux发行版),有AUR软件包otrotr-git。这些软件包也作为二进制文件通过nerdstuff存储库提供。

OTRKEY MIME类型

对于Linux,此存储库的resources文件夹包含两个文件,用于为OTRKEY文件创建专用MIME类型,并使otr成为该类型的默认应用程序。只需将它们复制到您机器的相应文件夹中即可。

cp resources/otr.desktop /usr/share/applications/.
cp resources/otrkey_mime.xml /usr/share/mime/packages/.

由于otr现在是唯一可以处理新MIME类型文件的程序,因此如果您双击otrkey文件,它应该会自动启动。

macOS

请参阅手动安装。如果您首选的播放器是Quicktime,则可能需要根据视频文件格式安装插件。否则,必须使用不同的播放器 - 例如,使用VLC

配置

可以通过创建一个JSON格式的配置文件来配置otr。它命名为otr.json,必须存储在您操作系统默认配置目录中。那就是 ...

  • <XDG-CONFIG-HOME-DIR>在Linux上,而在大多数情况下,<XDG-CONFIG-HOME-DIR>等于~/.config
  • ~/Library/Application Support在macOS上

配置文件具有以下结构

{
	"working_dir": "<PATH TO YOUR OTR WORKING DIRECTORY>",
	"decoding": {
		"user": "<YOUR OTR USER>",
		"password": "<YOUR OTR PASSWORD>",
},
	"cutting": {
		"min_cutlist_rating": <MINIMUM CUT LIST RATING>
		"submit_cutlists": <true/false>
		"cutlist_at_access_token": <ACCESS TOKEN REQUIRED FOR CUTLIST.AT>
		"cutlist_rating": <DEFAULT CUT LIST RATING>
	}
}

所有参数都是可选的,或者有默认值,或者可以被相应的命令行参数覆盖。下表解释了详细信息

参数 描述 必选 默认 CLI 参数
working_directory OTR 的工作目录 可选 ~/Videos/OTR 在 Linux 上,~/Movies/OTR 在 macOS 上
userpassword 在线电视录制器的访问数据 解码视频时必选 没有默认值 是 (--user/-u--password/-p)
min_cutlist_rating cutlist.at 的剪辑列表必须具有的最小评级,才能被 otr 接受用于剪辑视频 可选 如果没有给出此参数,所有剪辑列表都将被接受 是 (--min-rating)
submit_cutlists 是否将自创建的剪辑列表提交到 cutlist.at。要上传剪辑列表,需要一个 cutlist.at 的访问令牌 可选 如果没有给出此参数,则不会提交自创建的剪辑列表
cutlist_at_access_token 针对 cutlist.at 的用户特定访问令牌 上传自创建的剪辑列表时必选 没有默认值
cutlist_rating 自创建的剪辑列表的评级 可选 如果没有给出此参数,评级将为 0(即,剪辑列表将被视为占位符,不会提供给其他用户) 是 (--rating)

工作目录

otr 需要一个工作目录。在此目录中,创建子目录 EncodedDecodedCut。因此,目录结构如下

<otr working dir>
    |
    |- Encoded
    |
    |- Decoded
    |   |- Archive
    |
    |- Cut

视频文件根据其处理状态存储在这里。例如,Cut 包含已剪辑的视频文件,Decoded 包含尚未剪辑的解码文件(可能发生视频可以解码但不能剪辑的情况,因为剪辑列表尚未存在)。如果视频已剪辑,则未剪辑版本存储在 Decoded/Archive 下,以便用户在结果不满意时可以重复剪辑。

运行otr

otr 有不同的子命令。

otr process

otr process 处理作为命令行参数提交的所有视频文件,或者存储在 工作目录 中的所有视频文件。

otr 需要视频文件名称的特定模式(即 OTR 使用的模式)。有关编码和解码文件的伪正则表达式表示法,请参阅模式

<name-of-video>_YY.MM.DD_hh-mm_<TV-station>_<a-number>_TVOON_DE.mpg(.|.HQ|.HD).<format>(.otrkey)?

otr decode

otr decode 允许解码单个视频。有关详细信息,请参阅命令行帮助。

otr cut

otr cut 允许剪辑单个视频。用于此的剪辑列表可以自动从 cutlist.at 选择和下载,或者通过命令行参数(作为文件或作为专用剪辑间隔)提交 - 请参阅命令行帮助以获取详细信息。

将剪辑列表提交到 cutlist.at

如果使用自创建的剪辑列表(即,使用 otr cut --cutlist ... 的专用剪辑间隔),otr 可以自动生成相应的剪辑列表文件并将它们上传到 cutlist.at,以便公开提供剪辑列表。这需要在 cutlist.at 上进行注册(即,访问令牌 - $$FRED)。此外,必须相应地设置 otr 配置。如果需要,可以在上传后调整此类剪辑列表的属性。

生成的裁剪列表文件存储在操作系统用户特定缓存目录的子目录OTR中(通常是<XDG-CACHE-HOME-DIR> - 即在大多数情况下 ~/.cache - 在Linux上,~/Library/Caches在macOS)。上传后,这些文件不再需要,可以删除。

详细程度

命令行标志--verbose/-v定义了otr的消息输出详细程度。使用--quiet/-q,则没有消息,请参阅命令行帮助以获取更多信息。

许可证

GNU公共许可证v3.0

依赖项

~12–28MB
~394K SLoC