2013-01-20 3 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 및 비활성화 디버그를 활성화해야합니다입니다. 불쾌한 경고를 피하려면

make STRIP=