[![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)