Я использую 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
опцию в команду отправки.