2013-07-11 1 views
3

FFmpeg를 사용하여 내 안드로이드 응용 프로그램의 비디오를 연결합니다. 다른 형식의 비디오를 병합하기위한 몇 가지 단계를 수행했습니다. mp4 비디오의 경우 모든 입력 파일을 MPEG-2 TS 파일로 변환 한 다음 모든 .ts 파일을 병합하여 출력 mp4 파일을 얻어야합니다. 서로 다른 해상도의 경우FFmpeg를 사용하여 서로 다른 해상도의 Concat 비디오 파일

  • 내가 비디오를 병합에 문제가 (한 640 * 480라고하고, 다른 하나는 * 720 1280) 비디오가 제대로 병합하지 않는 국지적 인 출력 (때로는 던졌습니다 스트림의 오류). 비디오를 의 품질을 잃지 않고 처리 할 수있는 방법이 있습니까?

  • 내가 오디오 오류를 얻고이 두 가지를 병합하려고 audio.When 내가이 개 비디오 오디오를 하나 없이 다른 병합하고 말할 수 있습니다 Streams.Is이도이 문제를 해결할 수있는 방법 (동영상은해야한다 오디오와 함께 또는 오디오없이 병합)?

나는 두 가지 문제에 직면하고 있으며 성공하지 못하면서 더 많은 시간을 보냈습니다. 어떤 아이디어라도 대단히 감사하겠습니다.

+0

ffmpeg 명령 줄 도구 또는 API를 사용하고 있습니까? "오류"는 언급하지만 표시하지는 않습니다. – LordNeckbeard

+0

ffmpeg API를 사용 중이며 매개 변수가 android에서 전달됩니다. – vijay

+0

https://superuser.com/a/1136854/101823 –

답변

0

동일한 해상도로 작업해야하는 비디오를 병합하려면 640x480 비디오를 확장하거나 1280x720으로 압축해야합니다. 이는 사용자의 책임입니다. 나는 당신이 더 빠른 것을 압축하는 것이 더 빠르다고 추천 할 것이다.

또한 비디오를 병합하려면 오디오 및 비디오 부분이있는 미디어 파일이 필요합니다. 비디오의 지속 시간을 같게하고 비디오에 추가 한 후에는 무음 오디오를 만들 수 있습니다. 비디오는 오디오와 병합되어야합니다.

ffmpeg -ar 48000 -t 60 -f s16le -acodec pcm_s16le -i /dev/zero -ab 128K -f mp2 -acodec mp2 -y silence.mp2 

ffmpeg -i video_without_audio.mpg -i silence.mp2 video_to_merge.mpg 
+0

알바로, 답장을 보내 주셔서 감사합니다./dev/zero는 입력 비디오 파일입니다. 또한 오디오가 있는지 여부를 어떻게 알 수 있습니까? FFmpeg에 의해 자동으로 수행 될 수 있습니까? 전환에 많은 시간이 걸리기 때문에 앱이 좋지 않습니다. – vijay

+0

/dev/zero는 비디오 파일이 아닙니다.이 명령은 오디오없이 비디오에 병합 할 더미 오디오를 만들지 만 비디오를 병합 할 수는 없습니다. 오디오 스트림이 있는지 알아 보려면 ffmpeg 출력을 사용하고 옵션 -i를 사용하여 스트림, 스트림 # 0.0 비디오 및 스트림 # 0.1 오디오를 확인할 수 있습니다. –

+0

감사합니다. Alvaro, 제가 확인해 드리겠습니다. 다른 형식의 비디오 파일을 변환하지 않고 한 번에 직접 연결하는 방법이 있습니까? 더 많은 시간이 필요합니까? 또한 최신 ffmpeg 구축에 문제가 있습니다. ffmpeg 명령을 모두 구성하는 공유 라이브러리를 만들기 위해 안드로이드와 ffmpeg 라이브러리 (별도로 구축 한 후)를 사용하는 단계가 있습니까? – vijay

관련 문제