2012-12-16 14 views
3

매우 이상한 비디오 파일이 있습니다. 오디오/비디오 동기화 문제가 있습니다. 비디오가 빨리 가고 오디오가 좋습니다. 비디오의 프레임 속도가 이상합니다 : 26.07 fps.오디오 비디오 Sync with ffmpeg

어떻게하면 ffmpeg를 사용하여 비디오 스트림을 고칠 수 있습니까? 비디오의 시작 부분에서 동기화는 괜찮지 만 비디오 스트림 끝 부분에 약 5 분의 오디오가 남아 있고 검은 색 화면으로 재생됩니다.

이는 FFmpeg에서 출력 -i video.avi

ffmpeg version git-2011-10-15-1d0afec, Copyright (c) 2000-2011 the FFmpeg developers 
    built on Oct 15 2011 14:27:57 with gcc 4.4.5 
    configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libxvid 
    libavutil 51. 21. 0/51. 21. 0 
    libavcodec 53. 20. 1/53. 20. 1 
    libavformat 53. 16. 0/53. 16. 0 
    libavdevice 53. 4. 0/53. 4. 0 
    libavfilter 2. 43. 6/2. 43. 6 
    libswscale 2. 1. 0/2. 1. 0 
    libpostproc 51. 2. 0/51. 2. 0 
[mpeg4 @ 0xa585420] Invalid and inefficient vfw-avi packed B frames detected 
Input #0, matroska,webm, from 'video.avi': 
    Duration: 02:03:46.01, start: 0.000000, bitrate: 103 kb/s 
    Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID/0x44495658), yuv420p, 704x288 [SAR 1:1 DAR 22:9], 26.07 fps, 25 tbr, 1k tbn, 25 tbc (default) 
    Stream #0:1(pol): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default) 

답변

3

먼저 오디오 분리해야 할 수 있습니다 그럼 당신은 비디오 파일의 전체 길이를 분할해야

ffmpeg -i input.avi -vn -ac 2 -ar 48000 -ab 448k -f mp3 audio.mp3 

을 (비디오가 멈추었을 때 오디오를들을 수있는 시간)만큼 실제 비디오 길이 (초 단위)를 표시합니다. 1보다 약간 큰 숫자 (1.12 또는 이와 비슷한 값)를 얻어야합니다. 이 지수를 받아서 :

ffmpeg -i input.avi -vf "setpts=quotient*PTS" -an output.avi 

그리고 나서 비디오와 오디오를 결합합니다.

+1

나를 놀라게했습니다. 감사! – Hendy

관련 문제