1

У меня есть приложение, которое принимает видео пользователя и выполняет некоторую обработку. конвейер обработки состоит из нескольких этапов. Код, который я написал до сих пор, предполагает использование кодека h264 для ввода видео. Но нельзя предположить, что пользовательский ввод находится в определенном формате / кодеке, поэтому я подумываю добавить еще один шаг в начале конвейера, то есть перекодировать любое заданное входное видео в h264. Но я пытаюсь минимизировать потери данных в видео из-за этого шага. Также возможно, что загруженное видео пользователя не будет без потерь, скорее всего, это будет видео h264 с потерями.

Я могу использовать CRF = 0 при транскодировании входного видео

ffmpeg -i input.mp4 -c:v h264 -crf 0 output.mp4

но это приводит к огромным размерам файлов, что влияет на следующие шаги в конвейере.

Теперь допустим, что я использую crf = 18 для вышеупомянутого шага транскодирования

ffmpeg -i input.mp4 -c:v h264 -crf 18 output.mp4

а также давайте предположим, что входное видео также имеет crf = 18, так что в этом случае этот шаг транскодирования приведет к потере данных?

1 ответ1

1

Если исходное видео содержит видео H.264, вы можете просто использовать -map и -c:v copy для извлечения желаемого потока без перекодирования. Сначала я бы "проверил" исходное видео, чтобы увидеть, какие потоки оно содержит, а затем собрал команду "transcode" pipe с помощью ffmpeg в зависимости от ситуации:

ffmpeg -i input.mp4 -map 0:1 -c:v copy output.mp4

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