1

У меня есть фильм MP4 с видеопотоком и аудиопотоком.

В выводе мне нужен файл MP4, содержащий:

  • тот же видео поток
  • тот же аудио поток
  • тот же видео поток с более низкой скоростью

Может кто-нибудь сказать, пожалуйста, соответствующую команду ffmpeg?

1 ответ1

3

В принципе это сделано так. Кодировать, чтобы снизить битрейт без звука. Конечно, это предполагает, что у вас есть видео H.264. Проверьте руководство по кодированию для получения дополнительной информации.

ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4

Затем объедините ваши файлы:

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

Это займет первые видео и аудио потоки первого файла и первый видео поток второго файла и скопирует их в выходной контейнер.

Опять же, как отмечает @trikly, в этом нет никакого реального преимущества. Тем более, что вы пометили свой вопрос как "потоковое видео", обратите внимание, что добавляя еще один поток в контейнер, вы увеличиваете размер файла, который должен загрузить клиент, вместо того, чтобы предлагать только меньшее представление, которое это то, что вы обычно хотите сделать для сред с ограниченной пропускной способностью.

Реальным решением было бы создание адаптивной потоковой передачи с использованием MPEG-DASH или HLS *. ffmpeg может создавать сегментированные файлы, которые можно использовать для потоковой передачи DASH и HLS, но вам также необходимо сгенерировать файлы метаинформации и т. д. И вам нужен клиент с поддержкой DASH или HLS.

Если это слишком много для настройки, вы должны просто предложить видео в двух разных форматах, каждый со своей ссылкой.

* Масштабируемое кодирование видео также было разработано с той же целью, но в настоящее время оно никем не используется.

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