FFmpeg基礎(chǔ)知識?
第一點:一個視頻播放流程?
通??吹揭曨l格式:mp4、mov、flv、wmv等等…
稱之為:封裝格式
播放視頻流程.png
第二點:視頻播放器
兩種模式播放器
第一種:可視化界面播放器(直接用戶直觀操作->簡單易懂)
騰訊視頻、愛奇藝視頻、QQ影音、暴風(fēng)影音、快播、優(yōu)酷等等…
第二種:非可視化界面播放器->命令操作播放器->用戶看不懂,使用起來非常麻煩
FFmpeg->ffplay(命令)播放器(內(nèi)置播放器)
vlc播放器、mplayer播放器
第三點:播放器信息查看工具
整個視頻信息:MediaInfo工具->幫助我們查看視頻完整信息
二進制查看信息:直接查看視頻二進制數(shù)據(jù)(0101010)->UItraEdit
視頻單項信息
封裝格式信息工具->Elecard Format Analyzer
視頻編碼信息工具->Elecard Stream Eye
視頻像素信息工具->YUVPlayer
音頻采樣數(shù)據(jù)工具->Adobe Audition
第四點:音視頻->封裝格式?
1、封裝格式:mp4、mov、flv、wmv等等…
封裝格式列表.png
2、封裝格式作用?
視頻流+音頻流按照格式進行存儲在一個文件中
封裝格式作用.png
3、MPEG2-TS格式?
視頻壓縮數(shù)據(jù)格式:MPEG2-TS
特定:數(shù)據(jù)排版,不包含頭文件,數(shù)據(jù)大小固定(188byte)的TS-Packet
MPEG2-TS格式.png
4、FLV格式?
優(yōu)勢:由于它形成的文件極小、加載速度極快,使得網(wǎng)絡(luò)觀看視頻文件成為可能,
它的出現(xiàn)有效地解決了視頻文件導(dǎo)入Flash后,使導(dǎo)出的SWF文件體積龐大,不能在網(wǎng)絡(luò)上很好的使用等問題。
FLV格式.png
文件結(jié)構(gòu):FLV是一個二進制文件,由文件頭(FLV header)和很多tag組成。tag又可以分成三類:audio,video,script,分別代表音頻流,視頻流,腳本流(關(guān)鍵字或者文件信息之類)。
FLV文件=FLV頭文件+ tag1+tag內(nèi)容1 + tag2+tag內(nèi)容2 + ...+... + tagN+tag內(nèi)容N。
FLV頭文件:(9字節(jié))
1-3: 前3個字節(jié)是文件格式標(biāo)識(FLV 0x46 0x4C 0x56).
4-4: 第4個字節(jié)是版本(0x01)
5-5: 第5個字節(jié)的前5個bit是保留的必須是0.
6-9: 第6-9的四個字節(jié)還是保留的.其數(shù)據(jù)為 00000009 .
整個文件頭的長度,一般是9(3+1+1+4)
第五點:視頻編碼數(shù)據(jù)了解一下
1、視頻編碼作用?
將視頻像素數(shù)據(jù)(YUV、RGB)進行壓縮成為視頻碼流,從而降低視頻數(shù)據(jù)量。(減小內(nèi)存暫用)
2、視頻編碼格式有哪些?
3、H.264視頻壓縮數(shù)據(jù)格式?
非常復(fù)雜算法->壓縮->占用內(nèi)存那么少?(例如:幀間預(yù)測、幀內(nèi)預(yù)測…)->提高壓縮性能
視頻編碼格式.png
第六點:音頻編碼數(shù)據(jù)?
1、音頻編碼作用?
將音頻采樣數(shù)據(jù)(PCM格式)進行壓縮成為音頻碼流,從而降低音頻數(shù)據(jù)量。(減小內(nèi)存暫用)
2、音頻編碼飛逝有哪些?
AAC、MP3等等…
3、AAC格式?
AAC,全稱Advanced Audio Coding,是一種專為聲音數(shù)據(jù)設(shè)計的文件壓縮格式。與MP3不同,它采用了全新的算法進行編碼,更加高效,具有更高的“性價比”。利用AAC格式,可使人感覺聲音質(zhì)量沒有明顯降低的前提下,更加小巧。蘋果ipod、諾基亞手機支持AAC格式的音頻文件。
優(yōu)點:相對于mp3,AAC格式的音質(zhì)更佳,文件更小。
不足:AAC屬于有損壓縮的格式,與時下流行的APE、FLAC等無損格式相比音質(zhì)存在“本質(zhì)上”的差距。加之,傳輸速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC頭上“小巧”的光環(huán)不復(fù)存在。
①提升的壓縮率:可以以更小的文件大小獲得更高的音質(zhì);
②支持多聲道:可提供最多48個全音域聲道;
③更高的解析度:最高支持96KHz的采樣頻率;
④提升的解碼效率:解碼播放所占的資源更少;
音頻編碼格式分析.png
第七點:視頻像素數(shù)據(jù)?
1、作用?
保存了屏幕上面每一個像素點的值
2、視頻像素數(shù)據(jù)格式種類?
常見格式:RGB24、RGB32、YUV420P、YUV422P、YUV444P等等…一般最常見:YUV420P
3、視頻像素數(shù)據(jù)文件大小計算?
例如:RGB24高清視頻體積?(1個小時時長)
體積:3600 * 25 * 1920 * 1080 * 3 = 559GB(非常大)
假設(shè):幀率25HZ,采樣精度8bit,3個字節(jié)
4、YUV播放器
人類:對色度不敏感,對亮度敏感
Y表示:亮度
UV表示:色度
RGB格式.png
第八點:音頻采樣數(shù)據(jù)格式?
1、作用?
保存了音頻中的每一個采樣點值
2、音頻采樣數(shù)據(jù)文件大小計算?
例如:1分鐘PCM格式歌曲
體積:60 * 44100 * 2 * 2 = 11MB
分析:60表示時間,44100表示采樣率(一般情況下,都是這個采樣率,人的耳朵能夠分辨的聲音),2表示聲道數(shù)量,2表示采樣精度16位 = 2字節(jié)
3、音頻采樣數(shù)據(jù)查看工具?
4、PCM格式?
存儲順序?
第九點:FFmepg應(yīng)用?
提供了一套比較完整代碼->開源免費
核心架構(gòu)設(shè)計思想:(核心 + 插件)設(shè)計
重要命令學(xué)習(xí)?
1、ffmpeg.exe(視頻壓縮->轉(zhuǎn)碼來完成)
作用:用于對視頻進行轉(zhuǎn)碼
將mp4->mov,mov->mp4,wmv->mp4等等…
命令格式:./ffmpeg -i {指定輸入文件路徑} -b:v {輸出視頻碼率} {輸出文件路徑}
測試運行:將Test.mov->Test.mp4
命令: ./ffmpeg -i Test.mov -b:v 368k Test.mp4
時間格式:如何指定?
作業(yè)(截取視頻):./ffmpeg -I Test.mov (從第10秒開始截取,視頻長度為10秒)
命令: ./ffmpeg -i Test.mov -t 00:00:10 -ss 00:00:10 test.mp4
ffmpeg命令參數(shù).png
2、ffplay.exe
作用:播放視頻
格式:ffplay {文件路徑}
命令:./ffplay Test.mov
ffplay快捷鍵.png
工具
FFmpeg、FFplay https://pan.baidu.com/s/1bN7oHC









