kala13x / libxmedia

Implementation of audio/video transmuxing library based on FFMPEG API
MIT License
6 stars 0 forks source link
chapters decoder decoding demuxer demuxing encoder encoding ffmpeg llibrary metadata multimedia muxer muxing streamer streaming transcoder transcoding

MIT License C/C++ CI CMake SMake

libxmedia

Implementation of audio/video transmuxing functionality based on FFMPEG API with a fully functional example.

Installation

There are several ways to build and install the project but at first, the libxutils library and the FFMPEG development packages must be installed on the system.

Using included script

After installing libxutils and ffpmeg libraries, the simplest way to build and install a project is to use the included script:

git clone https://github.com/kala13x/libxmedia.git && ./libxmedia/build.sh --install

List options that build script supports:

You can either choose cmake, smake or make as the tool argument, but cmake is recommended on platforms other than the Linux. If the tool will not be specified the script will use make (included Makefile) as default.

Using CMake

If you have a CMake tool installed in your operating system, here is how project can be built and installed using cmake:

git clone https://github.com/kala13x/libxmedia.git
cd libxmedia
cmake . && make
sudo make install

Using SMake

SMake is a simple Makefile generator tool for the Linux/Unix operating systems:

git clone https://github.com/kala13x/libxmedia.git
cd libxmedia
smake && make
sudo make install

Using Makefile

The project can also be built with a pre-generated Makefile for the Linux.

git clone https://github.com/kala13x/libxmedia.git
cd libxmedia
make
sudo make install

XMedia

xmedia is an example command-line tool for transcoding and remuxing media files. It allows you to convert and stream media from one format to another with various customization options.

Usage
xmedia [options]
Command-line options:
Option Syntax Type Description
-i path string Input file or stream path
-o path string Output file or stream path
-e format string Input format name (example: v4l2)
-f format string Output format name (example: mp4)
-x format string Video scale format (example: aspect)
-p format string Video pixel format (example: yuv420p)
-s format string Audio sample format (example: s16p)
-k num:den number:number Video frame rate (example: 90000:3000)
-q num:den number:number Video frame rate (example: 90000:3000)
-c count number Audio channel count (example: 2)
-v codec string Output video codec (example: h264)
-a codec string Output audio codec (example: mp3)
-w width number Output video width (example: 1280)
-h height number Output video height (example: 720)
-b bytes number IO buffer size (default: 65536)
-t type string Timestamp calculation type
-m path string Metadata file path
-n shift number Fix non-motion PTS/DTS
-z Custom output handling
-l Loop transcoding/remuxing
-r Remux only
-d Debug logs
-u Usage information

Video Scale Formats

Example
xmedia -i /dev/video0 -o dump.mp4 -v h264 -p yuv420p -x aspect -w 1280 -h 720

Timestamp Calculation Types

Example
xmedia -i input.avi -o output.mp4 -t source

Metadata File Syntax

Metadata files allow you to specify additional information for your media. The syntax is as follows:

Metadata File Example:

00:00:00|00:00:40|Opening chapter
00:00:40|00:10:32|Another chapter
00:10:32|00:15:00|Final chapter
Comment|Created with xmedia
Title|Example meta
Album|Examples
Example
xmedia -i file.mp4 -ro remuxed.mp4 -m meta.txt