otr-utils 0.5.0

Utilities for decoding and cutting video files that were downloaded from Online TV Recorder <https://onlinetvrecorder.com/>
Documentation
<!--
SPDX-FileCopyrightText: 2024 Michael Picht <mipi@fsfe.org>
SPDX-FileContributor: Michael Picht <mipi@fsfe.org>

SPDX-License-Identifier: CC-BY-NC-SA-4.0
-->

[![Crates.io](https://img.shields.io/crates/v/otr-utils.svg)](https://crates.io/crates/otr-utils)
[![REUSE status](https://api.reuse.software/badge/gitlab.com/mipimipi/otr-utils)](https://api.reuse.software/info/gitlab.com/mipimipi/otr-utils)

# otr-utils

otr-utils provides tools to decode and cut video files from [Online TV Recorder](https://www.onlinetvrecorder.com/) (OTR). It is the basis of the commandline tool [otr](https://gitlab.com/mipimipi/otr).

## Decoding

Decoding of OTRKEY files (i.e., encoded video files downloaded from OTR) is supported. The decoding functionality is based on the work of eddy14, who reverse-engineered the OTRKEY file format, see [his blog post](https://pyropeter.eu/41yd.de/blog/2010/04/18/otrkey-breaker/) [German, mirrored by [PyroPeter](https://github.com/pyropeter)].

## Cutting

Cutting of decoded videos is done by using [FFmpeg](https://ffmpeg.org/) together with [FFMS2](https://github.com/FFMS/ffms2). It is done **accurate to frames**. I.e., even if a boundary of a cut interval is not at a key frame, cutting is done exactly at that boundary. To achieve this, parts of the video might have to be re-encoded.

With respect to cut list determination and selection, there are two different options:

1. Cut lists are downloaded from the cut list provider [cutlist.at]http://cutlist.at and selected automatically

    If multiple cut lists are available, those with a high rating are preferred.

1. A cut list is passed explicitely to the cut function as vector of cut intervals

	This option can make sense if cutlist.at cannot provide a cut list for a video. In this case, the cut function can upload such cut lists to [cutlist.at]http://cutlist.at to make them publicly available. This requires a registration at cutlist.at (i.e., an access token - $$FRED).

## License

[GNU Public License v3.0](https://gitlab.com/mipimipi/otr-utils/blob/main/LICENSE)