A wrapper around ffmpeg to make it work in a concurrent and memory-buffered fashion.

Overview

Media Fixer

Have you ever had a film or TV show that your TV wasn't able to play its audio? Well this program is for you. Media Fixer is a program which converts given media to a playable format. It's a kind of wrapper for ffmpeg that works with multiple files in a concurrent & memory-buffered fashion.

Requirements

Python >= 3.8 is required. (CPython and PyPy are both supported)

Additionally ffmpeg and mediainfo are required for this program to run. They can be installed on Ubuntu as the following way:

sudo apt install ffmpeg mediainfo

Installation

Media fixer can be either installed directly via pip:

pip install media-fixer

Or it can be installed from the source:

git clone https://github.com/simsekhalit/media-fixer.git
python3 -m pip install ./media-fixer

Manual

$ python3 -m media_fixer --help
usage: media-fixer [-h] [--audio AUDIO_STREAM] [--input-options INPUT_OPTIONS] [--max-memory MAX_MEMORY] [--output-options OUTPUT_OPTIONS] SOURCE [SOURCE ...] TARGET

A wrapper around ffmpeg to make it work in a concurrent and memory-buffered fashion.

positional arguments:
  SOURCE                source files/directories (works recursively)
  TARGET                target directory

optional arguments:
  -h, --help            show this help message and exit
  --audio AUDIO_STREAM  select index of audio stream to be used (zero-indexed). defaults to 0
  --input-options INPUT_OPTIONS
                        specify custom input file options for ffmpeg (overrides default ones)
  --max-memory MAX_MEMORY
                        specify allowed max memory usage as percent
  --output-options OUTPUT_OPTIONS
                        specify custom output file options for ffmpeg (overrides default ones)

For more information: https://github.com/simsekhalit/media-fixer

Media Fixer can be used in one of the two modes, namely Auto and Custom.

Auto Mode

If no output options are given, Media Fixer works in Auto mode. Initially, an audio stream is selected with --audio. For each given file, existing audio codec is detected and if it's in DTS format, it's converted to EAC-3. Otherwise, it's just copied to the target file as it is. While doing that only the selected audio stream is processed. Rest of the audio streams are stripped out. This is useful for saving space since generally there are many audio streams in a film (English, French, Spanish, etc.), but only one of them is needed.

Custom Mode

If output options are given with --output-options, Media Fixer works in custom mode. All the given files are converted according to given output options.

Examples

SOURCE and TARGET arguments are interpreted in the same way in both modes.
Single or multiple source paths can be given. For any given source path:
If it's a file, its corresponding target is written under the target path.
If it's a directory, then it's traversed recursively and all the files under it are processed. Source directory tree is generated as the same way in the target path. Corresponding target files are written accordingly.


ℹ️ MediaInfo is a helpful tool for identifying audio streams and their formats. It can be downloaded from https://mediaarea.net/en/MediaInfo


1. There is a film and its 3rd audio (which is the audio stream with index 2) is chosen to be used:

python3 -m media_fixer --audio 2 '/mnt/HDD/Matrix 4.mkv' '/mnt/MyUSB'

Matrix 4.mkv is processed and the resulting file is written to /mnt/USB/Matrix 4.mkv


2. There is a folder which contains a season of a TV show:

/mnt/HDD/Brooklyn Nine-Nine Season 1
/mnt/HDD/Brooklyn Nine-Nine Season 1/S01E01.mkv
/mnt/HDD/Brooklyn Nine-Nine Season 1/S01E02.mkv
/mnt/HDD/Brooklyn Nine-Nine Season 1/S01E03.mkv
...

Following command is executed:

python3 -m media_fixer '/mnt/HDD/Brooklyn Nine-Nine Season 1' '/mnt/USB'

All the episodes are processed and written to /mnt/USB/Brooklyn Nine-Nine Season 1


3. Custom ffmpeg options wanted to be used:

python3 -m media_fixer --output-options '-c:v copy -c:a aac -c:s copy -f matroska -map 0:v -map 0:a:2 -map 0:s' '/mnt/HDD/Brooklyn Nine-Nine Season 1' '/mnt/USB'

Following ffmpeg command is run for each source file:

ffmpeg -i $source -c:v copy -c:a aac -c:s copy -f matroska -map 0:v -map 0:a:2 -map 0:s -y -

$source is replaced with the source file's path and output is captured from stdout, buffered there and then written to the corresponding target path.

You might also like...
Your own movie streaming service. Easy to install, easy to use. Download, manage and watch your favorite movies conveniently from your browser or phone. Install it on your server, access it anywhere and enjoy.
Your own movie streaming service. Easy to install, easy to use. Download, manage and watch your favorite movies conveniently from your browser or phone. Install it on your server, access it anywhere and enjoy.

Vigilio Your own movie streaming service. Easy to install, easy to use. Download, manage and watch your favorite movies conveniently from your browser

MoviePy is a Python library for video editing,  can read and write all the most common audio and video formats
MoviePy is a Python library for video editing, can read and write all the most common audio and video formats

MoviePy is a Python library for video editing: cutting, concatenations, title insertions, video compositing (a.k.a. non-linear editing), video processing, and creation of custom effects. See the gallery for some examples of use.

Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images to include in the video.
Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images to include in the video.

Text2Video Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images

Takes a video as an input and creates a video which is suitable to upload on Youtube Shorts and Tik Tok (1080x1920 resolution).

Shorts-Tik-Tok-Creator Takes a video as an input and creates a video which is suitable to upload on Youtube Shorts and Tik Tok (1080x1920 resolution).

Real-time video and audio streams over the network, with Streamlit.

streamlit-webrtc Example You can try out the sample app using the following commands.

Been busy guys, will be reviewing and integrating pull requests shortly. Thanks to all contributors!               LATEST RELEASE: 6.0.0 - flatpak @ https://flathub.org/apps/details/com.ozmartians.VidCutter - snap @ https://snapcraft.io/vidcutter - see https://github.com/ozmartian/vidcutter/releases for more details...
Docker container to expose a local RTMP, RTSP, and HLS stream for all your Wyze cameras including v3

Docker container to expose a local RTMP, RTSP, and HLS stream for all your Wyze cameras including v3. No Third-party or special firmware required.

KonomiTV: Kind and Optimized Next brOadcast watching systeM Infrastructure for TV
KonomiTV: Kind and Optimized Next brOadcast watching systeM Infrastructure for TV

備考・注意事項 現在 α 版で、まだ実験的なプロダクトです。通常利用には耐えないでしょうし、サポートもできません。 安定しているとは到底言いがたい品質ですが、それでも構わない方のみ導入してください。 使い方などの説明も用意できていないため、自力でトラブルに対処できるエンジニアの方以外には現状おすすめ

Youtube as covert-channel - Control systems remotely and execute commands by uploading videos to Youtube
Youtube as covert-channel - Control systems remotely and execute commands by uploading videos to Youtube

covert-tube A program to control systems remotely by uploading videos to Youtube using Python to create the videos and the listener, emulating some ma

Owner
Halit Şimşek
Software Engineer at Atlassian, Opsgenie
Halit Şimşek
Video stream image stacking -- live version

video stream image stacking v2 -- live version A very simple streamed video image stacking code! Version 2.1 left mouse click to select a small region

Chakravarthy Mathiazhagan 1 Jan 03, 2022
Python script for extracting audio from video files and creating Mel spectrograms

video2spectrogram About This package is meant to automate the process of extracting audio files from videos and saving the plots computed from these a

Alexandros Stergiou 1 Oct 28, 2021
pyYotubemanager is full web automated bot capable of General tasks like:- Uploading a Video , Downloading , adding Title , Description , Listing types , adding Thumbnail

PyYoutubemanager Explore the docs » View Demo · Report Bug · Request Feature About The Project PyYotubemanager is full web automated bot capable of Ge

4 Jun 29, 2022
Simple background blur for your webcam

backgroundblur Simple background blur for your webcam. This script will capture your webcams output, add a blur effect to the background and output th

Stefan Wagner 4 Dec 07, 2021
In this project, we will be blurring the background in a live video feed

In this project, we will be blurring the background in a live video feed. This can be further integrated into online meetings, streamings etc.

Hassan Shahzad 2 Jan 06, 2022
plumi video sharing

December 2017 update We are moving tickets from the Plumi tracker (trac.plumi.org) here, for historical reasons. Plumi video sharing system Plumi is a

Plumi 111 Dec 15, 2022
Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images to include in the video.

Text2Video Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images

Josh Chen 19 Nov 22, 2022
This is an example of building a video Question-Answer system using Jina.

example-video-search This is an example of building a video Question-Answer system using Jina. The index data is subtitle files of YouTube videos. Aft

Jina AI 9 Oct 18, 2022
Video stream recording dockerized server using python/ffmpeg.

Stream Recording Server Video stream recording dockerized server using python/ffmpeg. Usage Configuration Prepare .env file, check .env.example for th

GR 2 Jan 14, 2022
Python package to display video in GUI using OpenCV-Python and PySide6

Python package to display video in GUI using OpenCV-Python and PySide6. Introduction cv2PySide6 is a package which provides utility classes and functi

3 Jun 06, 2022
High-performance cross-platform Video Processing Python framework powerpacked with unique trailblazing features :fire:

Releases | Gears | Documentation | Installation | License VidGear is a High-Performance Video Processing Python Library that provides an easy-to-use,

Abhishek Thakur 2.6k Dec 28, 2022
Home Assistant custom component for viewing IP cameras RTSP stream in real time using WebRTC technology

WebRTC Camera Home Assistant custom component for viewing IP cameras RTSP stream in real time using WebRTC technology. Based on: Pion - pure Go implem

Alex X 739 Dec 30, 2022
Python package for Near Duplicate Video Detection (Perceptual Video Hashing) - Get a 64-bit comparable hash-value for any video.

The Python package for near duplicate video detection ⭐️ Introduction Videohash is a Python package for detecting near-duplicate videos (Perceptual Vi

Akash Mahanty 144 Dec 19, 2022
Media player custom component which works with MQTT.

Media player custom component which works with MQTT. I designed this to specifically work with a ESP32 which i used to control a speakercraft amp.

2 Feb 10, 2022
Tweet stream in OBS browser source

OBS-Twitter-Stream OBSなどの配信ソフトのブラウザソースで特定のキーワードを含んだツイートを表示します 使い方 使い方については以下のwikiを御覧ください https://github.com/CubeZeero/OBS-Twitter-Stream/wiki ダウンロード W

Cube 23 Dec 18, 2022
Source files for the data lake demo video using the AWS TICKIT database

Data Lake Demo Source code for video demonstration detailed in the post, Building a Simple Data Lake on AWS . Build a simple data lake on AWS using a

Gary A. Stafford 97 Dec 23, 2022
Repository to create Ascii art in CMD based on video file.

Made to take any file format, and transform it into ascii art, displayed as a video in the cmd. If the cmd formatting is wrong, try zooming a little and remember to make cmd fullscreen. I made my cmd

60 Dec 17, 2022
pygamevideo module helps developer to embed videos into their Pygame display

pygamevideo module helps developer to embed videos into their Pygame display. Audio playback doesn't use pygame.mixer.

Kadir Aksoy 10 Dec 28, 2022
An easy to use GUI based video to image sequence converter (and vice versa).

Vdo & Img Conversion Tools This is a quick conversion tool made with python that can save you a lot of time. With this tool you can extract image sequ

Akash Bora 3 Sep 18, 2022
Use ZWO astronomy camera as an IP camera.

ZWO Astronomy Camera as IP Camera Astronomy cameras are known for their high sensitivity and flexibility on whether to have IR pass through and bayer

Yan Wang 9 Oct 15, 2022