Как осуществлять потоковую передачу между компьютерами с помощью ffmpeg?

Как осуществлять потоковую передачу между компьютерами с помощью ffmpeg?

Я использую ffmpeg и ffplay для потоковой передачи сырого видео H.264 между двумя компьютерами. Вот как выглядит строка команды передачи:

ffmpeg -i input.h264 -f mpegts udp:10.0.2.101:1234

А это принимающая сторона:

ffplay -f h264 -f mpegts udp://127.0.0.1:1234

Проблема в том, что воспроизведение на принимающей стороне показывает гораздо худшее качество, чем то, что я вижу при воспроизведении исходного файла на стороне отправителя. Сеть на самом деле является симулированной сетью на моем компьютере (две виртуальные машины), поэтому нет никакой потери пакетов или чего-то еще.

Что я сделал не так?

решение1

Вы перекодируете видеопоток. Обратите внимание, что если вы не укажете видеокодек, ffmpeg выберет его за вас — в вашем случае MPEG-2 с настройками по умолчанию, что действительно будет выглядеть довольно плохо.

Если вы планируете копировать поток битов, добавьте эту -c:v copyопцию в команду отправки.

Связанный контент