Я хочу, чтобы мой сайт позволял пользователям точно создавать свои собственные клипы из исходного видео, которое я предоставляю.
У меня есть исходный видеофайл, который я сначала хочу преобразовать во что-то подходящее для веб-сайта:
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,2 секунды?
РЕДАКТИРОВАТЬ: Добавление -force_key_frames 00:00:00.2
не помогло.
РЕДАКТИРОВАТЬ: я изменил обрезку, чтобы использовать -c:v libx264 -c:a aac -strict experimental
вместо -codec:v copy -codec:a copy
с хорошими (ish) результатами.
Файл может воспроизводиться внешне без проблем - но когда я загружаю его в свой элемент видео html5 и воспроизводю его - последняя часть видео (аудио в порядке) зависает. Последняя часть, которая замирает, длится менее секунды.
Должен ли я попробовать это с другим видео кодером? Какова лучшая альтернатива для libx264? Имея в виду, я, вероятно, хочу, чтобы это было на общедоступном веб-сайте.
Но подождите, разве тот факт, что он воспроизводится точно без проблем с таким проигрывателем, как MPC или Windows Media Player, не говорит о том, что это проблема либо с Google Chrome, либо с элементом HTML-видео? Или я использую неподдерживаемую кодировку или что-то?