欧美激情精品在线_久久人人爽人人爽爽久久_亚洲最大激情中文字幕_久久国产精品 国产精品

您現在的位置: 通信界 >> 視頻通信 >> 技術正文  
 
ffmpeg的快速音視頻開發方法[圖]
[ 通信界 / 佚名 / m.ydtdhmb.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真正形成了社保管
欧美激情精品在线_久久人人爽人人爽爽久久_亚洲最大激情中文字幕_久久国产精品 国产精品
日本a视频在线观看| 久久99热精品| 一区二区三区四区视频在线| 欧美亚洲国产成人精品| 91av在线网站| 亚洲一区三区在线观看| 国产美女三级视频| 久久亚洲国产精品成人av秋霞| 热99这里只有精品| av免费观看国产| 中文字幕一区二区三区有限公司| 国产日本一区二区三区| 久久的精品视频| 国内伊人久久久久久网站视频| 久久久久久久久国产| 色中文字幕在线观看| 国产精品av在线播放 | 一女被多男玩喷潮视频| 国产麻豆电影在线观看| 久久国产精品视频| 国产欧美精品一区二区三区| 欧美理论片在线观看| 国产区日韩欧美| 精品不卡一区二区三区| 国产免费一区二区三区四在线播放 | 精品欧美日韩| 国产精品久久久久久影视| 狠狠色噜噜狠狠色综合久| 国产精品区一区二区三在线播放| 免费国产一区二区| 不卡av电影院| 成人国产一区二区三区| 亚洲国产精品影视| 久久久精品国产一区二区三区| 日本不卡在线播放| 国产精品久久久久免费| 国产免费一区二区| 欧美精品电影在线| 91精品久久久久久久久久入口| 日本精品视频一区| 国产精品久久中文| 成人羞羞国产免费| 日本欧美黄网站| 国产精品老女人精品视频| 国产精品亚洲二区在线观看| 懂色一区二区三区av片| www.日韩av.com| 国产内射老熟女aaaa| 手机看片福利永久国产日韩| 国产成人免费av电影| 国产日韩视频在线观看| 日韩一级片播放| 日韩视频欧美视频| 国产精品一区二区三区在线播放| 色综合影院在线观看| 国产精品久久久久久五月尺| 99视频精品免费| 欧美日韩一区二区三区在线观看免| 国产精品免费一区二区三区四区 | 久久久亚洲影院| 国内偷自视频区视频综合| 中文字幕在线亚洲精品| 国产成人综合精品在线| 免费高清在线观看免费| 亚洲 国产 日韩 综合一区| 久久九九亚洲综合| 成人国产精品色哟哟| 欧美一区免费视频| 亚洲色成人一区二区三区小说| 久久久久久久久久久免费精品| 国产啪精品视频网站| 日本丰满少妇黄大片在线观看| 久久成人国产精品| 日日摸夜夜添一区| 99伊人久久| 韩国一区二区三区美女美女秀| 亚洲精品一区二区三| 国产精品福利网站| 久久人人97超碰人人澡爱香蕉| 免费观看亚洲视频| 日韩欧美三级一区二区| 亚洲一区影院| 九九热这里只有精品6| 色噜噜久久综合伊人一本| 99国产视频| 国产美女网站在线观看| 欧美成ee人免费视频| 日本一道本久久| 亚洲综合成人婷婷小说| 欧美精品免费播放| 久久精品中文字幕| 国产二区视频在线播放| 高清视频欧美一级| 欧美激情国产精品日韩| 日本一区二区视频| 亚洲精品乱码久久久久久自慰| 欧美精品做受xxx性少妇| 国产精品免费成人| 日韩一区二区三区在线播放| 久久久人成影片一区二区三区观看| 成人免费观看毛片| 国产日韩久久| 国产一区二区四区| 韩国一区二区三区美女美女秀| 欧洲精品在线视频| 日本久久久久久久久| 日韩一区二区三区高清| 亚洲一区二区三区在线免费观看| 不卡av电影在线观看| 国产精品久久久久久久电影 | 久久亚洲国产成人| 国产精品国内视频| 国产精品美女无圣光视频| 国产精品无码电影在线观看| 爽爽爽爽爽爽爽成人免费观看| 久久久久免费网| 国产成人成网站在线播放青青| 97国产精品免费视频| 99久久无色码| 91精品国产高清久久久久久91裸体 | 成年丰满熟妇午夜免费视频| 国产伦精品一区二区| 国产日韩欧美在线观看| 毛葺葺老太做受视频| 国模私拍视频一区| 国产在线播放不卡| 国产欧亚日韩视频| 国产精品综合不卡av| 国产九九精品视频| 国产日韩成人内射视频| 国产伦精品一区二区三区免费视频| 国产欧美日韩综合精品二区 | 日韩欧美亚洲天堂| 欧美亚洲另类制服自拍| 国内少妇毛片视频| 国产日韩欧美在线视频观看| 波多野结衣成人在线| 97国产精品视频| 久久99精品久久久久久秒播放器| 日韩网站免费观看| 国产精品久久久久久久久久| 精品国产免费久久久久久尖叫 | 一区国产精品| 日韩一区二区三区资源 | 91九色偷拍| 九色一区二区| 久久色在线播放| 精品国产免费一区二区三区| 亚洲色欲综合一区二区三区| 日本一区二区三区四区五区六区| 日本va中文字幕| 黄色片网址在线观看| 国产精品伊人日日| 久久久免费看| 久久久久久久久久久亚洲| 国产精品国模大尺度私拍| 亚洲一区二区三区免费观看| 日本一区二区精品视频| 激情五月六月婷婷| 成人久久久久久久久| 久久精品国产精品青草色艺 | 日韩美女中文字幕| 国产一区在线播放| 97精品视频在线| 日韩一区二区三区国产| 久久91亚洲精品中文字幕奶水| 亚洲精品第一区二区三区| 青草青草久热精品视频在线观看 | 国产精品激情av电影在线观看| 亚洲一区二区三区视频| 欧美在线一级va免费观看| 国产欧美亚洲视频| 久久久久久香蕉网| 久久91亚洲精品中文字幕奶水| 色播亚洲视频在线观看| 精品视频一区二区三区四区| 久久免费视频观看| 国产精品黄视频| 日本最新高清不卡中文字幕| 国产一区二区在线免费视频| 国产高清在线一区| 久久97久久97精品免视看| 日韩免费视频播放| www.亚洲一区二区| 国产精品久久久久久久久久久不卡 | 亚洲a∨一区二区三区| 国精产品一区一区三区有限在线| 久久综合亚洲精品| 国产精品欧美一区二区| 少妇久久久久久被弄到高潮| 国产欧美一区二区三区久久| 久久综合伊人77777蜜臀| 日韩在线观看a| av电影一区二区三区| 另类美女黄大片| 欧美激情国产日韩| 国产av人人夜夜澡人人爽麻豆| 欧美激情精品久久久久| 男女超爽视频免费播放| 久久久久日韩精品久久久男男|