Live Screencast unter Linux

3572
OmnipotentEntity

Ich hatte Schwierigkeiten, einen Live Screencast unter Linux auszuführen. Ich habe jtvlc gefunden und versucht, es zu verwenden, aber wenn ich es benutze, kommt der Stream entweder leer oder verzögert mit extrem hoher Latenz. Ich habe eine schnelle Internetverbindung und einen schnellen Computer, aber besteuere ich sie vielleicht zu viel?

Irgendwelche Ideen, was ich möglicherweise falsch machen könnte?

# 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 

Aktualisieren:

Ich habe mein Problem behoben ... zum größten Teil. Ich habe versucht, zu viele Informationen durch meinen Upstream zu verbreiten. Ich habe seitdem meine Auflösung reduziert und die crf-Option für x264 verwendet.

Nun sieht mein Skript so aus:

# 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 

Davon abgesehen habe ich noch einige Probleme. Manchmal, wenn ich das Zeug auf dem Bildschirm ändere, kann es nicht richtig kodieren. Was seltsam ist, denn Screencasting über Skype 4.0 funktioniert einwandfrei. Es gibt also noch ein paar Kniffe, die es zu lösen gilt.

Ich lasse das Kopfgeld offen und versuche aktiv die erwähnten Dinge. Ich werde immer noch die Prämie zuweisen, obwohl ich mich selbst entschlossen habe.

4
Wenn Sie versuchen, es auszuführen, wie lauten die Auslastungen für CPU, GPU und Bandbreite (in%). soandos vor 11 Jahren 1
Die CPU ist vollkommen in Ordnung (weniger als 50% für einen Kern). Ich bin nicht sicher, wie die GPU-Nutzung gemessen werden soll. (Aus offensichtlichen Gründen.) Wenn ich die Vb-Nummer niedriger setze, funktioniert das viel besser, aber ich bekomme auch Video-Tränen, Artefakte und Kodierungen. Es könnte sich um verlorene Pakete handeln, aber es könnte auch sein, dass die vb-Rate zu niedrig ist. Gibt es eine schöne Möglichkeit, VLC auf variable Bitrate einzustellen? OmnipotentEntity vor 11 Jahren 0
@OmnipotentEntity: Wie hoch ist die maximale Bandbreite / Durchsatzrate Ihrer Internetverbindungen? Der Hochstapler vor 11 Jahren 0
Wenn das funktioniert, lass es mich wissen. Es würde dazu führen, dass ich nicht starten muss, einen Browser öffnen und meine Webcam starten muss. Rob vor 11 Jahren 0
@Oliver: 30 MBit / s runter / 5 MBit / s hoch OmnipotentEntity vor 11 Jahren 0
Die Antwort auf Ihren zweiten Teil ist gleich da: "Die crf-Option für x264 wurde verwendet." / "wenn ich die Sachen auf dem Bildschirm eines Bündels ändere, kann er nicht richtig kodieren." Constant Rate Factor bedeutet effektiv gleichbleibende Qualität. Wenn Sie viel auf einmal tun, bedeutet dies, dass Sie es häufig aktualisiert haben, was im CRF-Modus mehr Bandbreite bedeutet. Konstante Bitrate ist das, was Sie wahrscheinlich wollen. zebediah49 vor 11 Jahren 0
Aber es ist wirklich keine Antwort auf meine Frage, denn selbst bei Verwendung einer konstanten Bitrate, die weit unter meiner Bandbreite liegt, bekomme ich die ursprünglich beschriebenen Symptome. Die Verwendung von CRF erreicht mein Upload-Limit nicht, auch wenn ich viele Sachen mache. OmnipotentEntity vor 11 Jahren 0

3 Antworten auf die Frage

3
ItsNotAboutTheName

Dies ist wahrscheinlich ein Schuss im Dunkeln, aber ich habe das Gefühl

--screen-fps 5 \

sollte das problem sein. Versuchen Sie, 5 auf einen höheren Wert wie 50 zu ändern, und sehen Sie, was passiert.

5 bedeutet eine ziemlich abgehackte Bildrate, aber 50 ist viel zu viel. Ich würde höchstens etwa 30 machen (das ist ungefähr so, wie normalerweise Filme sind), aber mit seiner Bandbreitenbeschränkung würde ich wahrscheinlich nicht über 10 hinausgehen. zebediah49 vor 11 Jahren 0
Durch das Anheben von bis zu 24 werden die Artefaktprobleme, die ich zuvor hatte, beseitigt. OmnipotentEntity vor 11 Jahren 0
Kann ich Ihr Grafikkartenmodell kennen? ItsNotAboutTheName vor 11 Jahren 0
NVidia 260 GTX Wenn ich mich recht erinnere. OmnipotentEntity vor 11 Jahren 0
Ok, können Sie die Bildschirmgröße auf 1280 x 720 ändern, die Bildrate auf 24 setzen und es versuchen? Vergessen Sie nicht nach Änderung der Desktop-Größe [von Ihren Desktop-Eigenschaftseinstellungen] die Option --screen-width 1920 \ --screen-height 1080 \ in 1280 und 720. Ich vermute, die zufälligen Fehler beim richtigen Kodieren liegen daran Sie müssen die Laufzeit Ihres erfassten Videos in der Größe ändern. Dies könnte dieses Problem verursachen. ItsNotAboutTheName vor 11 Jahren 0
Es scheint tatsächlich gut zu funktionieren, selbst bei voller Auflösung. Vielen Dank für Ihre Hilfe. OmnipotentEntity vor 11 Jahren 0
Gut zu wissen, Kumpel, viel Spaß;) ItsNotAboutTheName vor 11 Jahren 0
0
harrymc

Ein anderes Produkt, das Sie ausprobieren können:

WebcamStudio für GNU / Linux

0
ahmed

Versuche dies..!

# 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 

Wenn dies nicht funktioniert, können Sie Live Desktop Streaming über DLNA unter GNU / Linux ausprobieren .

Mann, das Skript sieht komisch bekannt aus. OmnipotentEntity vor 11 Jahren 1