2013-01-20 39 views
0

我最近構建了一個視頻編碼類,該類使用ffmpeg和本機代碼在Android上運行。編碼視頻花費的時間令我感到驚訝,最好是每秒大約1幀。我已經嘗試過使用x264以及針對速度和mpeg進行了優化的設置 - 沒有真正的區別。Android上的X264和ARM編碼

x264庫現在支持ARM體系結構,並且對於超過20fps編碼速度的這些吹噓效率非常高。我不確定我是否正確使用它。這裏我用來編譯的腳本:

./configure --prefix=$PREFIX \ 
--enable-shared \ 
--enable-static \ 
--disable-gpac \ 
--enable-debug \ 
--extra-cflags=" -I$ARM_INC -fPIC -DANDROID -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -msoft-float -mthumb -O3 -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID -Wa,--noexecstack -MMD -MP " \ 
--extra-ldflags=" -nostdlib -Bdynamic -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,nocopyreloc -Wl,-soname,/usr/lib/libz.so -Wl,-rpath-link=$ARM_LIB,-dynamic-linker=/system/bin/linker -L$ARM_LIB -lc -lm -ldl -lgcc" \ 
--cross-prefix=${ARM_PRE}- \ 
--disable-asm \ 
--host=arm-linux \ 

我相信最後一行應該是我所說的那樣,即啓用ARM優化。也許我錯過了一些東西。

對於我在Nexus 7平板電腦上編碼640x480視頻的信息。這裏是我的編碼器設置(X264)

c->gop_size  = 12; 
c->pix_fmt  = PIX_FMT_YUV420P; 
c->max_b_frames = 0; 
c->scenechange_threshold = 0; 
c->rc_buffer_size = 0; 

感謝

+0

內置的媒體錄像機將使用硬件編碼器,爲手機芯片進行優化和構建。你編碼的是什麼分辨率的視頻? 1幀/ 1秒似乎很慢!此外,您必須發佈更多關於您正在測試的設備的處理器功能的詳細信息。 – d33pika

+0

感謝您的回覆!在原文中添加了這些細節 – tishu

+0

我對Android上的開發並不熟悉,我不確定您對內部驅動程序的訪問有多混雜,如果您可以找到處理來自相機的驅動程序,那麼最好的辦法是通過它提供視頻。大多數視頻應用在服務器端轉碼視頻。 – d33pika

回答

0

您應該啓用ASM和禁用調試。爲了避免令人討厭的warnimgs,運行

make STRIP=