ffmediaelement - WPF MediaElement replacement based on FFmpeg

  •        194

FFME is a close (and I'd like to think better) drop-in replacement for Microsoft's WPF MediaElement Control. While the standard MediaElement uses DirectX (DirectShow) for media playback, FFME uses FFmpeg to read and decode audio and video. This means that for those of you who want to support stuff like HLS playback, or just don't want to go through the hassle of installing codecs on client machines, using FFME might just be the answer.First off, let's review a few concepts. A packet is a group of bytes read from the input. All packets are of a specific MediaType (Audio, Video, Subtitle, Data), and contain some timing information and most importantly compressed data. Packets are sent to a Codec and in turn, the codec produces Frames. Please note that producing 1 frome does not always take exactly 1 packet. A packet may contain many frames but also a frame may require several packets for the decoder to build it. Frames will contain timing informattion and the raw, uncompressed data. Now, you may think you can use frames and show pixels on the screen or data to the sound card. We are close, but we still need to do some additional processing. Turns out different Codecs will produce different uncompressed data formats. For example, some video codecs will output pixel data in ARGB, some others in RGB, and some other in YUV420. Therefore, we will need to Convert these frames into something all hardware can use. I call these converted frames, MediaBlocks. These MediaBlocks will contain uncompressed data in standard Audio and Video formats.




Related Projects

lossless-cut - Cross platform GUI tool for lossless trimming / cutting of video and audio files using ffmpeg

  •    Javascript

Simple, cross platform tool for lossless trimming/cutting of video and audio files. Great for rough processing of large video files taken from a video camera, GoPro, drone, etc. It lets you quickly extract the good parts from your videos and discard GBs of data without losing quality. It doesn't do any decoding / encoding and is therefore extremely fast. This app uses the awesome ffmpeg (included) for doing the grunt work. Since LosslessCut is based on Chromium and uses the HTML5 video player, not all ffmpeg supported formats will be supported. The following formats/codecs should generally work: MP4, MOV, WebM, MKV, OGG, WAV, MP3, AAC, H264, Theora, VP8, VP9 For more information about supported formats / codecs, see https://www.chromium.org/audio-video. Note that the MPEG TS format is not supported. See known issues.

kdenlive - Powerful multi-track video editor

  •    C++

Kdenlive is a video editor, which supports DV, AVCHD (experimental support) and HDV editing. Kdenlive relies on several other open source projects, such as FFmpeg and MLT video framework. It is designed to answer all needs, from basic video editing to semi-professionnal work. Kdenlive can read, edit and export Flash video. Kdenlive supports most audio formats for reading, mixing and exporting. It also offers experimental support for non-destructive audio and video codec.

FMJ - Freedom for Media in Java

  •    Java

FMJ is an alternative to Java Media Framework (JMF), while remaining API-compatible with JMF. It aims to produce a single API/Framework which can be used to capture, playback, process, and stream media across multiple platforms. The sub-projects, FFMPEG-Java and Theora-Java, are Java wrappers for FFMPEG and Vorbis respectively. Its sister project is LTI-CIVIL and it is used as the primary video capture device library.

digital_video_introduction - A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding)

  •    Jupyter

A gentle introduction to video technology, although it's aimed at software developers / engineers, we want to make it easy for anyone to learn. This idea was born during a mini workshop for newcomers to video technology. The goal is to introduce some digital video concepts with a simple vocabulary, lots of visual elements and practical examples when possible, and make this knowledge available everywhere. Please, feel free to send corrections, suggestions and improve it.

FFmpeg - Mirror of git://source.ffmpeg.org/ffmpeg.git

  •    C

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata. The offline documentation is available in the doc/ directory.

FFmpegInterop - This is a code sample to make it easier to use FFmpeg in Windows applications.

  •    C++

FFmpegInterop is an open-source project that aims to provide an easy way to use FFmpeg in Windows 10, Windows 8.1, and Windows Phone 8.1 applications for playback of a variety of media contents. FFmpegInterop implements a MediaStreamSource which leverages FFmpeg to process media and uses the Windows media pipeline for playback.One of the advantages of this approach is that audio and video synchronization is handled by the Windows media pipeline. You can also use the Windows built-in audio and video decoders which allows for better power consumption mobile devices.

MPEG Recorder

  •    C

A real-time recorder and compressor of audio and video input for the Windows platforms, using MFC, DirectX, FFMPEG and MPEG4IP. The program is capable of generating avi and mp4 files and streaming MPEG-4 audio and video via Apple Darwin Streaming Server.

CineFX - Professional grade media player

  •    C++

Cinefx is a professional grade media player, based on the jahplayer, that is capable of playing uncompressed video and image sequences at resolutions as high as 2K and 4K in real-time. Cinefx is an offline playback, editing, encoding, animation and visual effects tool based on the Jahshaka technology that allows you to create professional digital media on your desktop. Use the tools that hollywood uses to create blockbuster films and special effects.

mpv - Video player based on MPlayer/mplayer2

  •    C

mpv is a media player based on MPlayer and mplayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. mpv has an OpenGL based video output that is capable of many features loved by videophiles, such as video scaling with popular high quality algorithms, color management, frame timing, interpolation, HDR, and more.

Jave - Java Audio Video Encoder Library

  •    Java

The JAVE (Java Audio Video Encoder) library is Java wrapper on the ffmpeg project. Developers can take take advantage of JAVE to transcode audio and video files from a format to another. You can separate and transcode audio and video tracks, you can resize videos, changing their sizes and proportions and so on. Many other formats, containers and operations are supported by JAVE.

audiosprite - Jukebox/Howler/CreateJS compatible audio sprite generator

  •    Javascript

This is a ffmpeg wrapper that will take in multiple audio files and combines them into a single file. Silent gaps will be put between the parts so that every new part starts from full second and there is at least 1 second pause between every part. The final file will be exported in mp3, ogg, ac3, m4a and caf(IMA-ADPCM) to support as many devices as possible. This tool will also generate a JSON file that is compatible with Howler.js or zynga/jukebox framework. iOS, Windows Phone and some Android phones have very limited HTML5 audio support. They only support playing a single file at a time and loading in new files requires user interaction and has a big latency. To overcome this there is a technique to combine all audio into single file and only play/loop certain parts of that file. zynga/jukebox is a audio framework that uses this technique. digitalfruit/limejs is a HTML5 game framework that includes Jukebox and lets you add audio to your games using audio sprites.

Avidemux - free video editor in all platforms

  •    C++

Avidemux is a free video editor designed for simple cutting, filtering and encoding tasks. It supports many file types, including AVI, DVD compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks can be automated using projects, job queue and powerful scripting capabilities.


  •    CSharp

A .NET audio, sound, and music playback library - a libVLC wrapper. netAudio allows the playback of MPEG files (MP3, etc), WMA, WAV, MP4, OGG, REAL, raw audio, FLAC, FLV, MIDI and SMF, Creative Voice and more. netAudio also provides advanced tag editing functionality via tagLib.


  •    DotNet

A .NET wrapper for the FFMPEG library, designed to be easy to use and as complete as possible!

PiTiVi - Movie editor for Linux desktop

  •    Python

PiTiVi is designed to be a simple video editor to meet the needs of users in the GNOME desktop environment. PiTiVi inherits its capabilities for importing and exporting (rendering) media from the GStreamer framework, or plugins for the GStreamer framework. PiTiVi supports simple media editing capabilities such as trimming, snapping, splitting and cutting of clips. Audio mixing is supported by curves, visualised as line segments drawn over an audio waveform.

ffmpeg-libav-tutorial - [WIP] Learn FFmpeg libav the Hard Way

  •    C

I was looking for a tutorial/book that would teach me how to start to use FFmpeg as a library (a.k.a. libav) and then I found the "How to write a video player in less than 1k lines" tutorial. Unfortunately it was deprecated, so I decided to write this one. Most of the code in here will be in c but don't worry: you can easily understand and apply it to your preferred language. FFmpeg libav has lots of bindings for many languages like python, go and even if your language doesn't have it, you can still support it through the ffi (here's an example with Lua).

PHP-FFMpeg - An object oriented PHP driver for FFMpeg binary

  •    PHP

An Object-Oriented library to convert video/audio files with FFmpeg / AVConv. Check another amazing repo: PHP FFMpeg extras, you will find lots of Audio/Video formats there.


  •    C++

DVDx 4.0 is a very easy to use audio/video encoder and a powerful DVD copier. Read DVDs and audio/video files, encode to popular video formats: (S)VCD/CVD/DVD, Xvid/Divx, MPEG-4, H.264/AVC, QuickTime, Flash Video, Ogg, WebM, AC.3, MP3, MP4/AAC etc.

Accord.NET - Machine learning, Computer vision, Statistics and general scientific computing for .NET

  •    CSharp

The Accord.NET project provides machine learning, statistics, artificial intelligence, computer vision and image processing methods to .NET. It can be used on Microsoft Windows, Xamarin, Unity3D, Windows Store applications, Linux or mobile.

We have large collection of open source products. Follow the tags from Tag Cloud >>

Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.