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;
감사
내장 미디어 레코더는 칩에 최적화되어 내장 된 하드웨어 인코더를 사용합니다. 어떤 해상도의 비디오를 인코딩합니까? 1 프레임/1 초가 매우 느린 것 같습니다! 또한 테스트 할 장치의 프로세서 기능에 대한 자세한 정보를 게시해야합니다. – d33pika
답장을 보내 주셔서 감사합니다! – tishu
Android에서의 개발에 익숙하지 않고 내부 드라이버에 대한 접근 방법이 확실하지 않습니다. 카메라에서 녹음을 처리하는 드라이버를 찾을 수 있다면 가장 좋은 방법은 다음과 같습니다. 그것을 통해 비디오를 피드. 대부분의 비디오 앱은 서버 측에서 비디오를 코드 변환합니다. – d33pika