日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FLV视频格式解码软件开发

發布時間:2023/12/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FLV视频格式解码软件开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??????????????????? ???(? 作者:孫德生?????????? 深大碩士研究生??) FLV流媒體格式是一種新的視頻格式,全稱為Flash VideoFlash MX 2004對其提供了完美的支持,它的出現有效地解決了視頻文件導入Flash后,使導出的SWF文件體積龐大,不能在網絡上很好的使用等缺點。FLV Macromedia?公司開發的屬于自己流式視頻格式。這種格式是在sorenson?公司的壓縮算法的基礎上開發出來的[20]FLV 壓縮與轉換非常方便,適合做短片。一般FLV 包在 SWF PLAYER 的殼里,并且 FLV 可以很好的保護原始地址,不容易下載到起到保護版權的目的。 Macromedia為了盡早用FLV格式來壟斷Web Video應用,取代RM在線視頻播放的霸主地位,在FlashMX2004中匆匆增加了一個Video類,短短兩三年的時間,FLV就成為了目前最主流的在線視頻播放格式,隨著被新一代的視頻播客網站廣泛采用,自從youtube火了以后,flv格式也開始火暴,目前國內視頻分享網站,比如六間房5Show56、優酷等都使用flv了這個文件技術來實現的。目前 GOOGLE ?YOUTUBE 采用FLV SOUV.NET 集合全亞洲最多的 FLV,以及百度、新浪、騰訊、貓撲、Maxthon、雅虎等國際國內著名互聯網公司的相繼投入與看好,以及國際資本大量進入視頻播客領域,FLV格式被極大的推廣,甚至新浪在自己的BBS也開通了FLV影片上傳播放服務[21] 5.5.1 FLVRMVB對比 我們都知道一般的視頻文件,要不就是asf格式、wmv格式使用mediaplayer進行播放,要不就是rm格式用RealPlayer播放。這樣的問題是,格式的不同就需要選擇不同的播放器,這對于本地計算機沒有安裝相應播放器的用戶來說,這些視頻根本無法收看。并且,還由于這些文件的容量過大,下載慢,查看也不很流暢。所以,解決播放器和容量的問題,運用Flash有個方法:將各類視頻文件轉換成Flash視頻文件。容量方面,從FlashMX2004Pro起就支持了轉換為Flash視頻的功能,經過相關設置后,可縮小原有視頻的容量,最終轉換的文件擴展名是FLV 下面就把RMVBFLV這兩種主流視頻文件格式簡單對比分析如表5-5。對于兩種格式,誰更出色,而另一個主要方面就是哪種格式更適合便攜式產品采用。 表5-5?RMVB和FLV兩種視頻文件比較分析
RMVB格式 FLV格式
分辨率 700-800*272-350)之間 一般播課網影片分辨率為320*240
幀速度 2425FPS 20FPS左右
文件體積 5M/分鐘,一個影片文件體積在400-700M之間 1.5M/分鐘,一個影片體積在200M左右
視頻主要類型 電影/電視劇(動漫)/綜藝節目為主 電影、電視劇(動漫)、游戲、新聞、體育視頻錄象、綜藝節目視頻、網友自拍影片、視頻等
下載行為 BT網站論壇檢索,獲得影視下載信息,使得P2P模式BT軟件下載 WEB2.0播客獲得,可使用多FLV下載軟件
  我們可以看到目前RMVB影片的最大優勢是分辨率更高,在電腦上實際播放效果更出色,視頻影片多為長片,文件體積較大,需要通過BT或者電驢軟件下載。FLV的最大優勢是資源類型豐富與文件體積較小,由于分辨率低,在電腦上播放畫面質量不如RMVB。但是在PMP上取決于LCD屏的分辨率,因為PMP產品的LCD屏不可能很大,所以在這方面FLV格式的優勢還是有很大優勢的。 由于網絡播客網站越來越受消費者歡迎,FLV視頻已經已經無限量,比RMVB更豐富、種類更多的FLV視頻資源可直接下載到PMP中播放。 5.5.2FLV解碼軟件開發 FLV解碼軟件開發的開發,在本課題中是利用的FFmpeg為基礎的。FFmpeg是一個集錄制、轉換、音/視頻編碼解碼功能為一體的完整的開源解決方案[23]FFmpeg的開發是基于Linux操作系統,但是可以在大多數操作系統中編譯和使用。FFmpeg支持MPEGDivXMPEG4AC3DVFLV40多種編碼,AVIMPEGOGGMatroskaASF90多種解碼。TCPMP, VLC, MPlayer等開源播放器都用到了FFmpeg [24]FFmpeg主目錄下主要有libavcodeclibavformatlibavutil等子目錄。其中libavcodec用于存放各個encode/decode模塊,libavformat用于存放muxer/demuxer模塊,libavutil用于存放內存操作等常用模塊。 flash movieflv文件格式為例, muxer/demuxerflvenc.cflvdec.c文件在libavformat目錄下,encode/decodempegvideo.ch263de.clibavcodec目錄下。 FLV視頻文件格式實際上并沒有明確指出應該使用哪種編碼來解析音頻和視頻數據;它們只是定義了音頻流和視頻流(或者,有可能是多個音頻視頻流)如何被綁定在一個文件里面。這就是為什么有時候,當你打開了一個FLV文件時,你只能聽到聲音,卻不能看到圖象--因為沒有合適的視頻解碼器。所以,libavformat 用來處理解析視頻文件并將包含在其中的流分離出來,而libavcodec 則處理原始音頻和視頻流的解碼。 解碼處理流程: 1、?? 通過函數flvdec_init(void)注冊初始化編碼器,通過REGISTER_MUXDEMUX(FLV, flv)完成對FLV格式的注冊,內含音頻視頻編解碼的初始化; 2、?? 打開視頻文件,通過av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)實現, 通過av_find_stream_info(pFormatCtx)dump_format(pFormatCtx, 0, filename, false)分析文件數據包編碼格式,再把pFormatCtx的流域填滿; 3、通過avcodec_find_decoder(pCodecCtx->codec_id)找到相應的解碼器,
?4
、打開解碼器,通過函數(avcodec_open(pCodecCtx, pCodec) 5、視頻數據解碼通過avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, rawData, bytesRemaining)解析視頻數據包,得到視頻幀,GetNextFrame(AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame *pFrame );視頻編碼格式為FLV1 6、音頻數據包通過avcodec_decode_audio()解碼,得到的數據存入buffer中,根據時間戳來實現音視頻的同步;音頻編碼格式有PCMADPCMMP3 7、釋放解碼器,關閉解碼器(codec),avcodec_close(pCodecCtx); 關閉視頻文件av_close_input_file(pFormatCtx); 表5-6?FLV解碼軟件中部分重要處理函數接口
函數接口 作用
flv_probe() 探測文件是否為FLV文件
flv_read_packet ( ) 讀入數據包,分析數據包
flv_read_close( ) 關閉讀操作
flv_read_header() 讀入頭數據
av_register_input_format() 初始化輸入格式
5.5.3 FLV開發體會??????????????????????????????????????????? 在開發中,是利用的基礎的FFMPEG開源的開發包,在其中提取FLV相關代碼進行開發實踐,得到最后的解碼軟件,對于解碼代碼的編寫都是利用開發包里面的,主要工作還是在于移植到本課題的開發平臺。因為本課題用的硬件系統的局限性,以及FFMPEG開發包本來也是沒有經過嚴格測試的,最后得到的解碼軟件在機子上播放,會有卡機現象,不是很流暢。 為了開發出質量更高,符合市場需求的FLV解碼軟件,除了通過購買編解碼庫,就只能通過一些開源的包再做深入的開發,得到需要的解碼軟件產品。

總結

以上是生活随笔為你收集整理的FLV视频格式解码软件开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。