
나는 사용하고있다미디어 레코더 APIFirefox의 웹캠에서 비디오를 생성하지만 일부 오류가 있는 비디오 파일을 생성합니다.여기는 이런 방식으로 만들어진 비디오의 예입니다. VLC Player에서 실행하면 오디오가 매우 잘못되었습니다.
다음은 ffprobe입니다(webm 비디오입니다).
ffprobe version git-2015-12-11-df2ce13 Copyright (c) 2007-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-x11grab
libavutil 55. 10.100 / 55. 10.100
libavcodec 57. 17.100 / 57. 17.100
libavformat 57. 19.100 / 57. 19.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 20.100 / 6. 20.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, matroska,webm, from 'original.wmv':
Metadata:
encoder : QTmuxingAppLibWebM-0.0.1
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
Stream #0:1(eng): Audio: vorbis, 44100 Hz, mono, fltp (default)
이 명령은 대부분의 오디오 문제를 해결하는 데 도움이 되었지만 이제는 동기화되지 않았습니다.
ffmpeg -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k -ar 100 -filter_complex asetnsamples=n=1234:p=0 novo.mp4
ffmpeg -y -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k - 44100 -filter_complex silenceremove=0:5 new.mp4
동기화하거나 다른 방법으로 수정해야 하지만, 이런 방식으로 녹화된 다른 비디오에 사용할 수 있는 일반 명령이 필요합니다.
답변1
다음 명령을 사용하여 오디오를 수정하여 문제를 해결했습니다.
ffmpeg -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k -ar 100 -filter_complex asetnsamples=n=1234:p=0 new.mp4
그런 다음 변환된 비디오에서 ffprobe를 사용하여 비디오 및 오디오 지속 시간을 얻었고 두 지속 시간을 모두 빼서 오프셋을 얻은 다음 이를 사용하여 비디오 및 오디오를 동기화했습니다.
ffmpeg -y -i new.mp4 -itsoffset "calculatedOffset" -i new.mp4 -vcodec copy -acodec copy -map 1:0 -map 0:1 new_sync.mp4