- 博客(11)
- 收藏
- 关注
转载 將 SDL整合至Android平台
<br />網路上有很多文章在講解如何將SDL整合到Android的平台上,我自己也試著動手做看看,順便將一些步驟及心得整理起來。<br /><br />以下是這次我所用到的開發環境。<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-windows<br />- SDL:1.2.14<br /><br /><br />《Step 1》<br />將SDL中的Makefile.minimal修改如下 (紅體字) :<br /><br />#
2011-01-10 10:11:00 4738
转载 在 Android上實作一個FFmpeg+SDL的media player
<br />我們想要在Android上面開發自己的media player,第一個想到的就是利用FFmpeg來實作。FFmpeg是一個跨平台的編解碼函式庫,我們可以呼叫它所提供的API來完成。另外,FFmpeg有提供一個小程式ffplay,它本身就是一個media player,所以我們打算以ffplay作為程式的基礎。<br /><br />以下是這次我所用到的開發環境:<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-window
2011-01-10 10:11:00 5490 2
转载 將 FFmpeg整合至Android平台
<br /><br />FFmpeg是一個跨平台的影音編解碼函式庫,我們可以用來實作一個在Android平台上的media player。首先先build出一個Android版本的FFmpeg。<br /><br />以下是這次我所用到的開發環境:<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-windows<br />- FFmpeg:0.6.1<br /><br /><br />《Step 1》<br />在Android NDK上
2011-01-10 10:10:00 3857 2
转载 Stagefright (7) - Audio和Video的同步
<br /><br />講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A
2011-01-10 09:41:00 1112
转载 Stagefright (7) - Audio和Video的同步
<br /><br />講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A
2011-01-10 09:41:00 1244 1
转载 Stagefright (6) - Audio Playback的流程
<br />到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。<br /><br />Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。<br /><br /><br />(1) 當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動<br /><br />status_t AwesomePlayer::play_l()<
2011-01-10 09:40:00 884
转载 Stagefright (5) - Video Rendering
<br />AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。<br /><br />(1) 要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderer<br /><br />void AwesomePlayer::onVideoEvent()<br />{<br /> ...<br /><br /> if (
2011-01-10 09:39:00 1172
转载 Stagefright (4) - Video Buffer傳輸流程
<br />這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。<br /><br />(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來<br /><br />status_t OMXCodec::read(...)<br />{<br /> if (mInitialBufferSubmit)<br /> {<br /> mInitialBuf
2011-01-10 09:38:00 1222
转载 Stagefright (2) - 和OpenMAX的運作
Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){ mClient.connect();}status_t OMXClient::connect(){ mOMX = service->getOMX();}sp MediaPlayerService::getOMX(
2011-01-10 09:37:00 1461
转载 Stagefright (3) - 選擇Video Decoder
<br />在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。<br /><br />(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的<br /><br />OMXCodec::Create()會回傳video decoder給mVideoSource。<br /><br /
2011-01-10 09:37:00 1440
转载 Stagefright (1) - Video Playback的流程
<br /><br />在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相當穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢。以下我們就先來看看Stagefright是如何播放一個影片檔。<br /><br />Stagefright在
2011-01-10 09:34:00 1918
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人