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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

【ffmpeg for wince】音视频编解码多平台移植(for window/wince)

發(fā)布時(shí)間:2023/12/18 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ffmpeg for wince】音视频编解码多平台移植(for window/wince) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html

終于完成了了第二個(gè)Client side原型(for Wince),其中花掉我最多時(shí)間的就是ffmpeg的對(duì)WINCE的移植。其中有大半時(shí)間是由于網(wǎng)上的一些不完整及不正確信息所誤導(dǎo),但是沒(méi)有這些零星的信息,我可能花費(fèi)更多的時(shí)間?,F(xiàn)在我把自己的移植過(guò)程分享給大家,我盡量做到事無(wú)巨細(xì),也好讓大家少走彎路,省去我們程序員們的時(shí)間。那可是大把的銀子與信心浪費(fèi)。呵呵,書(shū)歸正傳。

???? 一,第一個(gè)想法,仍像從前移植平臺(tái)代碼一樣,先找到這種跨平臺(tái)代碼的自己的特定平臺(tái)的make文件或工程:

可惜沒(méi)有發(fā)現(xiàn)ffmpeg 有for windows 及 for wince的make 及工程。再細(xì)讀 ffmpeg的官方網(wǎng)站,讓人仰天大笑,其中說(shuō)到,由于VC/Visual studio 開(kāi)發(fā)環(huán)境的編譯器,對(duì)C99支持不好,而ffmpeg又是follow這些C語(yǔ)言規(guī)范寫(xiě)的,因此,不支持VC/VS的編譯器。這比一些跨平臺(tái)項(xiàng)目說(shuō)windows OS is silly OS, not popular POSIX 從而不支持的說(shuō)法更有趣。其實(shí),從IT行業(yè)而言,這些理由都不是那么的合邏輯,也不夠嚴(yán)謹(jǐn)。但代碼是別人寫(xiě)的。我們又能如何呢?呵呵。

??? 二,曲徑通幽,既然ffmpeg不支持windows的編譯器,那我們還有一個(gè)曲折的辦法,它不是支持POSIX嘛 ,也就是支持linux/unix嘛 ,那我們就有了我們的辦法,我們的windows平臺(tái)上的linux編譯器(算一種交叉編譯吧,呵呵)于是大家想到了Cyxwin及 Mingw+Msys,其它,Cyxwin中編譯出windows的平臺(tái)上可用的庫(kù),還是調(diào)用了Mingw的編譯器,于是我們就直接研究Mingw +Msys吧,但是這個(gè)東東有一個(gè)致命的弱點(diǎn),就是要安裝,分別要更新一堆組件,更新到什么版本呢,天知道,都用最新的吧。去相關(guān)的網(wǎng)站去下載他們(http://)不過(guò)Mingw的 sourceforge 網(wǎng)站真不是人去的,里面亂放,而且目錄沒(méi)有一個(gè)明確的索引,網(wǎng)站又慢,我是花了一天時(shí)間才找齊,后來(lái)發(fā)現(xiàn)ffmpeg有一個(gè)說(shuō)明網(wǎng)頁(yè),可以明確下載。請(qǐng)參看(http://ffmpeg.arrozcru.org/wiki/index.php?title=MSys_MinGW)其中下載地址我再列一下,以方便大家:

Mingw: http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780&release_id=595197

Mingw插件更新:

????????? http://prdownloads.sourceforge.net/mingw/binutils-2.18.50-20080109-2.tar.gz?download

????????? http://prdownloads.sourceforge.net/mingw/mingwrt-3.15.1-mingw32-dll.tar.gz?download

????????? http://prdownloads.sourceforge.net/mingw

??????????http://prdownloads.sourceforge.net/mingw/w32api-3.13-mingw32-dev.tar.gz?download

最穩(wěn)定的gcc編譯器for mingw插件:

???????? http://prdownloads.sourceforge.net/mingw/gcc-core-3.4.5-20060117-1.tar.gz?download

?????????http://prdownloads.sourceforge.net/mingw/gcc-g++-3.4.5-20060117-1.tar.gz?download

至于安裝過(guò)程,網(wǎng)上搜一下,不會(huì)有問(wèn)題can't miss it

?????? MSys:http://prdownloads.sourceforge.net/mingw/MSYS-1.0.11-2004.04.30-1.exe?download

相關(guān)插件更新:

???????http://prdownloads.sourceforge.net/mingw/MSYS-1.0.11-20080821-dll.tar.gz?download

?????? http://prdownloads.sourceforge.net/mingw/bash-3.1-MSYS-1.0.11-snapshot.tar.bz2?download

?????? http://prdownloads.sourceforge.net/mingw/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2?download

?????? http://prdownloads.sourceforge.net/mingw/make-3.81-MSYS-1.0.11-2.tar.bz2

?????? 至一Msys的安裝及與Mingw整合在一起,網(wǎng)上查一下,can't miss it,

三 , 開(kāi)始for windows的ffmpeg編譯。這個(gè)ffmpeg論壇上倒有相關(guān)的指導(dǎo)。請(qǐng)參照:

http://ffmpeg.arrozcru.org/wiki/index.php?title=Static

這里有一個(gè)靜態(tài)庫(kù)的編譯。按向?qū)瓿删幾g成靜態(tài)lib庫(kù),可以址接進(jìn)行編譯鏈接到 windows項(xiàng)目中(only for windows平臺(tái),not for wince),好放到一個(gè)新的window項(xiàng)目中,編譯成功,鏈接,一堆的庫(kù)找不到,哈哈,仰天大笑,用工具一查相關(guān)引用,原來(lái)這些找不到函數(shù),還在mingw的庫(kù)中,也就是說(shuō)要在項(xiàng)目中用ffmpeg的靜態(tài)庫(kù),你還要搭上一堆mingw的庫(kù),就像現(xiàn)在市場(chǎng)上的搭配銷(xiāo)售。再笑,我先找個(gè)地方睡半天,緩解我的想扁人的沖動(dòng)。

睡醒之后,換種用法,我編動(dòng)態(tài)庫(kù),這下你不會(huì)不把我的所有函數(shù)給我加到我的DLL里吧,再換了一些ffmpeg的./configure參數(shù)。搞定。生成了動(dòng)態(tài)庫(kù),及l(fā)ib.用到項(xiàng)目里,編譯通過(guò)。不過(guò),這只是萬(wàn)里長(zhǎng)征第一步,我還要最痛苦的for wince的庫(kù)。

四,for wince 的ffmpeg:

????? 從linux的代碼用mingw編成 for windows那是人家mingw的任務(wù),我們也只繞了一道彎,for wince的mingw不存在呀,怎么辦,忽然想到linux上的交叉編譯,人家可以在linux用定制的gcc交叉編譯器弄出for wince的庫(kù),那我們何不在Mingw上搞出for wince的庫(kù),一查,網(wǎng)上果然僅有的解決方案,也就是交叉編譯成for wince 的ffmpeg,所用交叉編譯器,大家可以看仔細(xì)了,

網(wǎng)上有絕大多數(shù)的相關(guān)貼子給的交叉編譯器是不正確的(下載的地址不正確)真搞不懂網(wǎng)上一堆人轉(zhuǎn)載別人的文章,也不去驗(yàn)證一下,轉(zhuǎn)載干嘛?,我就是由于用了網(wǎng)上這些人轉(zhuǎn)載地址去下載編不正確的編譯器,浪費(fèi)了3天的時(shí)間,無(wú)功而返。記住,下載的交叉編譯器是 cegccmingw 下載地址是:()

進(jìn)行編譯。編譯最新的庫(kù),會(huì)有一些匯編通不過(guò)。自己對(duì)匯編不熟悉,不過(guò)要是在linux上交叉編譯應(yīng)該沒(méi)問(wèn)題,有興趣的話,可以自己試那個(gè)環(huán)境,那樣的話,用的交叉編譯器就應(yīng)該是cegcc.

沒(méi)辦法,為了節(jié)省我的時(shí)間,我可是要在兩周內(nèi)完成三個(gè)平臺(tái)的原型開(kāi)發(fā)的。就拿了2007年的ffmpeg來(lái)編。其中也改了不少東西才編譯能通過(guò),首先,./configure 之后,在生成的config.mak中,要修改“SLIB_EXTRA_CMD=-lib /machine:i386 /def:$(@:.dll=.def)”為“SLIB_EXTRA_CMD=-lib /machine:arm /def:$(@:.dll=.def)”,及 “EXTRALIBS= -lm”改為“EXTRALIBS= -lm -lws2.lib”,其中編譯過(guò)程中采取了perror禁用,有seek函數(shù)禁用與替換(由于沒(méi)有用zlib,linux平臺(tái)估計(jì)會(huì)沒(méi)有問(wèn)題).細(xì)節(jié),可以有時(shí)間再寫(xiě),有興趣的話,可以加我MSN。

編譯成功后。用在C++環(huán)境中。測(cè)試普通函數(shù)通過(guò),不過(guò)在視頻編換時(shí),效率不高。

換了一下網(wǎng)上的別人編譯的ffmpeg庫(kù),(網(wǎng)上有一個(gè)下載,不過(guò)此SDK在wince上用時(shí),用在C++項(xiàng)目中有問(wèn)題。頭文件中有重復(fù)定義,解決辦法是放在.c文件中,由Cpp文件來(lái)調(diào)用,這樣可以規(guī)避這些問(wèn)題,但這樣就存在了一些全局變量.這樣的頭文件是不能用在Sybmian平臺(tái)的。

另外一種思路就是不用ffmpeg.用Xvid解 mpeg4(測(cè)試下來(lái)效率好像要高于ffmpeg,畢竟是專(zhuān)門(mén)for mpeg4),用xh264解 H264,拿過(guò)他們的源代碼一看,還是人家這跨平臺(tái),現(xiàn)成的for windows平臺(tái)的工程make文件,這才是真正的跨平臺(tái)。當(dāng)然想要更多功能,ffmpeg地位還是無(wú)人能及。

如果有人對(duì)編解碼做簡(jiǎn)單的跨平臺(tái)移植有興趣,可以加我MSN一起學(xué)習(xí)探計(jì),相互學(xué)習(xí),搞技術(shù)嘛,大家一起共享信息,會(huì)省掉多少人的多少個(gè)不眠之夜,我就是因?yàn)橐恍┬畔⒌牟粶?zhǔn)確,害得我移了一周,每天可都工作到凌晨2點(diǎn)多。

好了,今天就寫(xiě)到這里,至于Symbian平臺(tái)的移植,改天再寫(xiě)。

大家正在看
  • ASP.NET中如何實(shí)現(xiàn)FORM認(rèn)證登錄
  • Ext封裝(二)
  • sqlplus登錄命令
  • 談?wù)刄NIX如何管理磁盤(pán)
  • 志大才疏與工程性
  • 移動(dòng)設(shè)備管理(MDM)與OMA(OTA)DM協(xié)議向?qū)?三)——AAA服務(wù)器
  • JTree操作API
  • 生活定律
  • 【ffmpeg for wince】音視頻編解碼多...
  • junit4 單元測(cè)試
?

總結(jié)

以上是生活随笔為你收集整理的【ffmpeg for wince】音视频编解码多平台移植(for window/wince)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。