Chcę, aby moja witryna umożliwiała użytkownikom dokładne tworzenie własnych klipów na podstawie dostarczonego przeze mnie wideo.
Mam źródłowy plik wideo, który najpierw chcę przekonwertować na coś odpowiedniego dla witryny:
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)
Używam ffmpeg do konwersji w następujący sposób:
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
Oglądając ten film, jest on wystarczająco dobrej jakości i wystarczająco mały rozmiar pliku dla moich potrzeb, i ładuje / gra na mojej stronie.
Mam stronę internetową, która pozwala użytkownikom wybrać początek i punkt końcowy tego filmu - i utworzyć klip. Oto przykład polecenia ffmpeg, którego używam do tego:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
Problem polega na tym, że klip nie zawsze jest wystarczająco dokładny czasowo. Zwykle dźwięk jest wystarczająco dokładny, ale wideo zatrzymuje się o pół sekundy wcześniej lub coś w tym rodzaju.
Czy jest jakiś sposób, aby to dokładne i niezsynchronizowane powiedzieć 0,2 sekundy?
EDYCJA: Dodawanie -force_key_frames 00:00:00.2
nie pomogło.
EDYCJA: Zmieniłem przycinanie, aby używało -c:v libx264 -c:a aac -strict experimental
zamiast -codec:v copy -codec:a copy
z dobrymi (ish) wynikami.
Plik może być odtwarzany zewnętrznie bez problemu - ale kiedy załaduję go do mojego elementu wideo HTML5 i odtworzę go, ostatnia część wideo (dźwięk jest w porządku) zawiesza się. Ostatnia część, która zamarza, trwa niecałą sekundę.
Czy powinienem spróbować z innym koderem wideo? Jaka jest najlepsza alternatywa dla libx264? Mając to na uwadze, prawdopodobnie będę chciał, aby było to na publicznej stronie internetowej.
Ale poczekaj, czy fakt, że gra dokładnie bez problemu z odtwarzaczem takim jak MPC lub Windows Media Player, nie sugeruje, że jest to problem z Google Chrome lub elementem wideo HTML? A może korzystam z nieobsługiwanego kodowania?