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: [email protected]
Site: http://blog.csdn.net/leixiaohua1020
SourceForge site: https://sourceforge.net/u/leixiaohua1020/wiki/Home/
Github site: http://leixiaohua1020.github.com/
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.
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_video_filter: Put a PNG picture as watermark to a video file, use some libraries such as libavfilter and libavcodec.
- simplest_ffmpeg_video_filter_pure:Add excellent effect to YUV raw data, only use libavfilter. Project Page: https://github.com/leixiaohua1020/simplest_ffmpeg_video_filter
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