Всем привет!
Я хочу использовать vlc (VLC media player) для трансляции рабочего стола компьютера в сеть. На самом деле задача стоит даже так: транслировать рабочий стол одного компьютера посредством сети на другой, и при этом задержка должна быть минимальной, а точнее не превышать 1 секунду )). Ну и можно дополнить, что трансляция должна позволять
демонстрировать видео с первого компьютера.
В общем-то, с самой задачей трансляции справиться не так уж и сложно. И задержка в среднем равна 2 секунам. Но все равно она есть. На данный момент я осуществляю транслцию подобной командой (в ней присутствуют переносы на следующую строку, чтобы было удобно читать):
vlc.exe screen:// :screen-fps=25.0 :live-caching=100
:sout=#transcode{vcodec=x264,venc=x264{tune=zerolatency,preset=ultrafast},acodec=mpga,vb=800,ab=128,channels=2,samplerate=44100}
:rtp{dst=192.168.0.12,port=5004,ttl=1}
То есть кодирую x264 кодеком и транслирую по rtp.
Как показывает практика, самый существенный вклад в уменьшение задержки вносят настройки для x264-кодека:
venc=x264{tune=zerolatency,preset=ultrafast}. Борясь с задержкой я пробовал менять различные настройки:
— все настройки из ряда caching (например, :network-caching, :sout-udp-caching,...);
— настройки x264 кодека типа bitrate, qp, subme, bframes...
— настройки vbv и тому подобное.
Изменения этих настроек кардинально не меняет состояние трансляции. Но, может быть, я неправильно их использую. Дело в том, что на данный момент я не совсем шарю в тонкостях кодирования видео и протоколах передачи медиа-контента.
Подскажите, пожалуйста, есть ли еще какие-либо способы уменьшить задержку транляции через vlc? И вообще, возможно ли добиться задержки, не превышающей 1 секунду? Может быть, мне надо пользоваться другим протоколом (хотя судя из моих экспериментов использование других протоколов никак не отражается на результате)? Или брать другую capture-лку? Или другой кодек?
Кстати, на стороне клиента (т.е. принимающей стороны) я меняют только :network-caching (выставляю в 0).
И еще комментарий, может быть, не совсем по теме: почему-то при использовании rtsp-протокола соединение обрывается через 1.5-2 минуты.
Всем пока и заранее спасибо!
Товарищи, подскажите, пожалуйста, хотя бы какие факторы влиятют на передачу потокового видео. С учетом того, что мне нужна минимальная задержка (до 1 секунды). Насколько я понял, увести все кэши в ноль — это не панацея. Есть еще какие-то нюансы с B-frame-ами, DTS и тому подобное. Как такими параметрами правильно воспользоваться в случае real-time broadcasting?