国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解

這篇具有很好參考價(jià)值的文章主要介紹了FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、FFmpeg模塊分類


打開FFmpeg源碼,會(huì)發(fā)現(xiàn)有一系列l(wèi)ibavxxx的模塊,這些模塊很好地劃分了代碼的結(jié)構(gòu)和分工。

libavformat,format,格式封裝

libavcodec,codec,編碼、解碼

libavutil,util,通用音視頻工具,像素、IO、時(shí)間等工具

libavfilter,filter,過濾器,可以用作音視頻特效處理

libavdevice,device,設(shè)備(攝像頭、拾音器)

libswscale,scale,視頻圖像縮放,像素格式互換

libavresample,resample,重采樣

libswresample,也是重采樣,類似圖像縮放

libpostproc,后期處理

2、FFmpeg核心結(jié)構(gòu)體


AVFormatContext:解封裝功能的結(jié)構(gòu)體,包含文件名、音視頻流、時(shí)長(zhǎng)、比特率等信息;

AVCodecContext:編解碼器上下文,編碼和解碼時(shí)必須用到的結(jié)構(gòu)體,包含編解碼器類型、視頻寬高、音頻通道數(shù)和采樣率等信息;

AVCodec:存儲(chǔ)編解碼器信息的結(jié)構(gòu)體;

AVStream:存儲(chǔ)音頻或視頻流信息的結(jié)構(gòu)體;

AVPacket:存儲(chǔ)音頻或視頻編碼數(shù)據(jù);

AVFrame:存儲(chǔ)音頻或視頻解碼數(shù)據(jù)(原始數(shù)據(jù))。

3、播放流程


FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解

4、FFmpeg解碼實(shí)現(xiàn)


解碼實(shí)現(xiàn)的是將壓縮域的視頻數(shù)據(jù)解碼為像素域的 YUV 數(shù)據(jù)。實(shí)現(xiàn)的過程,可以大致用如下圖所示。

FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解

從圖中可以看出,大致可以分為下面三個(gè)步驟:

  • 首先要有待解碼的壓縮域的視頻。

  • 其次根據(jù)壓縮域的壓縮格式獲得解碼器。

  • 最后解碼器的輸出即為像素域的 YUV 數(shù)據(jù)

5、FFmpeg編碼實(shí)現(xiàn)


視頻域 YUV 數(shù)據(jù)編碼為壓縮域的幀數(shù)據(jù)

FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解

從圖中可以大致看出視頻編碼的流程:

  • 首先要有未壓縮的 YUV 原始數(shù)據(jù)。

  • 其次要根據(jù)想要編碼的格式選擇特定的編碼器。

  • 最后編碼器的輸出即為編碼后的視頻幀。

6、FFmpeg轉(zhuǎn)碼實(shí)現(xiàn)


傳統(tǒng)的編碼轉(zhuǎn)換程序工作原理圖

FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解
FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解

封的目的:

\1. 是為了在一個(gè)文件流(Stream)中能同時(shí)存儲(chǔ)視頻流(Video Stream)、音頻流(Audio Stream)、字幕(Subtitle)、附件(t)、數(shù)據(jù)(d)等內(nèi)容。這正是“復(fù)用”的含義所在(分時(shí)復(fù)用)。

\2. 是在網(wǎng)絡(luò)環(huán)境下確保數(shù)據(jù)的可靠快速傳輸。

編碼的目的:

是為了壓縮媒體數(shù)據(jù)。有別于通用文件數(shù)據(jù)的壓縮,在圖像或音頻壓縮的時(shí)候,可以借助圖像特性(如前后關(guān)聯(lián)、相鄰圖塊關(guān)聯(lián))或聲音特性(聽覺模型)進(jìn)行壓縮,可以達(dá)到比通用壓縮技術(shù)更高的壓縮比。

原文https://zhuanlan.zhihu.com/p/434815150

★文末名片可以免費(fèi)領(lǐng)取音視頻開發(fā)學(xué)習(xí)資料,內(nèi)容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音視頻學(xué)習(xí)路線圖等等。

見下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓文章來源地址http://www.zghlxwxcb.cn/news/detail-508917.html

到了這里,關(guān)于FFMpeg 實(shí)現(xiàn)視頻解碼、編碼、轉(zhuǎn)碼流程詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 項(xiàng)目實(shí)戰(zhàn)——Qt實(shí)現(xiàn)FFmpeg音視頻轉(zhuǎn)碼器

    項(xiàng)目實(shí)戰(zhàn)——Qt實(shí)現(xiàn)FFmpeg音視頻轉(zhuǎn)碼器

    本文記錄使用 Qt 實(shí)現(xiàn) FFmepg 音視頻轉(zhuǎn)碼器項(xiàng)目的開發(fā)過程。 1、首先創(chuàng)建一個(gè) Qt 項(xiàng)目,選擇 MSVC2017 32bit 作為其編譯器 2、將 FFmpeg 相關(guān)庫及源文件拷貝到當(dāng)前目錄下 3、注釋 prepare_app_arguments 函數(shù)(這里方便后面我們運(yùn)行時(shí)可以指定相應(yīng)的轉(zhuǎn)碼參數(shù)) 4、將所需的一些 dll 動(dòng)態(tài)庫

    2024年01月23日
    瀏覽(27)
  • 【FFmpeg視頻播放器開發(fā)】解封裝解碼流程、常用API和結(jié)構(gòu)體簡(jiǎn)介(一)

    【FFmpeg視頻播放器開發(fā)】解封裝解碼流程、常用API和結(jié)構(gòu)體簡(jiǎn)介(一)

    在正式編寫 FFmpeg 播放器前,我們需要先簡(jiǎn)單了解下所要用到的 FFmpeg 庫、播放與解碼流程、函數(shù)和相關(guān)結(jié)構(gòu)體。 庫 介紹 avcodec 音視頻編解碼核心庫 avformat 音視頻容器格式的封裝和解析 avutil 核心工具庫 swscal 圖像格式轉(zhuǎn)換的模塊 swresampel 音頻重采樣 avfilter 音視頻濾鏡庫 如視

    2023年04月08日
    瀏覽(19)
  • 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過程 “ 和 “ 解封裝 - 解碼 - 播放 過程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝播放流程 )

    【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過程 “ 和 “ 解封裝 - 解碼 - 播放 過程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝播放流程 )

    本篇文件主要分析 音視頻文件 是怎么產(chǎn)生的 , 以及 音視頻文件是如何播放的 ; 視頻文件從錄像到生成文件的全過程 : 采集圖像幀 : 攝像頭 硬件 負(fù)責(zé) 采集畫面 , 采集的 初始畫面 稱為 \\\" 圖像幀 \\\" , 一秒鐘 采集 的 圖像幀 數(shù)量 稱為 \\\" 幀率 \\\" , 如 : 60 幀 就是 一秒鐘采集 60 個(gè)畫

    2024年02月11日
    瀏覽(104)
  • 利用第三方解碼器ffmpeg讓群暉DSM6.2.4版本的Video Station支持DTS視頻編碼和EAC3音頻編碼

    利用第三方解碼器ffmpeg讓群暉DSM6.2.4版本的Video Station支持DTS視頻編碼和EAC3音頻編碼

    截至2022年5月6日,此方法可用! 本文章可以解決群暉版本6.2.4-25556 Update5(Video Station版本2.5.0-1656)在播放dts、eac3音頻編碼的視頻時(shí)提示不支持的問題。 對(duì)于群暉6.2.3版本,Video Station版本2.4.9,網(wǎng)上隨便搜的方法都可以使用,但是用在6.2.4未必可行。原因在于Video Station版本2

    2023年04月08日
    瀏覽(40)
  • ffmpeg實(shí)現(xiàn)視頻解碼

    參考100行代碼實(shí)現(xiàn)最簡(jiǎn)單的基于FFMPEG+SDL的視頻播放器(SDL1.x) 平臺(tái)環(huán)境:windows VS 2022 以及在 項(xiàng)目-項(xiàng)目屬性-鏈接器-命令行,在右側(cè)其他選項(xiàng)中添加“/SAFESEH:NO”,這樣就不會(huì)再報(bào)錯(cuò)了。 1.初始化FFmpeg庫: 在代碼中引入相關(guān)的FFmpeg頭文件,并調(diào)用初始化函數(shù)。例如: 2.打開輸

    2024年01月24日
    瀏覽(50)
  • ffmpeg + nginx 實(shí)現(xiàn)rtsp視頻流轉(zhuǎn)m3u8視頻流,轉(zhuǎn)碼推流(linux)

    ffmpeg + nginx 實(shí)現(xiàn)rtsp視頻流轉(zhuǎn)m3u8視頻流,轉(zhuǎn)碼推流(linux)

    FFmpeg即是一款音視頻編解碼工具,同時(shí)也是一組音視頻編碼開發(fā)套件,作為編碼開發(fā)套件,它為開發(fā)者提供了豐富的音視頻處理的調(diào)用接口。 FFmpeg提供了多種媒體格式的封裝和解封裝,包括多種音視頻編碼、多種協(xié)議的流媒體、多種多彩格式轉(zhuǎn)換、多種采樣率轉(zhuǎn)換、多種碼率

    2024年02月09日
    瀏覽(32)
  • FFmpeg 開發(fā)(14):Android FFmpeg + MediaCodec 實(shí)現(xiàn)視頻硬解碼

    FFmpeg 開發(fā)系列連載: FFmpeg 開發(fā)(01):FFmpeg 編譯和集成 FFmpeg 開發(fā)(02):FFmpeg + ANativeWindow 實(shí)現(xiàn)視頻解碼播放 FFmpeg 開發(fā)(03):FFmpeg + OpenSLES 實(shí)現(xiàn)音頻解碼播放 FFmpeg 開發(fā)(04):FFmpeg + OpenGLES 實(shí)現(xiàn)音頻可視化播放 FFmpeg 開發(fā)(05):FFmpeg + OpenGLES 實(shí)現(xiàn)視頻解碼播放和視頻濾鏡 FFmpeg 開發(fā)

    2024年02月09日
    瀏覽(26)
  • golang基于FFmpeg實(shí)現(xiàn)視頻H264編解碼

    golang基于FFmpeg實(shí)現(xiàn)視頻H264編解碼

    FFmpeg 是領(lǐng)先的多媒體框架,能夠解碼、編碼、轉(zhuǎn)碼、混合、解密、流媒體、過濾和播放人類和機(jī)器創(chuàng)造的幾乎所有東西。它支持最晦澀的古老格式,直到最尖端的格式。無論它們是由某個(gè)標(biāo)準(zhǔn)委員會(huì)、社區(qū)還是公司設(shè)計(jì)的。它還具有高度的便攜性。 FFmpeg 可以在 Linux、Mac OS

    2024年02月11日
    瀏覽(22)
  • ffmpeg 硬件加速視頻轉(zhuǎn)碼指南

    ffmpeg 硬件加速視頻轉(zhuǎn)碼指南

    0. 系統(tǒng)環(huán)境 基于 Windows 下演示,Linux 下也可以適用。 所使用 ffmpeg 版本為 BtbN 編譯的 win64-gpl 版(非 gpl-share),項(xiàng)目地址:BtbN / FFmpeg-Builds 也可以使用?gyan.dev?編譯的 git-full 版,地址:gyan.dev?,都是官方推薦的。 所使用的測(cè)試片段是一段相機(jī)錄制的 h264 編碼的100兆碼率的

    2024年01月19日
    瀏覽(21)
  • 使用GPU硬件加速FFmpeg視頻轉(zhuǎn)碼

    本文內(nèi)容包括: 在Linux環(huán)境下安裝FFmpeg 通過命令行實(shí)現(xiàn)視頻格式識(shí)別和轉(zhuǎn)碼 有Nvidia顯卡的情況下,在Linux下使用GPU進(jìn)行視頻轉(zhuǎn)碼加速的方法 在FFmpeg官網(wǎng)https://ffmpeg.org/download.html可以下載到ubunto/debian的發(fā)行包,其他Linux發(fā)行版需自行編譯。同時(shí),如果要使用GPU進(jìn)行硬件加速的話

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包