Lenny is a automatic movie detection and conversion tool. It detects unsupported video files and converts them to a different format.
- Search for next video file by detecting mime type with Tika
- Detect current streams with ffprobe
- Compare the streams with supported formats
- If not supported, convert the video
- Go to start
Because I've got a whole collection of old movies in a not ChromeCast compatible format, and I'm annoyed to convert them on my own by hand.
usage: lenny [-h] -s SOURCE -t TARGET -ffprobe FFPROBE -ffmpeg FFMPEG -sv [SUPPORTEDVIDEO [SUPPORTEDVIDEO ...]] -sa [SUPPORTEDAUDIO [SUPPORTEDAUDIO ...]] -sal [SUPPORTEDAUDIOLAYOUT [SUPPORTEDAUDIOLAYOUT ...]] -tv TARGETVIDEO
-ta TARGETAUDIO [-tf TARGETFORMAT] [-do DELETEORIGINAL] [-to TIMEOUT]| Parameter | Description |
|---|---|
| -h | Show some help info |
| -s | Source directory (required) |
| -t | Target directory (required) |
| -ffprobe | Path to FFprobe (defaults to /usr/bin/ffprobe) |
| -ffmpeg | Path to FFmpeg (defaults to /usr/bin/ffmpeg) |
| -sv <[]> | List of supported video formats (defaults to [h264]) |
| -sa <[]> | List of supported audio formats (defaults to [acc, ac3, mp3]) |
| -sal <[]> | List of supported audio layouts (defaults to [stereo]) |
| -tv | Target video to convert to (like h264) |
| -ta | Target audio to convert to (like acc) |
| -tc | Target audio channel amount to use |
| -do | Delete original file after converting |
| -to | Timeout to stop afterwards |
| -dc | Copy files, even if there is no change |
| -si | Do not index all source files before starting |
| -bs | Set the buffer size of the copy handler (defaults to 8192) |
| -mk | Set the marker to be used for the files (defaults to lenny) |
| -ex | Set phrases to mach against in file paths and exclude. Case sensitive! |
What about spaces? Windows got some "special" handling of spaces in paths, therefore using single quotes (') around a path will help, you don't have to use double quotes.
- Add a function to set the supported stream as primary and optionally remove all other unsupported strems
- Add a function to copy the stream, if the stream is in a supported format