欠揍的ffmpeg,調試android裡的ffmpeg (1)

來源:互聯網
上載者:User

標籤:

目標問題

  1. 對於jpeg的編碼為什麼不用libjpeg而是用mpeg(沒錯就是這電影老古董格式)裡代碼?

    其實發現就連wmv等等一些平時用不著的破東西,都是和mpeg老古董共用一套代碼。jpeg和mpeg沒什麼關係吧?overhead不大嗎?

  2. 為什麼mjpeg(就是連續的jpeg)編碼輸出時,編碼第N+1副圖時才真正的輸出第N幅圖的jpeg編碼結果?

  3. 每得到一副原圖輸入資料,那麼記憶體就似乎被copy到新記憶體,然後廢棄,巨大的圖片的時候,這種copy很浪費CPU,如何讓他不要copy而是直接用原始記憶體。反正一幅幅圖來也不著急,幹嘛要copy 呢。


先編一個android裡用的ffmpeg命令列,要debug版的,關鍵是configure時加上

--enable-debug --disable-stripping

例如: 

  從NDK裡準備一個標準的gcc tool chain以便後面的跨平台編譯。

echo ---------------make standard GCC Tool Chain from Android NDK--------------------ls -d ./std_toolchain && { echo ./std_toolchain already exist; exit 0; }printenv ANDROID_NDK_ROOT > /dev/null || { echo please export ANDROID_NDK_ROOT=root_dir_of_your_android_ndk; exit 1; }PLATFORM=$(basename $(ls -d $ANDROID_NDK_ROOT/platforms/android-8)); test -z $PLATFORM && exit 1TOOLCHAIN=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].* | tail -n 1)); test -z $TOOLCHAIN && exit 1WORK_SYSTEM=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].*/prebuilt/* | tail -n 1)); test -z $WORK_SYSTEM && exit 1$ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --install-dir=./std_toolchain --platform=$PLATFORM --toolchain=$TOOLCHAIN --system=$WORK_SYSTEM --arch=arm --verboseecho ""; echo ok; echo ""export PATH="$PWD/std_toolchain/bin:$PATH"export CC=arm-linux-androideabi-gcc

然後到ffmpeg的源碼下執行configure

./configure --enable-cross-compile --cross-prefix=arm-linux-androideabi- --target-os=linux     --arch=armv7 --cpu=armv7-a     --disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-debug --disable-stripping --disable-everything     --enable-static    --enable-protocol=pipe    --enable-filter=scale --enable-filter=crop --enable-filter=transpose    --enable-demuxer=rawvideo --enable-decoder=rawvideo    --enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=mjpeg --enable-encoder=mjpeg

只是一個例子而已,只留下了rawvideo輸入格式和mjpeg輸出格式的支援。

然後make, 得到ffmpeg。

傳到android的/data/local/tmp/上。

(一些更具體的準備性質的步驟參照Android native debug: 手動使用gdbserver遠端偵錯C代碼)

然後,開始啟動gdbserver, 

待續。


欠揍的ffmpeg,調試android裡的ffmpeg (1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.