2015-07-17 3 views

Antwort

8

Ich erinnere mich nicht an die VLC-Befehlszeile, die ich für den ersten Test verwendet habe. Ich habe kürzlich ein paar verschiedene Dinge auf dem Desktop Linux (Ubuntu 15.10) ausprobiert.

VLC

Wenn Sie Rohr nur die Ausgabe in vlc --demux h264 -, es scheint zu funktionieren, aber man bekommt allmählich hinter weiter. Hinzufügen von --h264-fps=60 scheint das zu helfen, aber Sie beginnen, Fehler zu erhalten ("ES_OUT_SET_(GROUP_)PCR is called too late"). Hinzufügen von --clock-jitter=0 scheint die Fehler weniger traumatisch zu machen, aber es ist immer noch ziemlich durcheinander.

ffplay

Eine einfache ffplay - funktioniert, aber es scheint ein paar Sekunden dauern gut hinter der gesamten Zeit, zu entscheiden, zu beginnen und endet hinkt.

Update - Januar 2018

Mit ffplay -framerate 60 -framedrop -bufsize 16M - gibt Ihnen eine anständige Qualität, die für eine ganze Weile dauert. Dies liegt an dem folgenden Befehl, der die Framerate und die Bitrate synchronisiert, da das Video sonst versucht, mit 30 fps abzuspielen, wodurch alles aufgrund der zusätzlichen Frames im Laufe der Zeit langsamer wird. Die Bitrate hilft dann, das Video so gut wie möglich zu halten. Ich habe festgestellt, dass es innerhalb einer 100-1000 ms Verzögerung funktioniert; ähnlich wie bei den meisten Bluetooth-Headsets. Möglicherweise wird ein Fehler "Erhöhen der Sondengröße" in Betracht gezogen, der den Stream einfrieren kann. Es ist am besten screenrecord neu zu starten oder versuchen -probesize 16M

Hinweis anhängt: Diese Konfiguration mit ffplay mit dem folgenden Befehl adb vorher geleitet arbeitet. Wenn Sie GPU-intensive Aufgaben ausführen oder ein älteres Telefon verwenden, ist eine Größe von 1280x720 eine bessere Empfehlung. Wenn Ihr Telefon nicht unterstützt 60fps (oder scheint nicht in 60fps aufzeichnen) ändern, bis geeignete mit Werten wie 30 oder 24.

adb shell screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -

mplayer

Der Befehl mplayer -demuxer h264es - scheint um die besten Ergebnisse zu erzielen. Beginnt sofort, sehr wenig Verzögerung und flippt nicht wie vlc aus.

+0

Ja, 'ffplay' könnte etwas Liebe gebrauchen. –

18

Da vlc kann nicht die h264-Datei von adb std Ausgabe spielen, wende ich mich als Stream-Player verwenden ffplay und es funktioniert über den folgenden Befehl ein:

adb shell screenrecord --output-format=h264 - | ffplay - 

OS X binäre ffplay und Streaming-Bildschirme:

enter image description here

Vielen Dank !!

+2

Works Großartig auf Ubuntu, Danke !! – Gautam

+3

Wie öffne ich das in vlc? –

+1

versuchte dies auf Mac OS X Yosemite und ich bekomme eine "pipe :: ungültige Daten gefunden, wenn Eingabe verarbeitet" könnte sein, weil ich über Bluetooth gehe. –

1

Basierend auf den Antworten oben ich jede mögliche Kombination versucht haben, und es gibt nur eine, die viel nicht Verzögerung ist, hört nicht auf und hat eine gute Videoqualität, mit ffplay:

adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M - 

Die Größe Parameter kann zu nichts geändert werden.

Hinweis das ist immer noch weit von perfekt, aber die Arbeit erledigt und ich habe es auch über WiFi versucht und es war gut genug.