Location via proxy:   
[Report a bug]   [Manage cookies]                
View on GitHub

Lei Xiaohua's learning resource about video/audio technics

About me

I'm a PHD student in Communication University of China. I have focused on video/audio technics for several years. During these years I made some demos about FFmpeg and other multimedia projects. I share these demos here and wish they can help the beginnner of video/audio technics.

Info about me
Name: Lei Xiaohua
Education:
Bachelor: CUC - Radio and TV Engineering
Master: CUC - Digital TV Technics
Doctor: CUC - Digital Video Technics
Location: Chaoyang, Beijing, China
Email: leixiaohua1020@126.com
Site: http://blog.csdn.net/leixiaohua1020
SourceForge site: https://sourceforge.net/u/leixiaohua1020/wiki/Home/
Github site: http://leixiaohua1020.github.com/

Test picture


My projects List

My projects can be devided to following categories:

  • Experiment Projects
  • FFmpeg Development Examples
  • FFmpeg Transplant Projects
  • Multimedia Projects Development Examples
  • Small Analysis Tools

Experiment Projects

VideoEye

open-source stream analysis software
Project Page: https://github.com/leixiaohua1020/VideoEye

TIandSI

Tools used to calculate video's TI and SI
Project Page: https://github.com/leixiaohua1020/TIandSI


FFmpeg Development Examples

FFmpeg Examples can be used in different aspect of video / audio processing. The following picture shows the process of transcoding. It shows the position of these demos during the process of transcoding. Test picture


I also make some batch files for these FFmpeg demos:

Git

Git Clone All: simplest_ffmpeg_demos_git_clone_all.sh
Git Update All: simplest_ffmpeg_demos_git_pull_all.sh
Git Reset All: simplest_ffmpeg_demos_git_reset_all.sh
Git Archive All: simplest_ffmpeg_demos_git_archive_all.sh

Compile

VC++ Compile All: simplest_ffmpeg_demos_compile_devenv_all.bat
CL.exe Compile All: simplest_ffmpeg_demos_compile_cl_all.bat
MinGW Compile All: simplest_ffmpeg_demos_compile_mingw_all.sh
GCC (Linux/MacOS) Compile All: simplest_ffmpeg_demos_compile_gcc_all.sh


Simplest ffmpeg player

The simplest video player based on FFmpeg
It contains 3 project:

  • simplest_ffmpeg_player: Standard Version, suitable for biginner.
  • simplest_ffmpeg_player_su: SU(SDL Update)Version, Add SDL Event.
  • simplest_ffmpeg_decoder: A decoder that can demux container format. Uses libavcodec and libavformat.
  • simplest_ffmpeg_decoder_pure: A pure decoder. Only use libavcodec (Without libavformat).
  • simplest_video_play_sdl2. Example about using SDL2 play YUV data.
  • simplest_ffmpeg_helloworld: Output informations about FFmpeg libraries.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_player

Simplest ffmpeg audio player

The simplest audio player based on FFmpeg
It contains 3 project:

  • simplest_ffmpeg_audio_player: Audio player based on FFmpeg and SDL.
  • simplest_ffmpeg_audio_decoder: Audio decoder. Uses libavcodec and libavformat.
  • simplest_audio_play_sdl2: Example about using SDL2 play PCM data.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_audio_player

Simplest ffmpeg pic encoder

The simplest picture encoder based on FFmpeg
Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_picture_encoder

Simplest ffmpeg video encoder

The simplest video encoder based on FFmpeg
It contains 2 project:

  • simplest_ffmpeg_video_encoder: Simplest video encoder. It uses libavcodec and libavformat.
  • simplest_ffmpeg_video_encoder_pure: Pure video encoder. It only uses libavcodec to encode video (without libavformat).

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_video_encoder

Simplest ffmpeg audio encoder

The simplest audio encoder based on FFmpeg
Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_audio_encoder

Simplest ffmpeg streamer

The simplest streamer based on FFmpeg
It contains 2 project:

  • simplest_ffmpeg_streamer: stream local media files to streaming media server.
  • simplest_ffmpeg_receiver: save streaming media to a file.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_streamer

Simplest ffmpeg mem handler

ffmpeg's example about read/write from memory
It contains 2 project:

  • simplest_ffmpeg_mem_player:Video Player that play video data in memory.
  • simplest_ffmpeg_mem_transcoder:Video Converter that convert video data in memory.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_mem_handler

Simplest ffmpeg device

FFmpeg's libavdevice examples
This Project contains 2 examples based on FFmpeg's libavdevice:

  • simplest_ffmpeg_grabdesktop: Screen Capture.
  • simplest_ffmpeg_readcamera: Read Camera.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_device

Simplest ffmpeg format

FFmpeg's mux/demux/remux examples
This Project contains examples about Video Fomat Processing based on FFmpeg:

  • simplest_ffmpeg_demuxer: Split Audio and Video bitstreams.
  • simplest_ffmpeg_demuxer_simple: Split Audio and Video bitstreams.
  • simplest_ffmpeg_muxer: Put Audio and Video bitstreams together.
  • simplest_ffmpeg_remuxer: Change Container Fomat of Video file.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_format

Simplest ffmpeg video filter

use FFmpeg's AVFilter to add watermark in a video file
This project contains 2 projects:

Simplest ffmpeg swscale

Examples about handle pixel data using libswscale in FFmpeg
Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_swscale

Simplest FFmpeg AVUtil

Example about FFmpeg's libavutil
Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_avutil

Simplest ffmpeg Mobile

ffmpeg examples in Android / IOS
This project contains examples about handling multi-media data based on FFmpeg on mobile device.

  • [Android]
  • simplest_android_player: Video player based on Android API
  • simplest_ffmpeg_android_helloworld: Simplest HelloWorld program based on FFmpeg in Android.
  • simplest_ffmpeg_android_decoder: Simplest decoder based on FFmpeg in Android.
  • simplest_ffmpeg_android_decoder_onelib: Simplest decoder based on FFmpeg in Android - One Library.
  • simplest_ffmpeg_android_streamer: Simplest streamer based on FFmpeg in Android.
  • simplest_ffmpeg_android_transcoder: Transcoder transplant from ffmpeg.c in Android.
  • simplest_sdl_android_helloworld: Simplest program based on SDL in Android.
  • [IOS]
  • simplest_ios_player: Video player based on IOS API
  • simplest_ffmpeg_ios_helloworld: Simplest HelloWorld program based on FFmpeg in IOS.
  • simplest_ffmpeg_ios_decoder: Simplest decoder based on FFmpeg in IOS.
  • simplest_ffmpeg_ios_streamer: Simplest streamer based on FFmpeg in IOS.
  • simplest_ffmpeg_ios_transcoder: Transcoder transplant from ffmpeg.c in IOS.
  • simplest_sdl_ios_helloworld: Simplest program based on SDL in IOS.
  • [Win Phone]
  • simplest_ffmpeg_winphone_helloworld: Simplest HelloWorld program based on FFmpeg in Windows Phone.

Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_mobile


FFmpeg Transplant Projects

ffplay for MFC

ffplay transplant to MFC
Project Page: https://github.com/leixiaohua1020/ffplaymfc

ffmpeg for MFC

ffmpeg transplant to MFC
Project Page: https://github.com/leixiaohua1020/ffmpegmfc


Multimedia Projects Development Examples

simplest media play

Examples about video/audio's playing
It contains following programs:

  • simplest_audio_play_directsound:Play PCM raw audio data using DirectSound.
  • simplest_audio_play_sdl2:Play PCM raw audio data using SDL2.
  • simplest_video_play_direct3d:Play RGB/YUV raw video data using Direct3D's Surface.
  • simplest_video_play_direct3d_texture:Play RGB raw video data using Direct3D's Texture.
  • simplest_video_play_gdi:Play RGB/YUV raw video data using GDI.
  • simplest_video_play_opengl:Play RGB/YUV raw video data using OpenGL.
  • simplest_video_play_opengl_texture:Play YUV raw video data using OpenGL's Texture.
  • simplest_video_play_sdl2:Play RGB/YUV raw video data using SDL2.

Project Page: https://github.com/leixiaohua1020/simplest_media_play

simplest encoder

Examples about video encoders
This solutions contains examples about video encoders:

  • simplest_vpx_encoder: simplest encoder based on libvpx
  • simplest_x264_encoder: simplest encoder based on libx264
  • simplest_x265_encoder: simplest encoder based on libx265

Project Page: https://github.com/leixiaohua1020/simplest_encoder

simplest libRTMP example

Examples about usage of libRTMP
It contains following projects:

  • simplest_librtmp_receive: Receive RTMP streams and save as FLV file.
  • simplest_librtmp_send_flv: Stream FLV file to RTMP streaming server.
  • simplest_librtmp_send264: Stream H.264 raw data to RTMP streaming server.

Project Page: https://github.com/leixiaohua1020/simplest_librtmp_example

simplest libVLC example

Examples about libVLC
It contains following project:

  • playerGUI: Simplest libVLC Player GUI.
  • simplest_libvlc_example: Simplest libVLC Player.
  • simplest_libvlc_streamer: Simplest libVLC Streamer.

Project Page: https://github.com/leixiaohua1020/simplest_libvlc_example

simplest directshow example

Simple Examples about DirectShow
It contains following projects:

  • simplest_directshow_player: Simplest DirectShow Player.
  • simplest_directshow_player_custom: Simplest DirectShow Player (Custom).
  • playerGUI: Simplest DirectShow Player GUI.
  • simplest_directshow_info: Simplest DirectShow Info.
  • simplest_directshow_filter: Unfinished yet.

Project Page: https://github.com/leixiaohua1020/simplest_directshow_example

simplest flashmedia example

simple examples about using flash player to play RTMP/HTTP/HLS
This project contains following examples about Flash streaming media:

  • simplest_as3_rtmp_player: Simplest RTMP Player(ActionScript)
  • simplest_as3_rtmp_streamer: Simplest RTMP Streamer (ActionScript)
  • rtmp_sample_player_adobe: Sample Player extracted from Adobe Flash Media Server
  • rtmp_sample_player_wowza: Sample Player extracted from Wowza Server
  • rtmp_sample_player_flowplayer: RTMP/HTTP Player based on FlowPlayer (with RTMP plugin)
  • rtmp_sample_player_videojs: RTMP/HTTP Player based on VideoJS
  • rtmp_sample_player_jwplayer: RTMP/HTTP Player based on JWPlayer
  • hls_sample_player_flowplayer: HLS Player based on FlowPlayer (with HLS plugin)
  • hls_video_player_html5: HLS/HTTP Player based on HTML5
  • activex_vlc_player: Video Player based on VLC ActiveX

Note: Some example couldn't work directly. You should upload them to web server such as Nginx or Apache.

Project Page: https://github.com/leixiaohua1020/simplest_flashmedia_example

simplest_video_website

simplest video website based JavaEE and FFmpeg
This software is the simplest video website. It support live broadcast and VOD

Project Page: https://github.com/leixiaohua1020/simplest_video_website


Small Analysis Tools

H264 Analysis

A H.264 stream analysis software based on MFC
Project Page: https://github.com/leixiaohua1020/h264_analysis