Я обрежу MP4 видео с помощью ffmpeg, как это.

$ ffmpeg -i in.mp4 -ss 00:01:00 -t 00:01:00 -c copy out.mp4

Но я получаю фильм, в котором первые 10 секунд видео не существует. (только звук) Я хотел перекодировать фильм с помощью HandBrake, но он не распознается должным образом со следующим сообщением об ошибке.

Ваш Источник может быть защищен от копирования, плохо освоен или в формате, который не поддерживает HandBrake. Пожалуйста, обратитесь к документации и часто задаваемым вопросам (см. Меню справки).

Я думаю, что это происходит из-за базовой рамы или чего-то в этом роде.

Есть ли варианты, чтобы ffmepg перекодировал первое 10-секундное видео и объединял его с не перекодированным оставшимся 50-секундным видео?

1 ответ1

1

Но я получаю фильм, в котором первые 10 секунд видео не существует. (только звук)

Конкатенация может привести к прерывистому видео. Лично я старался избегать вырезок с помощью битстрима, когда только смогу. Я не думаю, что вы сможете точно определить , где он будет отключен, но это определенно на каком-то ключевом кадре.

В основном, если вы используете -ss после -i , ffmpeg будет искать метку времени, независимо от того, является ли это ключевым кадром или нет. Затем он запишет выходной поток оттуда, но проигрыватель может начать только со следующего изображения IDR *, поэтому вы испытываете чёрное видео, пока декодер не может начать что-то отображать.

Вы можете попробовать указать -ss перед -i , что заставит ffmpeg искать только ключевые кадры и, таким образом, создать выходной поток битов, который должен отображать видео сразу.

* Изображение IDR (мгновенное обновление декодирования) в H.264 - это изображение, которое состоит только из интракодированных фрагментов и не требует декодирования других изображений. Декодер может начать декодирование только после получения изображения IDR. Грубо говоря, это можно назвать ключевым кадром, хотя технически это не одно и то же.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .