欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ffmpeg3.3新版本AVStream的封裝流參數(shù)由codec替換codecpar(解碼)

ffmpeg新版本中(封裝流)AVStream的codec參數(shù)要被codecpar參數(shù)所替代,這樣替代我們要注意什么,為什么要替代,我們先來看下ffmpeg的代碼。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、涇川網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為涇川等各大城市提供網(wǎng)站開發(fā)制作服務。

代碼分析和新參數(shù)優(yōu)勢

typedef struct AVStream {
#if FF_API_LAVF_AVCTX
/**
* @deprecated use the codecpar struct instead
*/
attribute_deprecated
AVCodecContext *codec;
#endif
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
/*
* Codec parameters associated with this stream. Allocated and freed by
* libavformat in avformat_new_stream() and avformat_free_context()
* respectively.
*
* - demuxing: filled by libavformat on stream creation or in
* avformat_find_stream_info()
* - muxing: filled by the caller before avformat_write_header()
*/
AVCodecParameters *codecpar;
}

從代碼中我們可以看出codec參數(shù)在58版本及之后就不會支持了,需要由codecpar參數(shù)所替代。這樣做的目的我想主要是將編碼和封裝徹底分離,之前封裝和編碼使用的參數(shù)都是存放在codec中,這樣的好處是代碼簡潔,不需要額外給封裝傳遞參數(shù),但壞處是把編碼和封裝的代碼融合在一塊耦合性較大,有很多需求,我們只需要編碼并不需要做封裝,比如我們做自己的推流協(xié)議,直接吧編碼后h364數(shù)據(jù)通過自定義的協(xié)議發(fā)送。

再比如直播推流中我們編碼和封裝推流會在不同的線程中處理,如果共用一個上下文肯定還需要處理互斥問題,分開就不會存在這個問題。

既然必須要替換我們?nèi)绾翁幚恚?/p>

比如原來的視頻播放處理方式是這樣(錯誤處理省略):

//打開多媒體文件,我們假定視頻流索引為0
AVFormatContext *ic = NULL;
avformat_open_input(&ic, "test.mp4", 0, 0);
//找到視頻×××,比如H264
  AVCodec *codec = avcodec_find_decoder(ic->streams[0]->codec->codecid);
  //打開視頻×××,打開音頻×××用的也是同一個函數(shù)
avcodec_open2(enc, ic->streams[0]->codec, NULL);

看代碼我們知道avformat_open_input之后音視頻的配置信息已經(jīng)被寫在了codec中,解封裝和解碼用同一套參數(shù)。但是如果替換為codecpar ,那×××是獨立創(chuàng)建的,那是否還要手動填寫一遍解碼參數(shù),理論上是需要的,不過還好ffmpeg提供給我們一個函數(shù)做參數(shù)復制

int avcodec_parameters_to_context(AVCodecContext *codec, const AVCodecParameters *par);

那我們codec參數(shù)替換為codecpar 代碼就可以這樣寫了(錯誤處理省略)

//打開多媒體文件,我們假定視頻流索引為0
AVFormatContext *ic = NULL;
avformat_open_input(&ic, "test.mp4", 0, 0);
//找到視頻×××,比如H264
  AVCodec *codec = avcodec_find_decoder(ic->streams[0]->codecpar->codec_id);
//獨立的解碼上下文
AVCodecContext * vc = avcodec_alloc_context3(codec);
avcodec_parameters_to_context(vc, ic->streams[0]->codecpar);
avcodec_open2(vc, codec, NULL);

代碼改變后解碼上下文就是獨立的,后面解碼也不需要與解封裝上下文關聯(lián),包括清理。

×××的ID號也變?yōu)閺腸odecpar->codec_id成員獲取。

更多的資料也可以關注我51cto上的視頻課程

夏老師的課堂 http://edu.51cto.com/lecturer/12016059.html

C++編程FFMpegSDK美顏直播推流實戰(zhàn)-基于qt5,opencv視頻課程

http://edu.51cto.com/course/10840.html

 ffmpeg3.3新版本AVStream的封裝流參數(shù)由codec替換codecpar(解碼)

 ffmpeg3.3新版本AVStream的封裝流參數(shù)由codec替換codecpar(解碼)


新聞名稱:ffmpeg3.3新版本AVStream的封裝流參數(shù)由codec替換codecpar(解碼)
URL地址:http://www.aaarwkj.com/article42/gjgiec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、軟件開發(fā)、域名注冊、移動網(wǎng)站建設、企業(yè)建站定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
亚洲高清成人在线观看| 二区三区在线欧美日韩| 欧美午夜视频一区二区福利| 国产精品白嫩初高中害羞小美女| 色悠悠色综合视频在线| 国产激情片午夜福利| 麻豆片免费观看在线看| 伊人久久综在合线亚洲| 一级片一区二区中文字幕| 精品爆白浆一区二区三区| 亚洲黄色片一区二区三区| 亚洲va在线va天堂va在线| 日韩精品一区伦理视频| 亚洲一区二区视频免费看| 日韩网激情视频在线观看| 色噜噜男人的天堂av| 一区二区三区高清av在线| 亚洲国产精品中文字幕一区久久| 搡老女人老91妇女老熟女| 日韩黄色一级免费在线观看| 国产成人综合亚洲乱淫.| 日本中文字幕三级专区| 亚洲免费视频一二三区| 日韩高清有码一区二区| 校花出白浆视频一区二区三区| 深夜毛片一区二区三区| 日韩一区二区三级在线| 欧美成人免费做真爱高潮| 在线视频天堂亚洲天堂| 欧美一区二区三区日| 97成人在线免费视频| 欧美亚洲av一区二区三区| 亚洲国产日韩在线精品| 色悠悠粉嫩一区二区三区| 欧美精品日韩中文字幕在| 亚洲精品欧美综合第四区| 亚洲精品第一页中文字幕 | 少妇高潮惨叫久久麻豆传| 日韩黄色成人免费片子| 99热这里只有精品免费播放| 亚洲精品视频久久免费|