Недавно у меня была задача обработать несколько тысяч видео, как .mp4, так и .webm. Цель состояла в том, чтобы отрезать 1 секунду от фронта видео. В качестве ограничения я хотел избежать перекодирования видео, так как количество заданий заняло бы слишком много времени. Файлы .mp4 прошли гладко, каждая работа занимала всего несколько секунд.
Однако при попытке выполнить то же самое для файлов .webm sh я натолкнулся на блок. Это команда, которую я выполняю:
ffmpeg -i downloaded_raw_vids/{{vid_hash}}.webm -ss 00:00:01 -map 0 -c copy trimmed_videos/{video_url}.webm
Кажется, что происходит то, что в файлах .webm не происходит никакого вырезания или редактирования. Теперь, если я изменю метку времени на что-то вроде
ffmpeg -i downloaded_raw_vids/{{vid_hash}}.webm -ss 00:00:15 -map 0 -c copy trimmed_videos/{video_url}.webm
, я получу файл, который будет вырезан примерно в первые 10 секунд, но не на 15 секунд.
Насколько я понимаю, что файлы .webm могут быть вырезаны только на ключевых кадрах, а ключевые кадры слишком разрежены, чтобы фактически обрезать метку в 1 секунду, как первоначально требовалось. Похоже, что первый ключевой кадр присутствует около 10-секундной отметки, поэтому 15-секундный аргумент обрезается в этом месте. вырезать, без необходимости перекодировать каждый файл .webm, с которым я работаю.