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

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

這篇具有很好參考價(jià)值的文章主要介紹了【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1 FFmpeg轉(zhuǎn)換與封裝

1.1 MP4格式轉(zhuǎn)換

1.1.1 MP4格式標(biāo)準(zhǔn)


1 FFmpeg轉(zhuǎn)換與封裝

????????FFmpeg支持的媒體封裝格式具有多樣性與全面性,與此,我們還可以使用FFmpeg來(lái)對(duì)媒體格式進(jìn)行轉(zhuǎn)換與封裝。

1.1 MP4格式轉(zhuǎn)換

在互聯(lián)網(wǎng)常見(jiàn)的格式中,跨平臺(tái)最好的應(yīng)該是 MP4 文件,因?yàn)?MP4 文件既可以在PC 平臺(tái)的Flashplayer中播放,又可以在移動(dòng)平臺(tái)的 Android 、 iOS 等平臺(tái)中進(jìn)行播放,而且使用系統(tǒng)默認(rèn)的播放器即可播放,因此我們說(shuō) MP4 格式是最常見(jiàn)的多媒體文件格式 。

1.1.1 MP4格式標(biāo)準(zhǔn)

????????MP4 格式標(biāo)準(zhǔn)為IS0-14496 Part 12 、ISO-14496 Part 14 ,標(biāo)準(zhǔn)內(nèi)容并不是特別多。
????????要了解 MP4 的格式信息,要清楚幾個(gè)概念,具體如下:
????????? MP4 文件由許多個(gè) Box 與 FullBox 組成
??????????每個(gè)Box 由 Header 和 Data 兩部分組成
????????? FullBox 是 Box 的擴(kuò)展,其在 Box 結(jié)構(gòu)的基礎(chǔ)上,在 Header 中增加 8 位 version 標(biāo)志和 24 位的 flags 標(biāo)志
????????? Header 包含了整個(gè) Box 的長(zhǎng)度的大小( size )和類(lèi)型( type ),當(dāng) size 等于 0 時(shí),代表這個(gè) Box 是文件的最后一個(gè) Box 。 當(dāng) size 等于 1 時(shí),說(shuō)明 Box 長(zhǎng)度需要更多的位來(lái)描述,在后面會(huì)定義一個(gè) 64 位的 large size 用來(lái)描述 Box 的長(zhǎng)度 。當(dāng) Type 為uuid 時(shí),說(shuō)明這個(gè) Box 中的數(shù)據(jù)是用戶自定義擴(kuò)展類(lèi)型
????????? Data 為 Box 的實(shí)際數(shù)據(jù),可以是純數(shù)據(jù),也可以是更多的子 Box
????????? 當(dāng) 一個(gè) Box 中 Data 是一系列的子 Box 時(shí),這個(gè) Box 又可以稱(chēng)為 Container(容器)Box MP4 文件中 Box 的組成可以用表 3-1 所示的列表進(jìn)行排列,下表中標(biāo)記“√”的Box為必要Box,否則為可選Box。

MP4常用參考標(biāo)準(zhǔn)排列方式

容器名 必選 描述
一級(jí) 二級(jí) 三級(jí) 四級(jí) 五級(jí) 六級(jí) - -
ftyp 文件類(lèi)型
pdin 下載進(jìn)度信息
moov 音視頻數(shù)據(jù)的metadata信息
mvhd 電影文件頭
trak 流的track
tkhd 流信息的track頭
tref track參考容器
edts edit list 容器
elst edit list元素信息
mdia track里面的media 信息
mdhd media 信息頭
hdlr media 信息的句柄
minf media 信息容器
vmhd 視頻media頭(只存在于視頻的track)
smhd 音頻media頭(只存在于音頻的track)
hmhd 提示meida頭(只存在于提示的track)
nmhd 空media頭(其他的track)
dinf 數(shù)據(jù)信息容器
dref 數(shù)據(jù)參考容器,track中media的參考信息
stbl 采樣表容器,容器做時(shí)間與數(shù)據(jù)所在位置的描述
stsd 采樣描述(codec類(lèi)型與初始化信息)
stts (decoding)采樣時(shí)間
ctts (composition)采樣時(shí)間
stsc chunk采樣,數(shù)據(jù)片段信息
stsz 采樣大小
stz2 采樣大小詳細(xì)描述
stco Chunk 偏移信息,數(shù)據(jù)偏移信息
co64 64位Chunk 偏移信息
stss 同步采樣表
stsh 采樣同步表
padb 采樣 padding
stdp 采樣退化優(yōu)先描述
sdtp 獨(dú)立于可支配采樣描述
sbgp 采樣組
sgpd 采樣組描述
subs 子采樣信息
mvex 視頻擴(kuò)展容器
mehd 視頻擴(kuò)展容器頭
trex track 擴(kuò)展信息
ipmc IPMP控制容器
moof 視頻分片
mfhd 視頻分片頭
traf track分片
tfhd track 分片頭
trun track 分片run 信息
sdtp 獨(dú)立和可支配的采樣
sbgp 采樣組
subs 子采樣信息
mfra 視頻分片訪問(wèn)控制信息
tfra track 分片訪問(wèn)控制信息
mfro 拼分片訪問(wèn)控制偏移量
mdat media 數(shù)據(jù)容器
free 空閑區(qū)域
skip 空閑區(qū)域
udta 用戶數(shù)據(jù)
cprt copyright 信息
meta 元數(shù)據(jù)
hdlr 定義元數(shù)據(jù)的句柄
dinf 數(shù)據(jù)信息容器
dref 元數(shù)據(jù)的源參考信息
ipmc IPMP控制容器
iloc 所在位置信息容器
ipro 樣本保護(hù)容器
sinf 計(jì)劃信息保護(hù)容器
frma 原格式容器
imif IPMP 信息容器
schm 計(jì)劃類(lèi)型容器
schi 計(jì)劃信息容器
iinf 容器所在項(xiàng)目信息
xml XML容器
bxml binary XML 容器
pitm 主要參考容器
fiin 文件發(fā)送信息
paen partition 人口
fpar 文件片段容器
fecr FEC reservoir
segr 文件發(fā)送 session 組信息
gitn 組id轉(zhuǎn)名稱(chēng)信息
tsel track 選擇信息
meco 追加的metadata 信息
mere metabox 關(guān)系

????????MP4文件中的Box結(jié)構(gòu)與表中描述的基本上一致,在MP4的描述標(biāo)準(zhǔn)中moov與mdat的存放位置前后并沒(méi)有作強(qiáng)制要求,所以有時(shí)候moov被放在mdat的前面。而在互聯(lián)網(wǎng)的視頻點(diǎn)播中,若希望MP4被快速打開(kāi),則需要將moov存放在mdat的前面;如果放在后面,則需要將MP4文件下載完成后才可播放。

????????1.moov容器

????????moov容器定義了一個(gè)MP4文件中的數(shù)據(jù)信息,類(lèi)型是moov,是一個(gè)Atom容器,必須至少包含以下三種Atom中的一種:

?????????mvhd 標(biāo)簽, Movie Header Atom ,存放未壓縮過(guò)的影片信息的頭容器
?????????cmov 標(biāo)簽, Compressed Movie Atom , 壓縮過(guò)的電影信息容器,此容器不常用
?????????rmra 標(biāo)簽, Reference Movie Atom , 參考電影信息容器,此容器不常用

????????也可以包含其他容器信息,例如影片剪輯信息Clipping atom(clip)、一個(gè)或幾個(gè)trakAtom(trak)、一個(gè) Color Table Atom(ctab)和一個(gè) User Data Atom(udta)。其中,mvhd 中定義了多媒體文件的 time scale 、 duration 以及 display characteristics 。而 trak 中定義了多媒體文件中的一個(gè) track 的信息,track 是多媒體文件中可以獨(dú)立操作的媒體單位,例如一個(gè)音頻流就是一個(gè) track 、一個(gè)視頻流就是一個(gè) track。

? ? ? ? 在mvhd中定義了多媒體文件的time scale、duration以及display characteristics。而trak中定義了多媒體文件中的一個(gè)track的信息,track是多媒體文件中可以獨(dú)立操作的媒體單位。

? ? ? ? 用二進(jìn)制查看工具打開(kāi)一個(gè)MP4格式文件,如第一張圖,我們可以看到moov容器類(lèi)型位于(0x6D6F6F76),共包含0x00019689(104073)字節(jié);moov的參數(shù)格式隨下表所示。

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

? ? ? ? 接著我們往下找可以發(fā)現(xiàn)下一個(gè)容器類(lèi)型是mvhd,如圖中藍(lán)色標(biāo)記所示,地址為0x6D766864,同時(shí)容器大小為0x0000006C

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

? ? ? ? ?完成分析后,可以發(fā)現(xiàn)下個(gè)容器是一個(gè)trak標(biāo)簽,類(lèi)型和容器大小在這里就不再標(biāo)出和計(jì)算了。

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

? ? ? ? 最后便是udta容器(屬于moov的子容器),這個(gè)udta容器的解析方式與前面解析trak的方式基本相同。

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

? ? ? ? 我們通過(guò)計(jì)算可以發(fā)現(xiàn),udata+視頻trak+音頻trak+mvhd+moov描述大小之后得出來(lái)的總大小剛好與之前得出來(lái)的moov大小相等。

????????2.解析mvhd子容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????3.解析trak子容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????4.解析tkhd容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????5.解析mdia容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????6.解析mdhd容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????7.解析hdlr容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????8.解析minf容器

????????待完成

????????9.解析vmhd容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????10.解析smhd容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????11.解析dinf容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

????????12.解析stbl容器

????????待完成

????????13.解析edts容器

【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式

? ? ? ? 碼文中……

歡迎閱讀下一章 FFmpeg格式轉(zhuǎn)換與封裝 II - FLV格式【音視頻開(kāi)發(fā)】FFmpeg格式轉(zhuǎn)換與封裝 II - FLV格式https://blog.csdn.net/weixin_42839065/article/details/130682490?spm=1001.2014.3001.5502文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-477758.html

到了這里,關(guān)于【音視頻開(kāi)發(fā)】FFmpeg轉(zhuǎn)換與封裝 I - MP4格式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • 「Python|音視頻處理|場(chǎng)景案例」如何使用ffmpeg下載m3u8視頻到本地并保存成mp4

    本文主要介紹如何使用ffmpeg批量下載視頻到本地并保存成指定格式。 當(dāng)我們希望將網(wǎng)頁(yè)上的視頻下載到本地的時(shí)候,我們可能獲取到的視頻地址是指向 .m3u8 格式的,當(dāng)視頻多的時(shí)候,手動(dòng)下載并使用工具轉(zhuǎn)換格式就顯得工作量過(guò)大。 ffmpeg 是一個(gè)強(qiáng)大的音視頻處理工具,具體

    2024年02月16日
    瀏覽(34)
  • Qt音視頻開(kāi)發(fā)47-文字和圖片水?。纱鎯?chǔ)到MP4中)

    近期花了兩周時(shí)間閉門(mén)啃硬骨頭,主要就解決三個(gè)問(wèn)題(音視頻同步存儲(chǔ)和推流、圖片水印并將水印信息存儲(chǔ)到文件或者推流、rtsp推流),這三個(gè)問(wèn)題困擾了很多年,以至于找遍了網(wǎng)絡(luò)和翻遍ffplay代碼以及ffmpeg示例的代碼,通過(guò)不下于上百次方案的調(diào)整和測(cè)試,幾乎每次都是

    2024年02月16日
    瀏覽(43)
  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊(duì)列 - 音視頻編碼 - 音視頻包隊(duì)列 - 格式封裝 的過(guò)程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(101)
  • 音視頻八股文(10)-- mp4結(jié)構(gòu)

    音視頻八股文(10)-- mp4結(jié)構(gòu)

    mp4?件格式?被稱(chēng)為MPEG-4 Part 14,出?MPEG-4標(biāo)準(zhǔn)第14部分 。它是?種多媒體格式容器,?泛?于包裝視頻和?頻數(shù)據(jù)流、海報(bào)、字幕和元數(shù)據(jù)等。(順便?提,?前流?的視頻編碼格式AVC/H264 定義在MPEG-4 Part 10)。 mp4?件由box組成,每個(gè)box分為Header和Data。其中Header部分包含了

    2024年02月02日
    瀏覽(34)
  • Qt/C++音視頻開(kāi)發(fā)69-保存監(jiān)控pcm音頻數(shù)據(jù)到mp4文件/監(jiān)控錄像/錄像存儲(chǔ)和回放/264/265/aac/pcm等

    用ffmpeg做音視頻保存到mp4文件,都會(huì)遇到一個(gè)問(wèn)題,尤其是在視頻監(jiān)控行業(yè),就是監(jiān)控?cái)z像頭設(shè)置的音頻是PCM/G711A/G711U,解碼后對(duì)應(yīng)的格式是pcm_s16be/pcm_alaw/pcm_mulaw,將這個(gè)原始的音頻流保存到mp4文件是會(huì)報(bào)錯(cuò)的,在調(diào)用avformat_write_header寫(xiě)文件頭的時(shí)候提示(-22) Invalid argument,

    2024年04月11日
    瀏覽(37)
  • 音視頻編碼實(shí)戰(zhàn)-------pcm+yuv數(shù)據(jù)轉(zhuǎn)成MP4

    音視頻編碼實(shí)戰(zhàn)-------pcm+yuv數(shù)據(jù)轉(zhuǎn)成MP4

    avcodec_find_encoder: 根據(jù)編碼器ID查找編碼器 avcodec_alloc_context3:創(chuàng)建編碼器上下文 avcodec_open2:打開(kāi)編碼器 avformat_alloc_output_context2:為輸出格式創(chuàng)建復(fù)用器上下文 avformat_new_stream:創(chuàng)建音視頻流 avcodec_parameters_from_context:將編碼器上下文中的參數(shù)拷貝到音視頻流中的編碼器參數(shù)中AVCodec

    2024年02月15日
    瀏覽(33)
  • 音視頻知識(shí):MPEG-4、H264、MP4、AAC之間的關(guān)系

    MPEG-4 一種編碼標(biāo)準(zhǔn)。是國(guó)際標(biāo)準(zhǔn)化組織 (ISO) 主要針對(duì)消費(fèi)類(lèi)應(yīng)用,已經(jīng)針對(duì)運(yùn)動(dòng)圖像壓縮定義的標(biāo)準(zhǔn)。MPEG(Moving Picture Experts Group)標(biāo)準(zhǔn)包括 MPEG1、MPEG2與 MPEG4。 MPEG-4標(biāo)準(zhǔn)目前分為27個(gè)部分,統(tǒng)稱(chēng)為ISO/IEC14496國(guó)際標(biāo)準(zhǔn)。其中第10部分(ISO/IEC 14496-10)就是熟悉的高級(jí)視頻編碼

    2024年02月14日
    瀏覽(40)
  • 【音視頻筆記】Mediacodec+Muxer生成mp4,瀏覽器無(wú)法播放問(wèn)題處理

    最近在測(cè)試視頻錄制功能時(shí)發(fā)現(xiàn),AudioRecord + MediaCodec + MediaMuxer生成的MP4,PC瀏覽器無(wú)法播放 ,但是Android、Windows、Mac的播放器應(yīng)用都能正常播放。雖然不禁想吐槽瀏覽器視頻組件的容錯(cuò)性差,但我也意識(shí)生成的文件格式肯定也是有問(wèn)題的。 然后嘗試了合成MP4視頻時(shí),只保留視

    2024年02月07日
    瀏覽(116)
  • 音視頻 ffmpeg命令轉(zhuǎn)封裝

    保持編碼格式: 改變編碼格式: 修改幀率: 修改視頻碼率: 修改視頻碼率: 修改音頻碼率: 修改音視頻碼率: 修改視頻分辨率: 修改音頻采樣率: 推薦一個(gè)零聲學(xué)院項(xiàng)目課,個(gè)人覺(jué)得老師講得不錯(cuò),分享給大家: 零聲白金學(xué)習(xí)卡(含基礎(chǔ)架構(gòu)/高性能存儲(chǔ)/golang云原生/音

    2024年02月10日
    瀏覽(28)
  • JavaScript音視頻,使用JavaScript如何在瀏覽器錄制電腦攝像頭畫(huà)面為MP4視頻文件并下載視頻文件到本地

    本章介紹使用JavaScript如何在瀏覽器錄制電腦攝像頭畫(huà)面為MP4視頻文件并下載視頻文件到本地。 1、使用navigator.mediaDevices.getUserMedia獲取攝像頭畫(huà)面 2、將獲取到的攝像頭畫(huà)面渲染到canvas畫(huà)板上 3、將canvas轉(zhuǎn)換為blob對(duì)象 4、通過(guò)document.createElement(‘a(chǎn)’)調(diào)用 href 方法獲取此鏈接并觸

    2024年02月02日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包