日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

雷霄骅开源视音频项目汇总

發布時間:2025/7/25 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 雷霄骅开源视音频项目汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

from: http://blog.csdn.net/leixiaohua1020/article/details/42658139#

作者:雷霄驊, 一個值得懷念的人



本文匯總一下自己視音頻編解碼學習方面的開源項目。這些開源項目大體上可以分成專業領域程序,FFmpeg示例程序,FFmpeg移植程序,多媒體項目示例程序,視音頻編解碼原理學習工程幾個類別。這些類別的詳細含義如下所列。

  • 專業領域程序:一些有專業性質的程序。
  • FFmpeg示例程序:FFmpeg的類庫的各種示例程序。
  • FFmpeg移植程序:FFmpeg項目中移植到Windows的VC平臺下的程序。
  • 多媒體項目示例程序:除了FFmpeg之外其他多媒體項目的示例程序。
  • 視音頻編解碼學習工程:用于學習視音頻編解碼原理的示例程序。
下面按照類別分別記錄每個項目。每個程序的介紹分成“簡介”,“文章”,“項目主頁”三個部分:
  • “簡介”使用幾句簡短的話介紹開源項目。
  • “文章”則是我自己寫的有關該項目的文章。
  • “項目主頁”則是該項目的主頁地址。
此前一直以SourceForge作為各個項目的主頁地址。后來受到不少人的建議,將代碼在Github上也保存了一份;國內的開源中國的代碼托管做的也不錯,因此也在開源中國上保存了一份代碼。此外,在SourceForge上做了一個簡單的Wiki,在Github上做了一個簡單的Blog,方便對這兩個網站上的項目進行查找和訪問。上述三個網站上的項目列表可以通過下列地址訪問。
  • 我的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。目前這些示例程序已經覆蓋了從流媒體接收,解封裝,解碼,像素轉換,編碼,封裝,流媒體發送所有這些流程。


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的示例,目前包含:

AVLog
AVOption (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_example

4.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)

簡介

本程序是一個最簡單的視頻網站系統。基于JavaEE的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_player: ?最簡單的RTMP播放器(基于ActionScript)
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. FFmpeg移植程序
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的流媒體示例

總結

以上是生活随笔為你收集整理的雷霄骅开源视音频项目汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。