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

FileOutputStream을 이용하여 mp4파일 생성

0 추천

카메라 데이터(byte[])을 가지고 mp4확장자로 만들고싶습니다. .mp4확장자로 만들어지며 데이터도 잘 들어가지는데 동영상을 누르면 동영상 재생이 안된다고 하네요... 무엇때문인지 잘 모르겠습니다... 설정을해야하는건가요? 

인생쑤다 (330 포인트) 님이 2015년 9월 14일 질문

1개의 답변

+1 추천
어떻게 카메라의  영상 정보를 얻으셨는지는 모르겠지만. 영상정보만 있다고 해서,  재생이 안됩니다.

재생을 하려면, 영상 압축을 어떤 방식으로 했는지. 각시간별 영상의 위치가 어떻게 되는지에 대한 정보를

파서에서 알 수 있도록  기입 해 주어야 합니다.

http://perso.telecom-paristech.fr/~concolat/MPEGFileFormats.pdf 문서를 참조하셔서,

  moov box 를 만들어서, 압축 정보 + 영상 위치 및 시간 정보를 기입 해 주시고,

영상 데이터를 mdat box에 넣어 주셔야 하는데, 참조 삼아 공부는 가능해도, 잘 모르시는 상태에서,

새로 만드시긴 간단하지 않으실듯 하네요..

 ffmpeg등을 비롯한 mp4 인코딩 라이브러리를 이용하여, 인코딩하시는게좋을 듯 합니다.
익명사용자 님이 2015년 9월 14일 답변
surfaceChanged에서 onPreviewFrame()를 이용하여 현재 카메라 데이터를 가지고 옵니다.(여기서 서버에게 계속해서 카메라 데이터를 줍니다.)사실 녹화와 실시간 카메라 데이터를 동시에 보내는 기능을 할라고하는데요.

FileOutputStream를 사용하여 저장을 시키면 동시에 저장은 되지만요. 동영상(mp4)이 실행이 되지않습니다. 라고 뜨네요.(데이터는 잘들어가는거 같습니다.)
그리고
MediaRecorder()를 사용하면, 녹화 기능이 가능하지만요. surfaceChanged가 실행이 되지 않아서 녹화는 되는 순간(surfaceChanged가 호출을 안합니다.)서버와 소켓이 끊어집니다.

어떻게해야할까요.... 계속 찾고있는데요 잘모르겠네요...
답변하신 분의 글을 이해못하셨습니다.
카메라에서 받은 데이터를 그대로 파일로 저장한다고 mp4가 되는 것이 아닙니다.
인코딩 라이브러리를 사용해서 mp4로 변환하여 저장해야 합니다.
아 그렇구나... 감사합니다...
...