내 웹 사이트에서 사용자가 내가 제공 한 소스 비디오에서 자신의 클립을 정확하게 만들 수 있기를 바랍니다.
먼저 웹 사이트에 적합한 것으로 변환하려는 소스 비디오 파일이 있습니다.
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
ffmpeg를 사용하여 다음과 같이 변환합니다.
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
이 비디오를 다시 시청하면 내 요구에 맞는 충분한 품질과 작은 파일 크기이며 내 웹 사이트에로드 / 재생됩니다.
사용자가이 비디오에서 시작과 끝점을 선택하고 클립을 만들 수있는 웹 페이지가 있습니다. 여기에 내가 사용하는 ffmpeg 명령의 예가 있습니다.
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
문제는 클립의 시간이 항상 정확하지 않다는 것입니다. 일반적으로 오디오는 정확하지만 비디오는 0.5 초 일찍 중지됩니다.
0.2 초의 정확하고 동시에 동기화 할 수있는 방법이 있습니까?
편집 : 추가 -force_key_frames 00:00:00.2
도움이되지 않았습니다.
편집 : 좋은 (ish) 결과 -c:v libx264 -c:a aac -strict experimental
대신 사용하도록 클리핑을 변경했습니다 -codec:v copy -codec:a copy
.
파일은 문제없이 외부에서 재생할 수 있지만 html5 비디오 요소에로드하여 재생할 때 비디오의 마지막 부분 (오디오가 정상)이 정지됩니다. 얼어 붙은 마지막 부분은 1 초 미만입니다.
다른 비디오 인코더로 시도해야합니까? libx264의 가장 좋은 대안은 무엇입니까? 명심하십시오 나는 아마 이것이 공개 웹 사이트에 있기를 원할 것입니다.
그러나 MPC 또는 Windows Media Player와 같은 플레이어에서 문제없이 정확하게 재생된다는 사실이 Chrome 또는 HTML 비디오 요소에 문제가 있다고 제안하는 것은 아닙니다. 또는 지원되지 않는 인코딩이나 다른 것을 사용하고 있습니까?