FFMPEG+SDL播放器開發(fā)入門-解封裝和視頻顯示

更多音視頻知識(shí)請(qǐng)點(diǎn)擊專注音視頻開發(fā)

背景

開發(fā)環(huán)境搭建請(qǐng)參考FFMPEG入門系列01-QT+FFMPEG4.0 Windows開發(fā)環(huán)境搭建
本章內(nèi)容講解基于FFMPEG4.0.2 + SDL2.0

概述

媒體文件通常有一些基本的組成部分翎朱。你在學(xué)習(xí)源碼之前需要了解以下的概念:

  • 容器(container)涣雕,文件本身被稱為容器闭翩,容器的的類型定義了文件的信息是如何存儲(chǔ)挣郭,比如,AVI兑障、FLV、MP4等容器格式蕉汪。當(dāng)我們從容器讀取媒體數(shù)據(jù)的時(shí)候稱為解復(fù)用器(demuxer),當(dāng)我們把媒體數(shù)據(jù)寫入容器的時(shí)候稱為復(fù)用器(muxer).
  • 流(stream)者疤,每個(gè)音視頻媒體通常會(huì)有一路音頻流和一路視頻流福澡。這些流需要根據(jù)容器規(guī)定的格式存儲(chǔ)到媒體文件當(dāng)中。
  • 幀(frame)驹马,流中的數(shù)據(jù)元素被稱為幀革砸,但對(duì)于FFMPEG而言,一般壓縮的數(shù)據(jù)成為數(shù)據(jù)包(packet)糯累,經(jīng)過解碼器解碼后的數(shù)據(jù)再成為幀(frame)算利。
  • 編/解碼器(codec),每路流都會(huì)被相應(yīng)的「編/解碼器(codec)」進(jìn)行編碼或解碼泳姐。codec 定義了實(shí)際數(shù)據(jù)是如何被編解碼的效拭,比如你用到的MP4文件的音視頻流數(shù)據(jù)可能是 H264 和 MP3編碼器進(jìn)行編碼的。
  • 數(shù)據(jù)包(packets),是從流中讀取的數(shù)據(jù)片段缎患,這些數(shù)據(jù)片段中包含的一個(gè)個(gè)比特經(jīng)過解碼后可以得到的圖像幀(畫面)或者PCM幀(聲音)慕的。通常情況下,每個(gè)數(shù)據(jù)包含完整的一幀多媒體(音頻/視頻/字幕等等)數(shù)據(jù)挤渔,但要注意在音頻情況下肮街,一個(gè)數(shù)據(jù)包中可能會(huì)包含多個(gè)音頻幀

供參考的播放器框架圖
播放器框架圖

基于以上這些基礎(chǔ)蚂蕴,處理視頻流和音頻流的過程其實(shí)很簡單:

  1. 根據(jù)容器類型找到合適的解復(fù)用器(demuxer)低散;
    對(duì)應(yīng)函數(shù):avformat_open_input
  2. 使用解復(fù)用器(demuxer)讀取多媒體數(shù)據(jù)俯邓,分析媒體文件的信息骡楼,比如有幾路音頻流,幾路視頻流稽鞭,它們是什么樣的編碼格式鸟整。音頻幀的信息:包括采樣率、采樣格式朦蕴、通道數(shù)等篮条;視頻幀的信息:包括分辨率、圖像格式吩抓、幀率等等涉茧。對(duì)應(yīng)函數(shù):
    • avformat_find_stream_info
    • av_find_best_stream
  3. 查找碼流對(duì)應(yīng)的解碼器,如果能夠找到則打開相應(yīng)的解碼器疹娶,對(duì)應(yīng)函數(shù):
    • avcodec_alloc_context3
    • avcodec_parameters_to_context
    • avcodec_find_decoder
    • avcodec_open2
  4. 不斷地讀取音視頻數(shù)據(jù)包伴栓,對(duì)應(yīng)函數(shù):
    • av_read_frame
  5. 將數(shù)據(jù)包送給解碼器雨饺,并讀取解碼后的數(shù)據(jù)幀钳垮,對(duì)應(yīng)函數(shù):
    • avcodec_send_packet
    • avcodec_receive_frame
  6. 將獲取的視頻幀進(jìn)行畫面顯示额港,音頻幀進(jìn)行聲音輸出饺窿。
  7. 不斷循環(huán) 4移斩,5肚医,6三個(gè)步驟向瓷,直到數(shù)據(jù)讀取完畢忍宋。

參考

MFC中如何利用ffmpeg和SDL2.0多線程多窗口播放攝像頭的視頻https://blog.csdn.net/marising/article/details/52145316?utm_source=blogxgwz5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末风罩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子超升,更是在濱河造成了極大的恐慌哺徊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件落追,死亡現(xiàn)場(chǎng)離奇詭異涯肩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)疗垛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門硫朦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咬展,你說我怎么就攤上這事泽裳∑破牛” “怎么了涮总?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵祷舀,是天一觀的道長。 經(jīng)常有香客問我蔑鹦,道長夺克,這世上最難降的妖魔是什么嚎朽? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮哟忍,結(jié)果婚禮上狡门,老公的妹妹穿的比我還像新娘锅很。我一直安慰自己其馏,他們只是感情好爆安,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般褐奥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撬码,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音呜笑,去河邊找鬼夫否。 笑死叫胁,一個(gè)胖子當(dāng)著我的面吹牛凰慈,可吹牛的內(nèi)容都是我干的曹抬。 我是一名探鬼主播溉瓶,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼谤民,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了张足?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤为牍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后岩馍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛀恩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了双谆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羊精,死狀恐怖均唉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竟稳,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布他爸,位于F島的核電站地啰,受9級(jí)特大地震影響讲逛,放射性物質(zhì)發(fā)生泄漏亏吝。R本人自食惡果不足惜盏混,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一蔚鸥、第九天 我趴在偏房一處隱蔽的房頂上張望许赃。 院中可真熱鬧止喷,春花似錦混聊、人聲如沸弹谁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咳胃。三九已至植康,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間销睁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國打工冻记, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人来惧。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像违寞,于是被迫代替她去往敵國和親贞瞒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趁曼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • FFmpeg 介紹 FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻挡闰、視頻乒融,并能將其轉(zhuǎn)化為流的開源計(jì)算機(jī)程序。采用LG...
    Y了個(gè)J閱讀 11,321評(píng)論 0 28
  • ffmpeg是一個(gè)非常有用的命令行程序赞季,它可以用來轉(zhuǎn)碼媒體文件。它是領(lǐng)先的多媒體框架FFmpeg的一部分申钩,其有很多...
    城市之光閱讀 6,795評(píng)論 3 6
  • 本文轉(zhuǎn)自:FFmpeg 入門(1):截取視頻幀 | www.samirchen.com 背景 在 Mac OS 上...
    SamirChen閱讀 9,443評(píng)論 6 15
  • 今天在家陪伴倆個(gè)孩子,一起在家里大掃除撒遣、收拾家務(wù)。倆個(gè)孩子都很積極熱情义黎,爭搶著干家務(wù)。自己刷書包廉涕、疊自己的衣服泻云、擦...
    道荷閱讀 277評(píng)論 0 0
  • 都是一番說爛了的話狐蜕, 都是一些寫爛了的字宠纯, 無數(shù)次的重復(fù)馏鹤,重復(fù)征椒,還有什么意義娇哆? 明白他的,自然懂得碍讨, 無需一次治力,一...
    嘻嘻哈呀閱讀 225評(píng)論 0 1