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

mediaMetadataRetriever.getFrameAtTime 를 이용하여 frame 추출시 null값이 나옵니다

0 추천

현재 스트리밍 동영상을 재생하고

캡쳐를하려 하는데요

getFrameAtTime() 함수사용할때 현재동영상의 CorrentPosition() * 1000 을 넣으면
 
null값이 추출되고 -1 을넣으면 처음 버튼을 누른 시점에만 캡쳐가되고 그뒤에는 계속같은화면만
 
캡쳐됩니다.. 실시간으로 현재화면 캡쳐를 하려면 어떻게 해야되나요?
 
Bitmap bmFrame = mediaMetadataRetriever
.getFrameAtTime(currentPosition * 1000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST );
 
== null값이 추출됩니다.
 
Bitmap bmFrame = mediaMetadataRetriever
.getFrameAtTime(-1, FFmpegMediaMetadataRetriever.OPTION_CLOSEST );
 
== 첫번째 화면만 추출됩니다.

 

익명사용자 님이 2013년 10월 1일 질문

1개의 답변

0 추천

FFmpegMediaMetadataRetriever 라는 것을 봐서는 안드로이드 기본 API가 아니라 FFmpeg로 만든 custom api 같은데요..

제가 찾은게 맞는지는 모르겠지만  

https://github.com/wseemann/FFmpegMediaMetadataRetriever/blob/master/fmmr-library/jni/metadata/ffmpeg_mediametadataretriever.c 소스에 나오듯   seek 이 안되는 컨텐츠의 경우 이미지를 못구해오고,  seek 이 되더라도  got_packet 이 0이 반환될 경우 이미지를 못 구합니다.

seek의 경우에는 순서대로 읽을 수 밖에 없으니 지원이 불가능할 듯 하며 seek이 되는 컨텐츠라면

got_packet의 값이 0 이 나올 때 decode_frame를 다시 호출하게 라이브러리를 수정해주시면 될 겁니다.

사악미소 (65,330 포인트) 님이 2013년 10월 1일 답변
사악미소님이 2013년 10월 1일 수정
...