마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FFmpegFrameRecorder 사용중 발생한 문제점에 대한 문의

0 추천

안녕하세요, 안드로이드 초짜인 사람입니다.

개발 진행중에 막히는게 있어 이렇게 글남깁니다.

다름이 아니라 현재 소켓통신을 통해 이미지를 수신하여 그 수신받은 이미지로 동영상 녹화 기능을 구현하였습니다.

그런데 제가 가지고 있는 스마트폰(베가 아이언 / 베가 레이서2 / 갤럭시 s3  )에선 정상적으로 동작을 하는데.

갤럭시 탭 10.1 (4.0)과 odroid-u2(4.1.2) 에서 확인 결과 아래와 같은 메세지가 발생하면서 앱이 죽어버리네요. 

 

01-23 13:51:40.244: D/dalvikvm(25103): GC_CONCURRENT freed 4485K, 54% free 7139K/15303K, paused 9ms+2ms
01-23 13:51:40.354: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libavutil.so 0x413454a8
01-23 13:51:40.354: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libavutil.so 0x413454a8
01-23 13:51:40.354: D/dalvikvm(25103): No JNI_OnLoad found in /data/data/com.gaus.mrcp/lib/libavutil.so 0x413454a8, skipping init
01-23 13:51:40.364: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libjniavutil.so 0x413454a8
01-23 13:51:40.364: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libjniavutil.so 0x413454a8
01-23 13:51:40.394: I/RECORD(25103): dir.exists
01-23 13:51:40.394: I/RECORD(25103): init recorder
01-23 13:51:40.394: I/RECORD(25103): ffmpeg_url: /mnt/sdcard/GAUS/2014.01.23 13:51:40.mp4imageWidth => 640 imageHeight => 480
01-23 13:51:40.424: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libavcodec.so 0x413454a8
01-23 13:51:40.424: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libavcodec.so 0x413454a8
01-23 13:51:40.424: D/dalvikvm(25103): No JNI_OnLoad found in /data/data/com.gaus.mrcp/lib/libavcodec.so 0x413454a8, skipping init
01-23 13:51:40.424: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libjniavcodec.so 0x413454a8
01-23 13:51:40.434: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libjniavcodec.so 0x413454a8
01-23 13:51:40.474: D/dalvikvm(25103): GC_CONCURRENT freed 1005K, 52% free 7413K/15303K, paused 2ms+2ms
01-23 13:51:40.494: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libavformat.so 0x413454a8
01-23 13:51:40.504: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libavformat.so 0x413454a8
01-23 13:51:40.504: D/dalvikvm(25103): No JNI_OnLoad found in /data/data/com.gaus.mrcp/lib/libavformat.so 0x413454a8, skipping init
01-23 13:51:40.504: D/dalvikvm(25103): Trying to load lib /data/data/com.gaus.mrcp/lib/libjniavformat.so 0x413454a8
01-23 13:51:40.514: D/dalvikvm(25103): Added shared lib /data/data/com.gaus.mrcp/lib/libjniavformat.so 0x413454a8
 
lib는 javacv를 사용하였고 javacpp.jar / javacv.jar /  armeabi폴더안에 *.so 파일등을 추가하였습니다.
동영상 녹화 처리 class는 FFmpegFrameRecorder 를 사용하였습니다.
 
여러 능력있는 개발자님들의 도움을 부탁드리겠습니다.
감사합니다.
간지남대니 (180 포인트) 님이 2014년 1월 23일 질문

1개의 답변

0 추천

 tegra2 칩셋을 사용한 갤럭시 10.1 단말인가 보네요.  tegra2 칩셋의 경우 NEON 명령어를 지원하지 않기 때문에 

FFMPEG에서 NEON 부분을 제거하고 빌드해야만 so만 로드가 됩니다.

해당 사이트 소스를 받아 HAVE_NEON 를 빼고 빌드해 사용하시면 될 겁니다.

odroid-u2는 NEON을 지원하는 버젼인데,  죽는 것으로 보아서는 /system/lib 쪽에 so 파일과 동일한 파일이 있는지 보세요. 있다면 그쪽 so 부터 로드해서 발생할 수 있을 듯 합니다.  동일한 파일이 없다면, 

특정 심볼을 못 찾아서인데.

올려주시신 로그에는 안 나오네요 해당 로그를 다시 올려주셔야 할 수 있을 듯 합니다.

사악미소 (65,330 포인트) 님이 2014년 1월 23일 답변
성실한 답변 감사드립니다. odroid u2에서는 위와 같은 로그가 발생한 record.start() 호출되면서 counld'n open "생성한 파일" 이라고 발생하고 앱이 죽는거 없이 그대로 진행이됩니다. 자세한 로그는  아래와 같습니다.
아래로그는 위에 보여진 로그 다음에 나온 에러 로그입니다.
01-23 17:10:05.472: E/RECORD(2062): startRecording(): ERROR ~~~~~~
01-23 17:10:05.472: W/System.err(2062): com.googlecode.javacv.FrameRecorder$Exception: avio_open error() error -22: Could not open '/mnt/sdcard/GAUS/2014.01.23 17:10:05.mp4'
01-23 17:10:05.472: W/System.err(2062):     at com.googlecode.javacv.FFmpegFrameRecorder.start(FFmpegFrameRecorder.java:569)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MrcpImageRecord.startRecording(MrcpImageRecord.java:67)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MrcpImageRecord.initRecorder(MrcpImageRecord.java:113)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MortarRobotControlMainActivity.RecordStart(MortarRobotControlMainActivity.java:950)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MortarRobotControlMainActivity.MrcpGetImageData(MortarRobotControlMainActivity.java:764)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MortarRobotControlMainActivity.access$6(MortarRobotControlMainActivity.java:749)
01-23 17:10:05.472: W/System.err(2062):     at com.gaus.mrcp.MortarRobotControlMainActivity$3.handleMessage(MortarRobotControlMainActivity.java:697)
01-23 17:10:05.472: W/System.err(2062):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 17:10:05.472: W/System.err(2062):     at android.os.Looper.loop(Looper.java:137)
01-23 17:10:05.472: W/System.err(2062):     at android.app.ActivityThread.main(ActivityThread.java:4745)
01-23 17:10:05.472: W/System.err(2062):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 17:10:05.472: W/System.err(2062):     at java.lang.reflect.Method.invoke(Method.java:511)
01-23 17:10:05.472: W/System.err(2062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-23 17:10:05.472: W/System.err(2062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-23 17:10:05.477: W/System.err(2062):     at dalvik.system.NativeStart.main(Native Method)
...