2014-11-18 4 views
2

Android에서 mp3로 3gp로 변환하는 방법을 찾고 있습니다. 'MediaStore.ACTION_VIDEO_CAPTURE'을 (를) 통해 기기의 카메라를 사용하고 있으며 동영상이 내 서버로 전송되었습니다. 내 서버는 mp4 파일 만 허용합니다. 거의 모든 장치는 비디오를 mp4 파일로 저장하지만 일부 장치는 3gp 파일로 저장합니다. 그래서, 일부 장치의 경우 3gp를 mp4로 변환해야합니다.Android 3gp to mp4 converter

도와주세요 !!

답변

0

Java Runtime.getRuntime(). exec (...)을 사용하여 쉘 명령을 통해 ffmpeg를 사용하면 비디오를 3gp에서 mp4로 쉽게 변환 할 수 있습니다. 팔 장치 (안드로이드 장치의 대부분)에 대한 ffmpeg 바이너리를 여기서 얻으십시오 : https://www.dropbox.com/s/nxjnrb71qdrq5jn/ffmpeg.zip?n=138005726. 이 파일을 ROM에 패키지하고, 파일이 3gp 일 때 감지 한 다음 ffmpeg를 사용하여 파일을 서버에 업로드하기 전에 mp4로 변환해야합니다.

자바 코드에서 바이너리를 실행하려면 다음과 같은 메소드를 작성해야합니다. input은 입력 비디오의 위치이고 output은 출력 비디오의 위치이며 fmpeg는 ffmpeg 바이너리의 위치입니다. 포함 :

public void convertVideo(String input, String output) throws IOException, InterruptedException 
{ 
    String args = ffmpeg + "-i" + input + "ffmpeg encoding paramaters..." + "-f mp4" + output; 
    Runtime r = Runtime.getRuntime(); 
    Process p = r.exec("/system/bin/sh" + "-c" + args); 
    p.waitFor(); 
} 

ffmpeg 명령 매개 변수는 대상 비디오 크기에 맞게 최적화해야 할 수 있습니다. 또한 x86 x86의 많은 소수를위한 정적 x86 ffmpeg를 구축 할 것입니다. 그런 다음 쉘 명령 "uname -a"로 장치 아키텍처를 감지하고 사용할 명령을 선택할 수 있습니다.

희망이 도움이됩니다.

+1

답장을 보내 주셔서 감사합니다. Android API로 변환 할 수있는 방법이 있습니까? 가능한 경우 ffmpeg의 라이센스 문제와 포팅 때문에 ffmpeg 사용을 피하고 싶습니다. 비디오를 처리 할 때 ffmepg를 사용할 때 일부 장치에 문제가있었습니다. – Storm

+0

x86 용 ffmpeg lib를 업로드 할 수 있습니까? – xtr