Как ускорить потоковую передачу ffmpeg на Android с помощью libvlc? - PullRequest
0 голосов
/ 10 ноября 2019

Я транслирую в прямом эфире с моего GoPro внутри моего приложения для Android. Я использую ffmpeg для получения потоковых данных от GoPro и vlc для воспроизведения их в режиме просмотра поверхности. Я использовал код, предоставленный KonradIT здесь . Основная команда, используемая для ffmpeg:

-fflags nobuffer -f mpegts -i udp://:8554 -f mpegts udp://127.0.0.1:8555/gopro?pkt_size=64

, а параметры для vlclib:

options.add("--aout=opensles");
options.add("--audio-time-stretch");
options.add("-vvv");

Вывод немного хуже. Это медленно и его скорость составляет около 17 FPS. И одна досадная вещь в том, что потоковое изображение очень маленькое, и, насколько я пытался, не было никакого способа увеличить его и растянуть. Я хочу знать, есть ли какая-либо команда для ускорения потоковой передачи (в любом случае, даже за счет снижения качества)? Либо на стороне ffmpeg или vlc.

1 Ответ

0 голосов
/ 13 ноября 2019

Если выполняется только ретрансляция пакетов, попробуйте следующее:

ffmpeg -fflags nobuffer -f mpegts -i udp://:8554 -c:v copy -c:a copy -f mpegts  udp://127.0.0.1:8555/gopro?pkt_size=1316

Вы можете играть с разными размерами пакетов в зависимости от размера MTU вашей сети (<1500). Проверьте задержку. </p>

С помощью этой команды мы не транскодируем входящие пакеты, изменяем их размер и ретранслируем.

...