国产91免费_国产精品电影一区_日本s色大片在线观看_中文在线免费看视频

您現在的位置: 通信界 >> 視頻通信 >> 技術正文  
 
ffmpeg的快速音視頻開發方法[圖]
[ 通信界 / 佚名 / www.6611o.com / 2012/3/25 10:56:44 ]
 

在DSP平臺上移植音視頻編解碼算法通常分為3個階段: 第1個階段產生并評估C代碼;第2個階段優化C代碼;第3個階段進行匯編優化[1]。整個過程比較耗時,工作量巨大。為減小移植工作量,可引入ffmpeg音視頻開發包,在開發包基礎上進行開發可以免去第一階段工作,并減少部分第二階段的工作。ffmpeg是一個優秀的音視頻解決方案,在此框架下可以方便、快速地進行進一步的開發。在嵌入式硬件平臺和嵌入Linux環境下,本文搭建了一種基于ffmpeg框架的音視頻編解碼軟件開發平臺,可供算法改進、性能測試,使得視頻編解碼算法的優化改進得以在一個高起點上快速進行。本文分別介紹了平臺搭建步驟(包括UBoot、Linux、ffmpeg的移植)和基于ffmpeg開發的要點。

1 ffmpeg簡介

ffmpeg是一個集錄制、轉換、音/視頻編解碼功能為一體的、完整的開源解決方案。ffmpeg的開發基于Linux操作系統,也可在大多數操作系統中編譯和使用。ffmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼,AVI、MPEG、OGG、Matroska、ASF等90多種解碼;TCPMP、VLC、MPlayer等開源播放器都用到了ffmpeg。它能夠快速實現音視頻格式轉換,也能從音視頻源獲取數據并將其保存。在捕獲視頻數據時可以設置捕獲設備和視頻輸入標準(包括NTSC、PAL 及SECAM),對于DV1394還可設置視頻捕獲通道。ffmpeg 使用video4linux 架構的視頻源,以及其他任何開源系統的音頻源。

2 建立嵌入式Linux開發平臺

2.1 bootloader移植

UBoot是一個著名的開放源碼項目,支持ARM、PowerPC等多種架構的處理器,也支持Linux、NetBSD 和VxWorks 等多種操作系統。UBoot是用于初始化目標板硬件,為嵌入式操作系統提供目標板硬件配置信息,完成嵌入式操作系統裝載、引導和運行的固件程序。

本嵌入式平臺硬件環境的CPU為S3C2410,板上用來啟動的NOR Flash為Intel公司的E28F320J3。移植工作的板極配置主要是配置好NOR Flash的驅動,用于存放UBoot鏡像文件,配置網卡芯片是為了可以使用網絡加載Linux內核鏡像文件。

本平臺使用uboot1.1.5版本,使用cross3.2交叉編譯工具[2]。UBoot的移植詳見參考文獻[3]。在其基礎上,筆者做了以下修改:新建開發板目錄,名稱為myboard,拷貝driver/cfi_flash.c代替 board/myboard/flash.c,并改名為flash.c。修改include/configs/myboard.h文件,添加(或者修改為)如下宏定義:

#define CFG_FLASH_CFI1

#define CFG_FLASH_DRIVER1

#define CFG_FLSH_USE BUFFER_WRITE 1

#define CFG_FLASH_PROTECTION1

#define CFG_ENV_IS_IN_FLASH1

#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x40000)

#define CFG_ENV_SECT_SIZE(0x20000)

#define CFG_INIT_CRITICAL1

UBoot編譯好之后下載到開發板,設置網卡物理地址、IP地址、服務器地址和啟動參數,并把系統控制權交給Linux操作系統。其中,啟動參數用來自動從服務器下載編譯好的Linux內核。設置UBoot的命令如下:

#setenv bootcmd tftp 32000000 uImage\\;bootm 32000000

#saveenv

2.2 Linux移植

本文移植Linux2.6內核。2.6內核比2.4內核在調度器性能、實時性、內核可搶占性等方面都有大幅提高。參照參考文獻[3]進行移植,在文件系統方面,為方便開發調試,采用NFS網絡文件系統。在裁減配置內核時,選擇NFS配置。內核配置的kernel command line如下:

root=/dev/nfs rw nfsroot=192.168.0.1:/home/arm/rootfs noinitrd init=/linuxrc console=ttySAC0,115200 ip=192.168.0.2

2.3 USB攝像頭驅動配置

USB攝像頭使用網眼V2000。這款攝像頭使用ov511芯片,它的驅動在配置Linux內核時可以選擇加載。

3 建立ffmpeg的嵌入式運行環境

3.1 ffmpeg的移植及編譯

下載最新的ffmpeg包解壓縮,在嵌入式平臺上使用開發包需要交叉編譯,手工修改配置文件如下:

#vi configure

prefix="/home/arm/files/video/libffmpge"

cross_prefix="usr/local/arm/3.4.1/bin/"

cc="armlinuxgcc"

ar="armlinuxar"

ranlib="armlinuxranlib"

strip="armlinuxstrip"

然后運行命令

./configure cpu=armv4l enable shared enable pthreads

參考文獻[4]直接使用ffmpeg編譯后產生的可執行文件來采集視頻。本文中應用程序開發需要用到ffmpeg的動態庫,加上enableshared即可。配置完成后,運行make、make install 命令,可在路徑/home/arm/files/video/libffmpge下生成可供嵌入式平臺程序動態調用的庫libavformat.so和libavcodec.so。

3.2 視頻處理應用程序開發

基于ffmpeg開發的文檔資料不多,因此,本文對ffmpeg的使用進行詳細說明。本文基于ffmpeg庫的應用是低幀率視頻采集編碼與網絡傳輸。這里以H.263編碼格式為例。

應用程序要用到幾個主要的結構:

AVFormatContext *m_pFormatCtx_dec;

AVCodecContext *m_pCodecCtx_dec;

AVCodec*m_pCodec_dec;

AVFrame*m_pFrame_dec;

AVCodecContext *m_pCodecCtx_cd;

AVCodec*m_pCodec_cd;

應用程序主要流程如圖1所示。

圖1 應用程序主要流程

下面具體介紹核心函數和主要數據結構的使用。

初始化部分:

//指定設備"/dev/v4l/video0"及視頻分辨率等參數

AVFormatParameters formatParams;

AVInputFormat* pInputFormat;

char *filename = "";

pInputFormat = av_find_input_format("video4linux");

(1) 找到視頻流

//注冊庫中含有的所有可用的文件格式和編碼器

av_register_all();//打開視頻攝像頭文件

av_open_input_file(&m_pFormatCtx_dec,filename,pInputFormat,0,&formatParams);//取出包含在文件中的流信息,用有效的信息把AVFormatContext的流域(streams field)填滿

av_find_stream_info(m_pFormatCtx_dec);

if(m_pFormatCtx_dec>streams[i]>codec.codec_type == CODEC_TYPE_VIDEO)

m_videostream = i; //尋找第一個視頻流

(2) 得到視頻流編碼上下文的指針

m_pCodecCtx_dec = &(m_pFormatCtx_dec>streams[m_videostream]>codec);//尋找視頻流的解碼器并打開它

m_pCodec_dec = avcodec_find_decoder(m_pCodecCtx_dec>codec_id);

avcodec_open(pCodecCtx, pCodec);

(3) 分配空間用來存儲解碼后的圖片

m_pFrame_dec = avcodec_alloc_frame();

(4) 設置編碼器

編碼器參數需在m_pCodec_cd中初始化。

m_pCodec_cd = avcodec_find_encoder(CODEC_ID_H263P);//H.263格式

avcodec_open(m_pCodecCtx_cd,m_pCodec_cd);

(5) 開始編碼

初始化完畢之后,就可以對攝像頭取得的視頻幀進行解碼,解碼完成之后再對其編碼。

avcodec_decode_video(pCodecCtx_dec,pFrame_dec,&frameFinished, packet.data,packet.size);

avcodec_encode_video(pCodecCtx_cd,pOutBuf,pVideoCap>m_out_buf_size,pFrame_dec);

每幀編完碼之后,可以調用網絡接口發送視頻數據到網絡終端,實現遠程監控或者測試。

4 視頻編解碼算法改進與開發方法

應用程序編寫時調用ffmpeg庫函數,方法簡單易行。調用原始的未進行算法改進的庫函數并不能得到理想的編解碼速度,因此需要對原來的開發包源代碼進行算法級改進。核心的運行量大的算法需要改用匯編代碼,以充分挖掘硬件潛力。對源碼修改之后重新編譯,得到可供應用程序調用的動態庫,而應用程序本身不必進行修改,因此非常方便。

結語

本文介紹的視頻開發方法可以省去開發過程中第一階段和部分第二階段的工作量,從而快速地對現有算法進行改進、優化、測試。另外,本平臺搭建方法也可以用于其他硬件平臺(如ADSPBF561平臺)上,以滿足更高的實時性需求。

參考文獻

[1] 安向陽,沈庭芝.基于DSP TMS320DM642的H.264視頻編碼的實現和優化[J]. 微計算機信息,2005,21(72): 128130.

[2] http://ftp.arm.linux.org.uk/pub/ armlinux/toolchain/.

[3] 吳張順,張珣. 基于ffmpeg的視頻編碼存儲研究與實現[J]. 杭州電子科技大學學報,2006,26(3): 3034.

蔣志峰((碩士研究生),主要研究方向為嵌入式系統、視頻信號處理。

 

作者:佚名 合作媒體:不詳 編輯:顧北

 

 

 
 熱點技術
普通技術 “5G”,真的來了!牛在哪里?
普通技術 5G,是偽命題嗎?
普通技術 云視頻會議關鍵技術淺析
普通技術 運營商語音能力開放集中管理方案分析
普通技術 5G網絡商用需要“無憂”心
普通技術 面向5G應運而生的邊緣計算
普通技術 簡析5G時代四大關鍵趨勢
普通技術 國家網信辦就《數據安全管理辦法》公開征求意見
普通技術 《車聯網(智能網聯汽車)直連通信使用5905-5925MHz頻段管理規定(
普通技術 中興通訊混合云解決方案,滿足5G多元業務需求
普通技術 大規模MIMO將帶來更多無線信道,但也使無線信道易受攻擊
普通技術 蜂窩車聯網的標準及關鍵技術及網絡架構的研究
普通技術 4G與5G融合組網及互操作技術研究
普通技術 5G中CU-DU架構、設備實現及應用探討
普通技術 無源光網絡承載5G前傳信號可行性的研究概述
普通技術 面向5G中傳和回傳網絡承載解決方案
普通技術 數據中心布線系統可靠性探討
普通技術 家庭互聯網終端價值研究
普通技術 鎏信科技CEO劉舟:從連接層構建IoT云生態,聚焦CMP是關鍵
普通技術 SCEF引入需求分析及部署應用
  版權與免責聲明: ① 凡本網注明“合作媒體:通信界”的所有作品,版權均屬于通信界,未經本網授權不得轉載、摘編或利用其它方式使用。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:通信界”。違反上述聲明者,本網將追究其相關法律責任。 ② 凡本網注明“合作媒體:XXX(非通信界)”的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。 ③ 如因作品內容、版權和其它問題需要同本網聯系的,請在一月內進行。
通信視界
華為余承東:Mate30總體銷量將會超過兩千萬部
趙隨意:媒體融合需積極求變
普通對話 苗圩:建設新一代信息基礎設施 加快制造業數字
普通對話 華為余承東:Mate30總體銷量將會超過兩千萬部
普通對話 趙隨意:媒體融合需積極求變
普通對話 韋樂平:5G給光纖、光模塊、WDM光器件帶來新機
普通對話 安筱鵬:工業互聯網——通向知識分工2.0之路
普通對話 庫克:蘋果不是壟斷者
普通對話 華為何剛:挑戰越大,成就越大
普通對話 華為董事長梁華:盡管遇到外部壓力,5G在商業
普通對話 網易董事局主席丁磊:中國正在引領全球消費趨
普通對話 李彥宏:無人乘用車時代即將到來 智能交通前景
普通對話 中國聯通研究院院長張云勇:雙輪驅動下,工業
普通對話 “段子手”楊元慶:人工智能金句頻出,他能否
普通對話 高通任命克里斯蒂安諾·阿蒙為公司總裁
普通對話 保利威視謝曉昉:深耕視頻技術 助力在線教育
普通對話 九州云副總裁李開:幫助客戶構建自己的云平臺
通信前瞻
楊元慶:中國制造高質量發展的未來是智能制造
對話亞信科技CTO歐陽曄博士:甘為橋梁,攜"電
普通對話 楊元慶:中國制造高質量發展的未來是智能制造
普通對話 對話亞信科技CTO歐陽曄博士:甘為橋梁,攜"電
普通對話 對話倪光南:“中國芯”突圍要發揮綜合優勢
普通對話 黃宇紅:5G給運營商帶來新價值
普通對話 雷軍:小米所有OLED屏幕手機均已支持息屏顯示
普通對話 馬云:我挑戰失敗心服口服,他們才是雙11背后
普通對話 2018年大數據產業發展試點示范項目名單出爐 2
普通對話 陳志剛:提速又降費,中國移動的兩面精彩
普通對話 專訪華為終端何剛:第三代nova已成為爭奪全球
普通對話 中國普天陶雄強:物聯網等新經濟是最大機遇
普通對話 人人車李健:今年發力金融 拓展汽車后市場
普通對話 華為萬飚:三代出貴族,PC產品已走在正確道路
普通對話 共享退潮單車入冬 智享單車卻走向盈利
普通對話 Achronix發布新品單元塊 推動eFPGA升級
普通對話 金柚網COO邱燕:天吳系統2.0真正形成了社保管
国产91免费_国产精品电影一区_日本s色大片在线观看_中文在线免费看视频

      欧美一区二区三区视频免费| 亚洲国产精品一区二区尤物区| 亚洲午夜精品在线| 粉嫩av一区二区三区| 精品剧情v国产在线观看在线| 偷拍一区二区三区| 欧美亚洲国产怡红院影院| 亚洲乱码中文字幕| 97aⅴ精品视频一二三区| 国产欧美日韩卡一| 国产一区中文字幕| 久久久久一区二区三区四区| 国产麻豆精品在线观看| 久久精品综合网| 国产一区高清在线| 国产丝袜美腿一区二区三区| 国产精品乡下勾搭老头1| 久久麻豆一区二区| 东方aⅴ免费观看久久av| 日本一区二区不卡视频| www.久久久久久久久| 国产精品福利一区二区| 91在线观看美女| 一区二区三区在线高清| 欧美日韩www| 蜜臀av在线播放一区二区三区| 91.麻豆视频| 国精产品一区一区三区mba桃花| 精品国产麻豆免费人成网站| 国产一区二区调教| 欧美国产一区在线| 99久久伊人网影院| 亚洲制服丝袜在线| 日韩视频123| 国产精品18久久久久久久久久久久| 国产午夜亚洲精品理论片色戒| jizzjizzjizz欧美| 日韩精品资源二区在线| 国产精品综合网| 亚洲日本在线视频观看| 欧美福利视频导航| 国产精品资源在线观看| 最新国产精品久久精品| 欧美剧在线免费观看网站| 国产一区二区免费视频| 亚洲免费在线视频一区 二区| 欧美日韩精品欧美日韩精品| 国产乱人伦偷精品视频免下载| 亚洲欧美日韩综合aⅴ视频| 欧美区在线观看| 懂色av一区二区夜夜嗨| 午夜欧美电影在线观看| 欧美激情综合在线| 欧美无乱码久久久免费午夜一区| 久久99精品久久久| 日韩理论电影院| 日韩午夜在线影院| 色综合咪咪久久| 国产一区二区成人久久免费影院 | 日本精品裸体写真集在线观看| 日本美女视频一区二区| 国产精品成人一区二区艾草 | 69精品人人人人| 成人免费视频一区| 日韩精品视频网站| 国产精品对白交换视频| 26uuu亚洲婷婷狠狠天堂| 欧美艳星brazzers| 99视频热这里只有精品免费| 美女免费视频一区| 亚洲一区二区视频在线观看| 国产欧美久久久精品影院| 欧美三区在线视频| 97成人超碰视| 丁香一区二区三区| 国模娜娜一区二区三区| 日韩av电影天堂| 亚洲午夜一二三区视频| 国产精品免费网站在线观看| 日韩午夜电影在线观看| 在线一区二区三区做爰视频网站| 国产精品正在播放| 精品一区二区三区av| 日本最新不卡在线| 亚洲aⅴ怡春院| 亚洲综合视频在线观看| 亚洲免费av观看| 日韩一区中文字幕| 中文字幕在线观看不卡| 欧美国产丝袜视频| 久久久久久久久久久99999| 日韩欧美一卡二卡| 日韩女优av电影| 日韩欧美高清一区| 日韩精品在线一区二区| 精品国产亚洲在线| 日韩免费观看高清完整版在线观看| 欧美精品国产精品| 日韩一级欧美一级| 精品国产乱码久久久久久蜜臀 | 成人一区在线看| 国产精品一区二区三区网站| 国产不卡在线视频| 丰满放荡岳乱妇91ww| 99久久精品99国产精品| 91色porny| 欧美在线观看视频一区二区| 在线观看亚洲精品| 91精品国产综合久久婷婷香蕉 | 一本色道综合亚洲| 欧美综合久久久| 3751色影院一区二区三区| 69堂成人精品免费视频| 精品成人在线观看| 国产精品视频看| 亚洲男人的天堂在线aⅴ视频| 一级女性全黄久久生活片免费| 亚洲国产欧美在线人成| 日本女人一区二区三区| 国产一区二区伦理| 91丝袜国产在线播放| 欧美性大战久久久久久久| 91精品婷婷国产综合久久竹菊| 26uuu久久天堂性欧美| 亚洲欧洲www| 日韩国产在线一| 国产精品1区2区| 在线视频一区二区免费| 日韩一级大片在线观看| 亚洲国产经典视频| 亚洲成人av电影在线| 精品影视av免费| 色综合色综合色综合色综合色综合| 欧美日韩一区视频| 久久久久久久性| 亚洲午夜私人影院| 国产精品综合一区二区三区| 欧美午夜一区二区| 精品国产乱码91久久久久久网站| 亚洲精品五月天| 玖玖九九国产精品| 91网址在线看| 日韩欧美一区二区视频| 中文字幕一区二区三区精华液| 日韩不卡一区二区| av午夜一区麻豆| 精品第一国产综合精品aⅴ| 一个色妞综合视频在线观看| 国产专区欧美精品| 欧美麻豆精品久久久久久| 国产精品久久久久影院| 久久99国产精品尤物| 欧洲精品在线观看| 中文字幕在线不卡一区二区三区| 久久精品二区亚洲w码| 99久精品国产| 国产亚洲精品aa午夜观看| 日本三级亚洲精品| 色天天综合色天天久久| 国产调教视频一区| 麻豆精品在线播放| 欧美日韩国产精选| 亚洲精品乱码久久久久久久久| 国产91精品在线观看| www久久久久| 裸体一区二区三区| 91麻豆精品国产91久久久使用方法 | 中文字幕一区二区在线观看| 国产一区二区在线看| 欧美一区二区三区影视| 午夜精品久久久久久久99樱桃| 日本精品一级二级| 成人免费视频免费观看| 91福利视频久久久久| 精品国产一区二区精华| 日本美女一区二区三区视频| 欧美日韩视频一区二区| 久久久久免费观看| 久久99热99| 久久这里只有精品首页| 极品少妇一区二区三区精品视频| 欧美一区在线视频| 视频一区二区三区中文字幕| 欧美精品xxxxbbbb| 亚洲成人免费在线| 69久久99精品久久久久婷婷| 日韩av不卡一区二区| 欧美一区二区成人| 九九视频精品免费| 国产婷婷一区二区| 从欧美一区二区三区| 国产精品网友自拍| 99久久精品免费看国产免费软件| 国产精品高潮呻吟| 91美女片黄在线观看| 亚洲在线视频免费观看| 欧美日韩aaaaaa| 久草热8精品视频在线观看| 久久综合久久久久88| 成人18精品视频|