雷霄骅开源视音频项目汇总
from: http://blog.csdn.net/leixiaohua1020/article/details/42658139#
作者:雷霄驊, 一個值得懷念的人
本文匯總一下自己視音頻編解碼學習方面的開源項目。這些開源項目大體上可以分成專業領域程序,FFmpeg示例程序,FFmpeg移植程序,多媒體項目示例程序,視音頻編解碼原理學習工程幾個類別。這些類別的詳細含義如下所列。
- 專業領域程序:一些有專業性質的程序。
- FFmpeg示例程序:FFmpeg的類庫的各種示例程序。
- FFmpeg移植程序:FFmpeg項目中移植到Windows的VC平臺下的程序。
- 多媒體項目示例程序:除了FFmpeg之外其他多媒體項目的示例程序。
- 視音頻編解碼學習工程:用于學習視音頻編解碼原理的示例程序。
- “簡介”使用幾句簡短的話介紹開源項目。
- “文章”則是我自己寫的有關該項目的文章。
- “項目主頁”則是該項目的主頁地址。
- 我的SourceForge主頁:https://sourceforge.net/u/leixiaohua1020/wiki/
- 我的Github主頁:http://leixiaohua1020.github.com/
- 我的開源中國主頁:http://git.oschina.net/leixiaohua1020
1. 專業領域程序
專業領域程序指的是主要應用于科學實驗方面的程序。這類程序并不是視音頻技術開發必須的,主要用于研究工作。
1.1 VideoEye
簡介
VideoEye是一個開源的實時視頻分析的軟件。本軟件可以播放和分析視頻數據。它支持多種視頻流輸入方式:HTTP,RTMP,RTSP以及文件等等。該軟件可以實時分析視頻流并能以圖形化的方式呈現其分析結果。
文章
《開源實時視頻碼流分析軟件:VideoEye》
項目主頁
SourceForge:https://sourceforge.net/projects/videoeye/
Github:https://github.com/leixiaohua1020/VideoEye
開源中國:http://git.oschina.net/leixiaohua1020/VideoEye
1.2 TIandSI
簡介
本工具用于計算視頻的時間信息(TI,也稱為時間復雜度),以及空間信息(SI,也稱為空間復雜度),以上兩個指標取自于ITU-R BT.1788標準。
文章
《視頻特性TI(時間信息)和SI(空間信息)的計算工具:TIandSI》
《視頻特性TI(時間信息)和SI(空間信息)的計算工具:TIandSI-壓縮碼流版》
項目主頁
SourceForge:https://sourceforge.net/projects/tiandsi/
Github:https://github.com/leixiaohua1020/TIandSI
開源中國:http://git.oschina.net/leixiaohua1020/TIandSI
2. FFmpeg示例程序
FFmpeg示例程序是我做的最多的一類程序。這些示例程序展示了利用FFmpeg的類庫進行視音頻程序開發的方法,比較適合新手學習FFmpeg。目前這些示例程序已經覆蓋了從流媒體接收,解封裝,解碼,像素轉換,編碼,封裝,流媒體發送所有這些流程。
單擊查看更清晰的圖片
圖中顯示了一個完整的視頻處理流程。按照藍色箭頭指向的順序,從外部協議接收下來的數據依次經過解協議,解封裝,解碼,像素轉換,編碼,封裝,發送這幾個步驟。這些步驟按照處理數據類型的不同,可以分成幾個層次:- 協議層(Protocol Layer):該層處理的數據為符合特定流媒體協議規范的數據,例如http,rtmp,file等。
- 封裝層(Format Layer):該層處理的數據為符合特定封裝格式規范的數據,例如mkv,mp4,flv,mpegts,avi等。
- 編碼層(Codec Layer):該層處理的數據為符合特定編碼標準規范的數據,例如h264,h265,mpeg2,mpeg4等。
- 像素層(Pixel Layer):該層處理的數據為符合特定像素格式規范的數據,例如yuv420p,yuv422p,yuv444p,rgb24等。
下面我們上述幾個層次對FFmpeg示例程序進行歸類。
協議層處理包含以下項目:
- simplest ffmpeg device:使用FFmpeg讀取設備中的媒體數據。
- simplest ffmpeg mem handler:使用FFmpeg讀取內存中的數據。
- simplest ffmpeg streamer:使用FFmpeg發送流媒體數據。
封裝層處理包含以下項目:
- simplest ffmpeg format:使用FFmpeg分離音視頻(demux),封裝音視頻(mux),轉換封裝格式(remux)。
編碼層處理包含以下項目:
- simplest ffmpeg player:使用FFmpeg解碼播放視頻數據。
- simplest ffmpeg audio player:使用FFmpeg解碼播放音頻數據。
- simplest ffmpeg video encoder:使用FFmpeg編碼視頻數據。
- simplest ffmpeg audio encoder:使用FFmpeg編碼音頻數據。
- simplest ffmpeg picture encoder:使用FFmpeg編碼圖片。
像素層處理包含以下項目:
- simplest ffmpeg swscale:使用FFmpeg轉換像素格式。
- simplest ffmpeg video filter:使用FFmpeg給視頻添加濾鏡效果。
《FFmpeg示例程序合集》可以通過Git批量獲取:
?FFmpeg示例程序合集-Git批量獲取腳本
《FFmpeg示例程序合集》也可以在VC++/CL.exe/MinGW/Linux GCC/Mac OS等多個平臺上編譯通過:
?FFmpeg示例程序合集-批量編譯腳本
下面逐一列出這些項目的信息。
2.1 Simplest ffmpeg player
最簡單的基于FFMPEG的視頻播放器
簡介
本程序實現了視頻文件的解碼和顯示。是最簡單的FFmpeg視頻解碼方面的教程。通過學習本例子可以了解FFmpeg的解碼流程。
項目包含6個工程:
simplest_ffmpeg_player:標準版,FFmpeg學習的開始。
simplest_ffmpeg_player_su:SU(SDL Update)版,加入了簡單的SDL的Event。
simplest_ffmpeg_decoder:一個包含了封裝格式處理功能的解碼器。使用了libavcodec和libavformat。
simplest_ffmpeg_decoder_pure:一個純凈的解碼器。只使用libavcodec(沒有使用libavformat)。
simplest_video_play_sdl2:使用SDL2播放YUV的例子。
simplest_ffmpeg_helloworld:輸出FFmpeg類庫的信息。
文章
《100行代碼實現最簡單的基于FFMPEG+SDL的視頻播放器(SDL1.x)》
《最簡單的基于FFMPEG+SDL的視頻播放器 ver2 (采用SDL2.0)》
《最簡單的基于FFmpeg的解碼器-純凈版(不包含libavformat)》
《最簡單的基于FFMPEG+SDL的視頻播放器:拆分-解碼器和播放器》
《最簡單的基于FFMPEG的Helloworld程序》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegplayer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_player
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_player
2.2 simplest ffmpeg audio player
最簡單的基于FFMPEG的音頻播放器
簡介
本程序實現了音頻的解碼和播放。是最簡單的FFmpeg音頻解碼方面的教程。通過學習本例子可以了解FFmpeg的解碼流程。
項目包含3個工程:
simplest_ffmpeg_audio_player:基于FFmpeg+SDL的音頻解碼器
simplest_ffmpeg_audio_decoder:音頻解碼器。使用了libavcodec和libavformat。
simplest_audio_play_sdl2:使用SDL2播放PCM采樣數據的例子。
文章
《最簡單的基于FFMPEG+SDL的音頻播放器》
《最簡單的基于FFMPEG+SDL的音頻播放器 ver2 (采用SDL2.0)》
《最簡單的基于FFMPEG+SDL的音頻播放器:拆分-解碼器和播放器》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegaudioplayer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_audio_player
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_audio_player
2.3 simplest ffmpeg picture encoder
最簡單的基于FFMPEG的圖像編碼器
簡介
本程序實現了YUV420P像素數據編碼為JPEG圖片。是最簡單的FFmpeg編碼方面的教程。通過學習本例子可以了解FFmpeg的編碼流程。
文章
《最簡單的基于FFMPEG的圖像編碼器(YUV編碼為JPEG)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegpictureencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_picture_encoder
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_picture_encoder
2.4 simplest ffmpeg video encoder
最簡單的基于FFMPEG的視頻編碼器
簡介
本程序實現了YUV像素數據編碼為視頻碼流(H.265,H264,MPEG2,VP8等等)。是最簡單的FFmpeg視頻編碼方面的教程。通過學習本例子可以了解FFmpeg的編碼流程。
它包含以下兩個子項目:
simplest_ffmpeg_video_encoder:普通版編碼器。使用libavcodec和libavformat編碼并且封裝視頻。
simplest_ffmpeg_video_encoder_pure:純凈版編碼器。僅使用libavcodec編碼視頻,不使用libavformat。
文章
《最簡單的基于FFMPEG的視頻編碼器(YUV編碼為H.264)》
《最簡單的基于FFmpeg的視頻編碼器-更新版(YUV編碼為HEVC(H.265))》
《最簡單的基于FFmpeg的編碼器-純凈版(不包含libavformat)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegvideoencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_video_encoder
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_video_encoder
2.5 simplest ffmpeg audio encoder
最簡單的基于FFMPEG的音頻編碼器
簡介
本程序實現了音頻PCM采樣數據編碼為壓縮碼流(MP3,WMA,AAC等)。是最簡單的FFmpeg音頻編碼方面的教程。通過學習本例子可以了解FFmpeg的編碼流程。
文章
《最簡單的基于FFMPEG的音頻編碼器(PCM編碼為AAC)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegaudioencoder/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_audio_encoder
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_audio_encoder
2.6 simplest ffmpeg format
最簡單的基于FFMPEG的封裝格式處理
簡介
該解決方案包含了使用FFmpeg進行封裝格式處理的各種例子:
simplest_ffmpeg_demuxer:視音頻分離器。
simplest_ffmpeg_demuxer_simple:視音頻分離器(簡化版)。
simplest_ffmpeg_muxer:視音頻復用器。
simplest_ffmpeg_remuxer:封裝格式轉換器。
文章
《最簡單的基于FFmpeg的封裝格式處理:視音頻分離器簡化版(demuxer-simple)》
《最簡單的基于FFmpeg的封裝格式處理:視音頻分離器(demuxer)》
《最簡單的基于FFmpeg的封裝格式處理:視音頻復用器(muxer)》
《最簡單的基于FFMPEG的封裝格式處理:封裝格式轉換(remuxer)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegformat/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_format
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_format
2.7 simplest ffmpeg streamer
最簡單的基于FFmpeg的推流器(推送RTMP)
簡介
本例子實現了推送本地視頻至流媒體服務器(以RTMP為例)。是使用FFmpeg進行流媒體推送最簡單的教程。
文章
《最簡單的基于FFmpeg的推流器(以推送RTMP為例)》
《最簡單的基于FFMPEG的推流器附件:收流器》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegstreamer/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_streamer
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_streamer
2.8 simplest ffmpeg video filter
最簡單的基于FFmpeg的AVfilter例子(水印疊加)
簡介
本程序使用包含下面兩個項目:
simplest_ffmpeg_video_filter:可以將一張PNG圖片作為水印疊加到視頻上,結合使用了libavfilter,libavcodec等類庫。
simplest_ffmpeg_video_filter_pure:可以給YUV像素數據加特效,只用了libavfilter庫。
文章
《最簡單的基于FFmpeg的AVfilter例子(水印疊加)》
《最簡單的基于FFmpeg的AVfilter的例子-純凈版》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegvideofilter/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_video_filter
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_video_filter
2.9 simplest ffmpeg swscale
最簡單的基于FFmpeg的libswscale的示例
簡介
本程序是最簡單的基于FFmpeg的libswscale進行像素處理的示例。它包含了兩個工程:
simplest_ffmpeg_swscale: 最簡單的libswscale的教程。
simplest_pic_gen: 生成各種測試圖片的工具。
文章
《最簡單的基于FFmpeg的libswscale的示例(YUV轉RGB)》
《最簡單的基于FFmpeg的libswscale的示例附件:測試圖片生成工具》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegswscale/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_swscale
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_swscale
2.10 simplest ffmpeg device
最簡單的基于FFmpeg的AVDevice例子
簡介
本工程包含兩個基于FFmpeg的libavdevice的例子:
simplest_ffmpeg_grabdesktop:屏幕錄制。
simplest_ffmpeg_readcamera:讀取攝像頭。
文章
《最簡單的基于FFmpeg的AVDevice例子(屏幕錄制)》
《最簡單的基于FFmpeg的AVDevice例子(讀取攝像頭)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegdevice/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_device
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_device
2.11 simplest ffmpeg mem handler
最簡單的基于FFmpeg的內存讀寫例子
簡介
本程序實現了對內存中的視頻數據的讀寫。包含兩個工程:
simplest_ffmpeg_mem_player:播放內存中視頻數據的播放器。
simplest_ffmpeg_mem_transcoder:轉碼內存中數據的轉碼器。
文章
《最簡單的基于FFmpeg的內存讀寫的例子:內存播放器》
《最簡單的基于FFmpeg的內存讀寫的例子:內存轉碼器》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegmemhandler/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_mem_handler
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_mem_handler
2.12 simplest ffmpeg avutil
最簡單的基于FFmpeg的AVUtil例子 (AVLog, AVOption等)
簡介
本程序是FFmpeg中的libavutil的示例,目前包含:
AVLogAVOption (AVClass)
AVDictionary
ParseUtil
文章
《最簡單的基于FFmpeg的AVUtil例子 (AVLog, AVOption等)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestffmpegavutil/
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_avutil
開源中國:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_avutil
2.12 simplest ffmpeg mobile
最簡單的基于FFmpeg的移動端的例子
簡介
本解決方案包含了使用FFmpeg在移動端處理多媒體的各種例子:[Android]
simplest_android_player: 基于安卓接口的視頻播放器
simplest_ffmpeg_android_helloworld: 安卓平臺下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_android_decoder: 安卓平臺下最簡單的基于FFmpeg的視頻解碼器
simplest_ffmpeg_android_decoder_onelib: 安卓平臺下最簡單的基于FFmpeg的視頻解碼器-單庫版
simplest_ffmpeg_android_streamer: 安卓平臺下最簡單的基于FFmpeg的推流器
simplest_ffmpeg_android_transcoder: 安卓平臺下移植的FFmpeg命令行工具
simplest_sdl_android_helloworld: 移植SDL到安卓平臺的最簡單程序
[IOS]
simplest_ios_player: 基于IOS接口的視頻播放器
simplest_ffmpeg_ios_helloworld: IOS平臺下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_ios_decoder: IOS平臺下最簡單的基于FFmpeg的視頻解碼器
simplest_ffmpeg_ios_streamer: IOS平臺下最簡單的基于FFmpeg的推流器
simplest_ffmpeg_ios_transcoder: IOS平臺下移植的ffmpeg.c命令行工具
simplest_sdl_ios_helloworld: 移植SDL到IOS平臺的最簡單程序
[Windows]
simplest_ffmpeg_windowsphone_helloworld: Windows Phone平臺下基于FFmpeg的HelloWorld程序
文章
最簡單的基于FFmpeg的移動端例子:Android HelloWorld
最簡單的基于FFmpeg的移動端例子:Android 視頻解碼器
最簡單的基于FFmpeg的移動端例子:Android 視頻解碼器-單個庫版
最簡單的基于FFmpeg的移動端例子:Android 推流器
最簡單的基于FFmpeg的移動端例子:Android 視頻轉碼器
最簡單的基于FFmpeg的移動端例子附件:Android 自帶播放器
最簡單的基于FFmpeg的移動端例子附件:SDL Android HelloWorld
最簡單的基于FFmpeg的移動端例子:IOS HelloWorld
最簡單的基于FFmpeg的移動端例子:IOS 視頻解碼器
最簡單的基于FFmpeg的移動端例子:IOS 推流器
最簡單的基于FFmpeg的移動端例子:IOS 視頻轉碼器
最簡單的基于FFmpeg的移動端例子附件:IOS自帶播放器
最簡單的基于FFmpeg的移動端例子:Windows Phone HelloWorld
項目主頁
Github:https://github.com/leixiaohua1020/simplest_ffmpeg_mobile
開源中國:https://git.oschina.net/leixiaohua1020/simplest_ffmpeg_mobile
3. FFmpeg移植程序
FFmpeg移植程序是將FFmpeg項目中的命令行工具“ffplay”和“ffmpeg”的源代碼(ffplay.c和ffmpeg.c)移植到VC下后編寫的程序。移植后的程序保留了原本命令行工具的大部分功能,并且使用MFC做了一套界面,使用起來相對方便一些。其實相比與實際應用來說,這兩個工程更加適合作為學習材料??梢酝ㄟ^它們研究播放器,轉碼器的原理。
3.1 FFPLAY for MFC
簡介
本工程將ffmpeg項目中的ffplay播放器(ffplay.c)移植到了VC的環境下。并且使用MFC做了一套簡單的界面。
文章
《ffplay播放器移植VC的工程:ffplay for MFC》
項目主頁
SourceForge:https://sourceforge.net/projects/ffplayformfc/
Github:https://github.com/leixiaohua1020/ffplaymfc
開源中國:http://git.oschina.net/leixiaohua1020/ffplay-for-MFC
3.2 FFMPEG for MFC
簡介
本工程將ffmpeg工程中的ffmpeg轉碼器(ffmpeg.c)移植到了VC環境下。并且使用MFC做了一套簡單的界面。文章
《ffmpeg轉碼器移植VC的工程:ffmpeg for MFC》
項目主頁
SourceForge:https://sourceforge.net/projects/ffmpegformfc/
Github:https://github.com/leixiaohua1020/ffmpegmfc
開源中國:http://git.oschina.net/leixiaohua1020/ffmpeg-for-MFC
4. 多媒體項目示例程序
除了做了基于FFmpeg的多媒體程序之外,還做了一些基于其他多媒體項目的示例。如下文所列。
4.1 simplest media play
最簡單的視音頻播放示例
簡介
本工程包含了使用各種API(Direct3D,OpenGL,GDI,DirectSound,SDL2)播放多媒體例子。其中音頻輸入為PCM采樣數據。輸出至系統的聲卡播放出來。視頻輸入為YUV/RGB像素數據。輸出至顯示器上的一個窗口播放出來。
通過本工程的代碼初學者可以快速學習使用這幾個API播放視頻和音頻的技術。一共包括了如下幾個子工程:simplest_audio_play_directsound:使用DirectSound播放PCM音頻采樣數據。
simplest_audio_play_sdl2:使用SDL2播放PCM音頻采樣數據。
simplest_video_play_direct3d:使用Direct3D的Surface播放RGB/YUV視頻像素數據。
simplest_video_play_direct3d_texture:使用Direct3D的Texture播放RGB視頻像素數據。
simplest_video_play_gdi:使用GDI播放RGB/YUV視頻像素數據。
simplest_video_play_opengl:使用OpenGL播放RGB/YUV視頻像素數據。
simplest_video_play_opengl_texture:使用OpenGL的Texture播放YUV視頻像素數據。
simplest_video_play_sdl2:使用SDL2播放RGB/YUV視頻像素數據。
? ? ? ? ? ? ? ? ? ??? ? ? ? ??
文章
《最簡單的視音頻播放示例1:總述》
《最簡單的視音頻播放示例2:GDI播放YUV, RGB》
《最簡單的視音頻播放示例3:Direct3D播放YUV,RGB(通過Surface)》
《最簡單的視音頻播放示例4:Direct3D播放RGB(通過Texture)》
《最簡單的視音頻播放示例5:OpenGL播放RGB/YUV》
《最簡單的視音頻播放示例6:OpenGL播放YUV420P(通過Texture,使用Shader)》
《最簡單的視音頻播放示例7:SDL2播放RGB/YUV》
《最簡單的視音頻播放示例8:DirectSound播放PCM》
《最簡單的視音頻播放示例9:SDL2播放PCM》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestmediaplay/
Github:https://github.com/leixiaohua1020/simplest_media_play
開源中國:http://git.oschina.net/leixiaohua1020/simplest_media_play
4.2 simplest encoder
最簡單的編碼器例子
簡介
該解決方案包含了幾個常見的編碼器的使用示例:
simplest_vpx_encoder:最簡單的基于libvpx的視頻編碼器
simplest_x264_encoder:最簡單的基于libx264的視頻編碼器
simplest_x265_encoder:最簡單的基于libx265的視頻編碼器
? ? ? ?? ? ? ?文章
《最簡單的視頻編碼器:編譯(libx264,libx265,libvpx)》
《最簡單的視頻編碼器:基于libx264(編碼YUV為H.264)》
《最簡單的視頻編碼器:基于libx265(編碼YUV為H.265)》
《最簡單的視頻編碼器:基于libvpx(編碼YUV為VP8)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestencoder/
Github:https://github.com/leixiaohua1020/simplest_encoder
開源中國:http://git.oschina.net/leixiaohua1020/simplest_encoder
4.3 simplest libRTMP example
最簡單的基于librtmp的示例
簡介
本工程包含了LibRTMP的使用示例,包含如下子工程:simplest_librtmp_receive: 接收RTMP流媒體并在本地保存成FLV格式的文件。
simplest_librtmp_send_flv: 將FLV格式的視音頻文件使用RTMP推送至RTMP流媒體服務器。
simplest_librtmp_send264: 將內存中的H.264數據推送至RTMP流媒體服務器。
文章《最簡單的基于librtmp的示例:接收(RTMP保存為FLV)》
《最簡單的基于librtmp的示例:發布(FLV通過RTMP發布)》
《最簡單的基于librtmp的示例:發布H.264(H.264通過RTMP發布)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestlibrtmpexample/
Github:https://github.com/leixiaohua1020/simplest_librtmp_example
開源中國: http://git.oschina.net/leixiaohua1020/simplest_librtmp_example4.4 simplest libVLC example
最簡單的基于libVLC的例子
簡介
本工程是包含了一些基于libVLC的示例程序。一共包含了如下幾個子程序。
playerGUI: 最簡單的基于libVLC的播放器-圖形界面版。simplest_libvlc_example: 最簡單的基于libVLC的播放器。
simplest_libvlc_streamer: 最簡單的基于libVLC的推流器。
文章
《最簡單的基于libVLC的例子:最簡單的基于libVLC的視頻播放器》
《最簡單的基于libVLC的例子:最簡單的基于libVLC的視頻播放器(圖形界面版)》
《最簡單的基于libVLC的例子:最簡單的基于libVLC的推流器》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestlibvlcexample/
Github:https://github.com/leixiaohua1020/simplest_libvlc_example
開源中國:http://git.oschina.net/leixiaohua1020/simplest_libvlc_example
4.5 simplest directshow example
最簡單的基于DirectShow的示例
簡介
本程序包含了DirectShow開發的示例程序。適合DirectShow初學者進行學習。它包含了以下幾個子程序:
simplest_directshow_player: 最簡單的基于DirectShow的視頻播放器。
simplest_directshow_player_custom: 最簡單的基于DirectShow的視頻播放器(Custom)。
playerGUI: 最簡單的基于DirectShow的播放器-圖形界面版。
simplest_directshow_info: 最簡單的Directshow信息顯示例子。
simplest_directshow_filter: 目前還未完成。
文章
《最簡單的基于DirectShow的示例:視頻播放器》
《最簡單的基于DirectShow的示例:視頻播放器圖形界面版》
《最簡單的基于DirectShow的示例:視頻播放器自定義版》
《最簡單的基于DirectShow的示例:獲取Filter信息》項目主頁
SourceForge:https://sourceforge.net/projects/simplestdirectshowexample/
Github:https://github.com/leixiaohua1020/simplest_directshow_example
開源中國:http://git.oschina.net/leixiaohua1020/simplest_directshow_example
5. 視音頻編解碼學習工程
視音頻編解碼學習工程主要用于學習編解碼的原理。這幾個工程都是簡單的“碼流分析”工具。他們可以分析不同格式的多媒體數據:TS封裝格式,FLV封裝格式,H.264碼流,AAC碼流,JPEG壓縮圖片。
這幾個程序我完成的比較早,是我在學習視音頻技術初期邊看理論邊實踐著做出來的。因此功能上還有一些不足,一直也沒有時間修正,有時間再把它們統一更新一下。
5.1 H264 Stream Analysis
H.264分析器文章
《視音頻編解碼學習工程:H.264分析器》
項目主頁
SourceForge:https://sourceforge.net/projects/h264streamanalysis/
Github:https://github.com/leixiaohua1020/h264_analysis
開源中國:http://git.oschina.net/leixiaohua1020/H264_Analysis
5.2 AAC Stream Analysis
AAC格式分析器
文章
《視音頻編解碼學習工程:AAC格式分析器》
項目主頁
SourceForge: https://sourceforge.net/projects/aacstreamanalysis/5.3 FLV Format Analysis
FLV封裝格式分析器
文章
《視音頻編解碼學習工程:FLV封裝格式分析器》
項目主頁
SourceForge:https://sourceforge.net/projects/flvformatanalysis/
5.4 TS Format Analysis
TS封裝格式分析器
文章
《視音頻編解碼學習工程:TS封裝格式分析器》
項目主頁
SourceForge: https://sourceforge.net/projects/tsformatanalysis/5.5 JPEG Analysis
JPEG分析器
文章
《視音頻編解碼學習工程:JPEG分析器》
項目主頁
SourceForge: https://sourceforge.net/projects/jpeganalysis/
6. 其他語言工程
一些不是使用C/C++寫的流媒體相關的工程。
6.1 Simplest Video Website
最簡單的視頻網站(JavaEE+FFmpeg)簡介
本程序是一個最簡單的視頻網站系統?;贘avaEE的SSH (Strut2 + Spring + Hibernate)和FFmpeg。
文章
《最簡單的視頻網站(JavaEE+FFmpeg)》
項目主頁
開源中國:http://git.oschina.net/leixiaohua1020/simplest_video_website
Github:https://github.com/leixiaohua1020/simplest_video_website
在線演示:http://www.velab.com.cn:8080/svw/
6.2 Simplest flashmedia example
?最簡單的基于Flash的流媒體示例簡介
本程序是一個Flash流媒體示例的合集。其中包含了使用Actionscript編寫的推流器和播放器,以及網頁播放器。本工程包含如下基于Flash技術的流媒體的例子:
simplest_as3_rtmp_streamer:最簡單的RTMP推流器(基于ActionScript)
rtmp_sample_player_adobe: 從Adobe Flash Media Sever提取出來的測試播放器
rtmp_sample_player_wowza: 從Wowza服務器中提取出來的測試播放器
rtmp_sample_player_flowplayer: 基于FlowPlayer的RTMP/HTTP播放器(添加RTMP plugin)
rtmp_sample_player_videojs: 基于VideoJS的RTMP/HTTP播放器
rtmp_sample_player_jwplayer: 基于JWplayer的RTMP/HTTP播放器
hls_sample_player_flowplayer: 基于FlowPlayer的HLS播放器(添加HLS plugin)
hls_video_player_html5: 基于HTML5的HLS/HTTP播放器
activex_vlc_player: ?基于VLC的ActiveX控件的播放器
文章
《最簡單的基于Flash的流媒體示例:RTMP推送和接收(ActionScript)》
《最簡單的基于Flash的流媒體示例:網頁播放器(HTTP,RTMP,HLS)》
項目主頁
SourceForge:https://sourceforge.net/projects/simplestflashmediaexample/
Github:https://github.com/leixiaohua1020/simplest_flashmedia_example
開源中國:http://git.oschina.net/leixiaohua1020/simplest_flashmedia_example
7. 附錄:程序匯總表
1. 專業領域程序
1.1 VideoEye
1.2 TIandSI 2. FFmpeg示例程序
2.1 Simplest ffmpeg player | 最簡單的基于FFMPEG的視頻播放器
包括了如下幾個子工程: simplest_ffmpeg_player:標準版,FFmpeg學習的開始。 simplest_ffmpeg_player_su:SU(SDL Update)版,加入了簡單的SDL的Event。 simplest_ffmpeg_decoder_pure:一個純凈的解碼器只使用libavcodec(沒有使用libavformat)。 2.2 simplest ffmpeg audio player | 最簡單的基于FFMPEG的音頻播放器
2.3 simplest ffmpeg picture encoder | 最簡單的基于FFMPEG的圖像編碼器
2.4 simplest ffmpeg video encoder | 最簡單的基于FFMPEG的視頻編碼器
包括了如下幾個子工程: simplest_ffmpeg_video_encoder:普通版編碼器。使用libavcodec和libavformat編碼并且封裝視頻。 simplest_ffmpeg_video_encoder_pure:純凈版編碼器。僅使用libavcodec編碼視頻,不使用libavformat。 2.5 simplest ffmpeg audio encoder | 最簡單的基于FFMPEG的音頻編碼器
2.6 simplest ffmpeg format | 最簡單的基于FFMPEG的封裝格式處理
包括了如下幾個子工程: simplest_ffmpeg_demuxer:視音頻分離器。 simplest_ffmpeg_demuxer_simple:視音頻分離器(簡化版)。 simplest_ffmpeg_muxer:視音頻復用器。 simplest_ffmpeg_remuxer:封裝格式轉換器。 2.7 simplest ffmpeg streamer | 最簡單的基于FFmpeg的推流器(推送RTMP)
2.8 simplest ffmpeg video filter | 最簡單的基于FFmpeg的AVfilter例子(水印疊加)
2.9 simplest ffmpeg swscale | 最簡單的基于FFmpeg的libswscale的示例
包括了如下幾個子工程: simplest_ffmpeg_swscale: 最簡單的libswscale的教程。 simplest_pic_gen: 生成各種測試圖片的工具。 2.10?simplest ffmpeg device | 最簡單的基于FFmpeg的AVDevice例子
包括了如下幾個子工程: simplest_ffmpeg_grabdesktop:屏幕錄制。 simplest_ffmpeg_readcamera:讀取攝像頭。 2.11?simplest ffmpeg mem handler | 最簡單的基于FFmpeg的內存讀寫例子
包括了如下幾個子工程: simplest_ffmpeg_mem_player:播放內存中視頻數據的播放器。
simplest_ffmpeg_mem_transcoder:轉碼內存中數據的轉碼器。
2.12?simplest ffmpeg avutil | 最簡單的基于FFmpeg的AVUtil例子
2.13?simplest ffmpeg mobile | 最簡單的基于FFmpeg的移動端的例子
本解決方案包含了使用FFmpeg在移動端處理多媒體的各種例子:
[Android]
simplest_android_player: 基于安卓接口的視頻播放器
simplest_ffmpeg_android_helloworld: 安卓平臺下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_android_decoder: 安卓平臺下最簡單的基于FFmpeg的視頻解碼器
simplest_ffmpeg_android_decoder_onelib: 安卓平臺下最簡單的基于FFmpeg的視頻解碼器-單庫版
simplest_ffmpeg_android_streamer: 安卓平臺下最簡單的基于FFmpeg的推流器
simplest_ffmpeg_android_transcoder: 安卓平臺下移植的FFmpeg命令行工具
simplest_sdl_android_helloworld: 移植SDL到安卓平臺的最簡單程序
[iOS]
simplest_ios_player: 基于IOS接口的視頻播放器
simplest_ffmpeg_ios_helloworld: IOS平臺下基于FFmpeg的HelloWorld程序
simplest_ffmpeg_ios_decoder: IOS平臺下最簡單的基于FFmpeg的視頻解碼器
simplest_ffmpeg_ios_streamer: IOS平臺下最簡單的基于FFmpeg的推流器
simplest_ffmpeg_ios_transcoder: IOS平臺下移植的ffmpeg.c命令行工具
simplest_sdl_ios_helloworld: 移植SDL到IOS平臺的最簡單程序
[Windows]
simplest_ffmpeg_windowsphone_helloworld: Windows Phone平臺下基于FFmpeg的HelloWorld程序
3.1 FFPLAY for MFC
3.2 FFMPEG for MFC 4. 多媒體項目示例程序
4.1 simplest media play | 最簡單的視音頻播放示例
包括了如下幾個子工程: simplest_audio_play_directsound:使用DirectSound播放PCM音頻采樣數據。 simplest_audio_play_sdl2:使用SDL2播放PCM音頻采樣數據。 simplest_video_play_direct3d:使用Direct3D的Surface播放RGB/YUV視頻像素數據。 simplest_video_play_direct3d_texture:使用Direct3D的Texture播放RGB視頻像素數據。 simplest_video_play_gdi:使用GDI播放RGB/YUV視頻像素數據。 simplest_video_play_opengl:使用OpenGL播放RGB/YUV視頻像素數據。 simplest_video_play_opengl_texture:使用OpenGL的Texture播放YUV視頻像素數據。 simplest_video_play_sdl2:使用SDL2播放RGB/YUV視頻像素數據。 4.2 simplest encoder | 最簡單的編碼器例子
包括了如下幾個子工程: simplest_vpx_encoder:最簡單的基于libvpx的視頻編碼器 simplest_x264_encoder:最簡單的基于libx264的視頻編碼器 simplest_x265_encoder:最簡單的基于libx265的視頻編碼器 4.3 simplest libRTMP example | 最簡單的基于librtmp的示例
包括了如下幾個子工程: simplest_librtmp_receive: 接收RTMP流媒體并在本地保存成FLV格式的文件。 simplest_librtmp_send_flv: 將FLV格式的視音頻文件使用RTMP推送至RTMP流媒體服務器。 simplest_librtmp_send264: 將內存中的H.264數據推送至RTMP流媒體服務器。 4.4 simplest libVLC example | 最簡單的基于libVLC的例子
包括了如下幾個子工程: playerGUI: 最簡單的基于libVLC的播放器-圖形界面版。 simplest_libvlc_example: 最簡單的基于libVLC的播放器。 simplest_libvlc_streamer: 最簡單的基于libVLC的推流器。 4.5 simplest directshow example | 最簡單的基于DirectShow的示例
包括了如下幾個子工程: simplest_directshow_player: 最簡單的基于DirectShow的視頻播放器。 simplest_directshow_player_custom: 最簡單的基于DirectShow的視頻播放器(Custom)。 playerGUI: 最簡單的基于DirectShow的播放器-圖形界面版。 simplest_directshow_info: 最簡單的Directshow信息顯示例子。 simplest_directshow_filter: 目前還未完成。 5.視音頻編解碼學習工程
5.1 H264 Stream Analysis | H.264分析器
5.2 AAC Stream Analysis | AAC格式分析器
5.3 FLV Format Analysis | FLV封裝格式分析器
5.4 TS Format Analysis | TS封裝格式分析器
5.5 JPEG Analysis | JPEG分析器 6.其他語言工程
6.1 Simplest Video Website | 最簡單的視頻網站(JavaEE+FFmpeg)
6.2 Simplest flashmedia example | 最簡單的基于Flash的流媒體示例
總結
以上是生活随笔為你收集整理的雷霄骅开源视音频项目汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux minicom usb串口
- 下一篇: IBM发明世界首个人造神经元,人工智能的