Прямая трансляция под Linux

3428
OmnipotentEntity

У меня были некоторые трудности с запуском Live Screencast под Linux. Я нашел jtvlc и попытался использовать его, но всякий раз, когда я его использую, поток выходит либо пустым, либо с запаздыванием с чрезвычайно высокой задержкой. У меня быстрое интернет-соединение и быстрый компьютер, но, может быть, я облагаю налогом слишком много?

Любые идеи о том, что я мог бы делать неправильно?

# 1. Get an account on http://www.justin.tv/ # 2. Copy streaming key from: http://www.justin.tv/broadcast/adv_other # 2. Install VLC: http://www.videolan.org/vlc/ # 3. Get Win/Mac/Lin Stream Client: \ # http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API # 4. Adjust the vlc parameters to your liking and run VLC like this  #!/bin/bash cvlc screen:// --input-slave=pulse:// \ --screen-width 1920 \ --screen-height 1080 \ --screen-fps 5 \ -v input_stream \ --sout='#duplicate{ dst="transcode{ scale=1, venc=x264{ keyint=60 }, vcodec=h264, vb=600, acodec=mp4a, ab=32, channels=2, samplerate=22050 } :rtp "}' \ --sout-transcode-threads=4 & sleep 2  # 5. Run JTVLC to stream like this: ./jtvlc/jtvlc omnipotententity censored /tmp/vlc.sdp  # Notes: #- If you want to see what you're about to stream add 'dst=display, ' # before 'dst="transcode[' # More about the VLC parameters: http://wiki.videolan.org/Documentation:Modules/screen 

Обновить:

Я исправил свою проблему ... по большей части. Я пытался поместить слишком много информации через мой апстрим. С тех пор я уменьшил свое разрешение и использовал опцию crf для x264.

Теперь мой скрипт выглядит так:

# 1. Get an account on http://www.justin.tv/ # 2. Copy streaming key from: http://www.justin.tv/broadcast/adv_other # 2. Install VLC: http://www.videolan.org/vlc/ # 3. Get Win/Mac/Lin Stream Client: \ # http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API # 4. Adjust the vlc parameters to your liking and run VLC like this  #!/bin/bash cvlc screen:// --input-slave=pulse:// \ --screen-width 1920 \ --screen-height 1080 \ --screen-fps 5 \ -v input_stream \ --sout='#duplicate{ dst="transcode{ scale=1, width=1280, height=720, venc=x264{ keyint=60, crf=35 }, vcodec=h264, acodec=mp4a, ab=32, channels=2, samplerate=22050 } :rtp "}' \ --sout-transcode-threads=4 & sleep 2  # 5. Run JTVLC to stream like this: ./jtvlc/jtvlc omnipotententity redacted /tmp/vlc.sdp  # Notes: #- If you want to see what you're about to stream add 'dst=display, ' # before 'dst="transcode[' # More about the VLC parameters: http://wiki.videolan.org/Documentation:Modules/screen 

При этом у меня все еще есть несколько проблем. Иногда, когда я изменяю материал на экране, он не может правильно кодироваться. Что странно, потому что скринкаст через скайп 4.0 работает просто отлично. Так что есть еще несколько перегибов, чтобы работать.

Я оставляю награду открытой и активно пробую упомянутое. Я все еще назначу награду, хотя я сам решил.

4
Когда вы пытаетесь запустить его, каковы загрузки процессора, графического процессора, пропускной способности (в процентах) soandos 12 лет назад 1
С процессором все в порядке (менее 50% на любом ядре), я не уверен, как измерить использование графического процессора, использование полосы пропускания колеблется вокруг того, к чему я добавляю vb =. (По понятным причинам.) Если я установлю номер vb ниже, он будет работать намного лучше, но я также получу беспорядок с разрывом видео, артефактами и кодированием. Это могут быть потерянные пакеты, но также может быть, что скорость VB слишком низка? Есть хороший способ установить VLC для переменной скорости передачи битов? OmnipotentEntity 12 лет назад 0
@OmnipotentEntity: Какова максимальная пропускная способность / пропускная способность ваших интернет-соединений? Der Hochstapler 12 лет назад 0
Если у вас все получится, дайте мне знать. Это сделало бы так, чтобы мне не нужно было запускать x, открывать браузер и запускать мою веб-камеру. Rob 12 лет назад 0
@ Оливер: 30 Мбит / с вниз / 5 Мбит / с вверх OmnipotentEntity 12 лет назад 0
Ответ на вашу вторую часть прямо здесь: «Использовал опцию crf для x264». / "Когда я изменяю материал на экране кучу, он не может правильно кодировать." Фактор постоянной скорости означает фактически постоянное качество. Если вы делаете много за один раз, это означает, что вы его много обновили, что означает большую пропускную способность в режиме CRF. Постоянный битрейт - это то, что вы, вероятно, хотите достичь. zebediah49 12 лет назад 0
Но на самом деле это не ответ на мой вопрос, потому что даже при использовании постоянной скорости передачи данных, намного меньшей, чем моя пропускная способность, я получаю первоначально описанные симптомы. Использование CRF не достигает моего лимита загрузки, даже когда я много чего делаю. OmnipotentEntity 12 лет назад 0

3 ответа на вопрос

3
ItsNotAboutTheName

Это, вероятно, выстрел в темноте, но у меня есть ощущение, что

- screen-fps 5 \

должна быть проблема. попробуйте изменить 5 на более высокое значение, например, 50 и посмотреть, что произойдет.

5 означает довольно изменчивую частоту кадров, но 50 - это слишком много. Максимум я бы сделал около 30 (это примерно то же, что и фильмы обычно), но с его ограничением пропускной способности, я бы, вероятно, не превысил 10. zebediah49 12 лет назад 0
Фактически увеличение до 24 избавляет от проблем с артефактами, которые у меня были раньше. OmnipotentEntity 12 лет назад 0
Могу я узнать модель вашей видеокарты? ItsNotAboutTheName 12 лет назад 0
NVidia 260 GTX Если я правильно помню. OmnipotentEntity 12 лет назад 0
Хорошо, вы можете изменить размер экрана на 1280 x 720, установить fps на 24 и попробовать? после изменения размера рабочего стола [из настроек свойств рабочего стола] не забудьте изменить - screen-width 1920 \ - screen-height 1080 \ на 1280 и 720. Я предполагаю, что случайные сбои при кодировании должным образом, потому что это необходимо изменить размер вашего захваченного видео, и это может вызвать эту проблему. ItsNotAboutTheName 12 лет назад 0
Кажется, что он работает нормально даже при полном разрешении, большое спасибо за вашу помощь. OmnipotentEntity 12 лет назад 0
Приятно знать, приятель, веселиться;) ItsNotAboutTheName 12 лет назад 0
0
harrymc

Еще один продукт, который вы можете попробовать:

WebcamStudio для GNU / Linux

0
ahmed

Попробуй это..!

# 1. Get an account on http://www.justin.tv/ # 2. Copy streaming key from: http://www.justin.tv/broadcast/adv_other # 2. Install VLC: http://www.videolan.org/vlc/ # 3. Get Win/Mac/Lin Stream Client: \ # http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API # 4. Adjust the vlc parameters to your liking and run VLC like this  #!/bin/bash cvlc screen:// \ --screen-width 1576 \ --screen-height 886 \ --screen-fps 5 \ --screen-caching 200 \ --screen-top 75 \ -v input_stream \ --sout='#duplicate{ dst="transcode{ scale=1, width=630, height=354, venc=x264{ keyint=60 }, codec=h264, vb=600, acodec=mp4a, ab=32, channels=2, samplerate=22050 } :rtp "}' \ --sout-transcode-threads=2 &  # 5. Run JTVLC to stream like this: jtvlc justintvusername streamkey /tmp/vlc.sdp  # Notes: #- If you want to see what you're about to stream add 'dst=display, ' # before 'dst="transcode[' # More about the VLC parameters: http://wiki.videolan.org/Documentation:Modules/screen 

Если это не сработает, вы можете попробовать Live Desktop Streaming через DLNA в GNU / Linux .

Чувак, этот сценарий выглядит странно знакомым. OmnipotentEntity 12 лет назад 1

Похожие вопросы