ffmpeg supporting EVC codec and file formats.

ffevc

ffmpeg supporting EVC codec and file formats.

MPEG-5 Essential Video Coding (EVC) integration with FFmpeg project.

It is supported under Linux and Windows.

Prequisities

  1. Install build dependencies

    sudo apt-get update -qq && sudo apt-get -y install \
    autoconf \
    automake \
    build-essential \
    cmake \
    pkg-config \
    libsdl2-dev
  2. Install in system xeve encoder (main profile)

    Detailed and latest info is in xeve.

  3. Install in system xevd decoder

    Detailed and latest info is in xevd.

Build

To enable EVC in FFmpeg it need to be configured with flags --enable-libxeve and --enable-libxevd

Sample static configuration

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-ffplay \
--enable-libxeve \
--enable-libxevd

Shared configuration

For shred build, FFmpeg need to be configured with flag --enable-shared and removed --pkg-config-flags="--static".

Compilation & installation

PATH="$HOME/bin:$PATH" make -j $(nproc)

make install

Examples

Encode

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 30 -i input_file.yuv -c:v libxeve -f rawvideo output_file.evc

Pass encoder specify parameters by using -xeve-params "<param=value>:<param=value>"

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 30 -i input_file.yuv -c:v libxeve -xeve-params "rc-type=0:q=37:profile=baseline:preset=medium" -f rawvideo output.evc

Encoder parameters help

ffmpeg -help encoder=libxeve

Optional parameters:

  • -threads <num>

Decode

ffmpeg -i input_file.evc -pix_fmt yuv420p output_file.yuv

MP4 container

YUV -> MP4

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 30 -i input_file.yuv -c:v libxeve -f rawvideo output_file.mp4

MP4 -> YUV

ffmpeg -i input_file.mp4 -f rawvideo -pix_fmt yuv420p output_file.yuv

EVC -> MP4

ffmpeg -i input_file.evc -c:v copy output_file.mp4

MP4 -> EVC

ffmpeg -i input_file.mp4 -vcodec copy -an -f rawvideo output_file.evc

References

xeve
xevd
FFmpeg

Comments
  • latest version xevd lib function xevd_pull cause build error

    latest version xevd lib function xevd_pull cause build error

    When I build latest version of ffevc with --enable-libxevd, build error, and I found in ffevc-main/ffmpeg-subtree/libavcodec/libxevd.c

    xevd lib(v0.3.1) function xevd_pull paramters from 3 to 2, so not need third parameter, so do not need third parameter: ret = xevd_pull(ctx->id, &(imgb), &(ctx->opl)); --> ret = xevd_pull(ctx->id, &imgb);

  • Dynamic allocated table for elements of type EVCNALUnitArray has been …

    Dynamic allocated table for elements of type EVCNALUnitArray has been …

    …replaced by a statically allocated array

    It was possible because the number of array's elements is bounded by four. Furthermore, as a byproduct, it was ensured that the code always produces the recommended ordering of SPS-PPS-APS-SEI (which was not guaranteed before).

  • Changes related to FFCodec structure initialization for both libxeve …

    Changes related to FFCodec structure initialization for both libxeve …

    …and libxevd

    Added FF_CODEC_CAP_NOT_INIT_THREADSAFE flags to FFCodec.caps_internal since there is no public information confirming that libxeve and libxevd libraries are thread safe

    Moved FF_CODEC_CAP_INIT_CLEANUP internal flag to FFCodec.caps_internal

  • Changes related to FFCodec structure initialization for both libxeve and libxevd

    Changes related to FFCodec structure initialization for both libxeve and libxevd

    Added FF_CODEC_CAP_NOT_INIT_THREADSAFE flags to FFCodec.caps_internal since there is no public information confirming that libxeve and libxevd libraries are thread safe Moved FF_CODEC_CAP_INIT_CLEANUP internal flag to FFCodec.caps_internal

  • Supporting seeking (fast forward and backward)

    Supporting seeking (fast forward and backward)

    Definitely, we need to support seeking (fast forward and backward) if we want to support mp4 format. I guess this may not be only issue of mp4 container code, but also video codec needs to be investigated. What shall we do support this feature?

Related tags
Example how to use ffmpeg to decode video file.

FFMpeg-decode-example Example how to use ffmpeg to decode video file. Link to article about decode with FFMpeg. Russian article. Example shows you the

Nov 16, 2022
FFmpeg coding tutorial - learn how to code custom transmuxing, transcoding, metadata extraction, frame-by-frame reading and more

FFmpeg code examples FFmpeg coding tutorial - learn how to code custom transmuxing, transcoding, metadata extraction, frame-by-frame reading and more

Nov 29, 2022
A UE4 plugin used ffmpeg library to record/publish game viewport output and in-game audio.

Streaming A UE4 plugin used ffmpeg library to record/publish game viewport output and in-game audio. GPL license beacuse used ffmpeg. Structures GameV

Aug 3, 2022
AAAAnimation - An ASCII Art animation program working with FFmpeg and Qt. Some code is written in assembly.
AAAAnimation - An ASCII Art animation program working with FFmpeg and Qt. Some code is written in assembly.

AAAAnimation About This is a term project of the Assembly Language and System Programming course in NCU. It decodes video with FFmpeg and plays ASCII

May 25, 2022
Open h.265 video codec implementation.
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

Dec 30, 2022
Open Source H.264 Codec

OpenH264 OpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See

Jan 1, 2023
A free, fast, cross-platform volumetric codec for everyone.

The open source Universal Volumetric (".uvol") compressed interchange format for streaming mesh sequences. This project also includes a cross-platform player implementation using h.264 video for texture.

Dec 28, 2022
FFmpeg library inspector

ffmpeg-lib-info Prints the license, version, and configuration for FFmpeg libraries.

Jun 7, 2021
Implement a universal video player based on FFmpeg

qiaopcmusic 实现一个万能视频播放器 添加依赖方式: To get a Git project into your build: Step 1. Add the JitPack repository to your build file Add it in your root build.

Oct 15, 2021
Custom FFMpeg build script which support cross-compile to macOS/iOS/android

FFmpegCompileScript Custom FFMpeg build script which support cross-compile to macOS/iOS/Android Usage: First, init all submodule: git submodule update

Apr 20, 2022
FFmpeg powered audio player in node.js

sange FFmpeg powered audio player in node.js prerequisites node.js cmake sudo apt install cmake c++ compiler sudo apt install g++ gcc ffmpeg sudo apt

Nov 25, 2022
PowerVS is a standalone broadcast video server based on ffmpeg
PowerVS is a standalone broadcast video server based on ffmpeg

PowerVS PowerVS is a standalone broadcast video server based on ffmpeg ?? Table of Contents About Getting Started Running the tests Usage Development

Mar 17, 2022
C++ wrapper for FFmpeg

AvCpp Wrapper for the FFmpeg that simplify usage it from C++ projects. Currently covered next functionality: Core helper & utility classes (AVFrame ->

Dec 22, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

Dec 27, 2022
Official repository of the ISO Base Media File Format Reference Software

ISO Base Media File Format (ISOBMFF) This repository is the official repository for the ISO Base Media File Format Reference Software. The ISO base me

Dec 14, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Jan 2, 2023
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Jan 2, 2023
Olive is a free non-linear video editor for Windows, macOS, and Linux.
Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive is a free non-linear video editor for Windows, macOS, and Linux.

Dec 31, 2022
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support

Vita-Media-Player An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support 1080i output supported on the PSTV natively and on the

Nov 25, 2022