[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #4 / FFmpeg 재빌드(64bits)

2019. 6. 10. 18:41Programming/Android

반응형

RTP로 전달된 h264, h265 파일을 차곡차곡 RAW데이터로 저장한 뒤, FFmpeg를 이용해서 Muxing해보니 정상적으로 mp4파일이 생성됐다. 재생도 잘 된다. 파일이 생성되지 않는 것 같아서 잠시 당황했었는데, LG G5에서 PC에 파일 전송모드로 연결했을 때 파일을 제대로 표시하지 못하는 문제가 있었다. File Explorer 앱을 이용해서 확인해보니 파일 생성 및 Muxing에는 문제가 없어서, 일단 기능구현이 완성된 후 고민하기로 했다.

 

2019년 8월부터 64bits를 지원하지 않는 앱은 구글 플레이에 등록 및 업데이트가 불가능하기 때문에, FFmpeg를 다시 빌드하기로 했다. 이전의 빌드 스크립트에서 수정해야 할 곳은 다음과 같다. 이전의 빌드스크립트는 [삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #2 / FFmpeg 빌드를 참조.

//path 관련
SYSROOT=$NDK/platforms/android-21/arch-arm64/ //android-21부터 64bits를 지원한다.
TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 //툴체인을 aarch64로 변경해줘야한다.

//configure 관련
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \ 
--arch=aarch64 \ // 일반적으로는 --arch=$CPU로 쓰고, CPU값을 aarch64로 지정해준다.
--extra-ldflags="-lc" \ //없다면 추가해주자. 

-lc 옵션을 지정해주지 않는 경우, install시 에러가 발생할 수 있다.
또한 libavutil/../compat/strtod.o: error adding symbols: File in wrong format와 같은 에러가 발생하는 경우에는, make clean을 호출해준 후 다시 install을 하도록 하자.

참조: Possibly no need to remove strtod.o in the build script, FFmpeg-Development-Kit Github

위와같이 적용한 후 빌드스크립트를 돌리자, 정상적으로 동작한다. 물론 안드로이드 버전이 변경됐으니, 기존에 사용하던 ffmpeg 라이브러리도 다시 빌드한 후 적용해야하는 건 덤이다. 이러한 문제로 인해서 기존의 빌드스크립트를 복사한 후, 수정할 내용만 적용하여 두 벌의 스크립트를 마련해둬야 했다. (뭔가 간단하게 해결할 수 있을 것 같은데, 아직까지는 방법을 찾지 못했다.ㅠㅡㅜ)

 

반응형