ubuntuusers.de

GStreamer-Pipe: Synchrones Schreiben möglich?

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

Barabbas

Avatar von Barabbas

Anmeldungsdatum:
31. März 2007

Beiträge: 1651

Wohnort: Münster

Mahlzeit!

Ich arbeite gerade an einem kleinen TV-Rekorder und habe ein Pipe-Problem. Um das Bild aufzuzeichnen und gleichzeitig anzuzeigen, verwende ich folgende Pipe:

   gst-launch-0.10 v4l2src device=/dev/video1 ! tee name=videoout ! queue ! videorate ! video/x-raw-yuv,width=640,height=480,fps=25         ! queue  ! xvidenc bitrate=300000 ! queue ! muxout.   osssrc device=/dev/dsp ! tee name=audioout ! queue ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! lame ! muxout.  avimux name=muxout ! identity sync=TRUE ! filesink location=video.avi videoout. ! queue ! ffmpegcolorspace ! xvimagesink audioout. ! queue ! osssink

So weit, so gut. Nun möchte ich aber auch eine "time-shift" Funktion implementieren. Dazu muss ich - wenn der Benutzer auf Pause drückt - den Stream aufzeichnen und - wenn der Benutzer dann auf Wiedergabe klickt - eben diese Aufzeichnung wiedergeben. Das Problem dabei ist, dass die time-shift-Wiedergabe erfolgen muss, während der Stream noch geschrieben wird. Und genau das bekomme ich mit Gstreamer nicht hin! Wenn ich folgende Pipe nutze:

gst-launch-0.10 v4l2src device=/dev/video1 ! tee name=videoout ! queue ! videorate ! video/x-raw-yuv,width=640,height=480,fps=25         ! queue  ! xvidenc bitrate=300000 ! queue ! muxout.   osssrc device=/dev/dsp ! tee name=audioout ! queue ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! lame ! muxout.  avimux name=muxout ! filesink location=video.avi

wird der Stream zwar geschrieben, ich kann ihn aber nicht wiedergeben. Sowohl GStreamer selbst, als auch mplayer und vlc zeigen entweder gar nichts an, oder durchrattern das gesamte Bildmaterial in wenigen Sekunden, während der Ton wie gewünscht wiedergegeben wird. Laut diesem Eintrag besteht das Problem u.A. darin, dass GStreamer die Video-Daten asynchron schreibt. Allerdings helfen mir die dort angegebenen Tipps nicht die Bohne.

Wäre schön, wenn mir jemand dabei helfen könnte.

Gruß,

brb

/edit: Na toll - dieser Beitrag ist innerhalb weniger Minuten top-Suchergebnis bei Google zu "gstreamer timeshift" geworden. Erweckt nicht gerade Hoffnung 😉

Barabbas

(Themenstarter)
Avatar von Barabbas

Anmeldungsdatum:
31. März 2007

Beiträge: 1651

Wohnort: Münster

Hallo!

Ich hoffe, ihr verübelt es mir nicht, wenn ich nochmal versuche, vom derzeitigen übermittag-Besucheranstrom zu profitieren. Eine mögliche Lösung für mich wäre auch, wenn ich mit GStreamer diese - noch offene - Datei gewissermaßen streamen könnte - also so, dass GStreamer die Datei am Ende nicht abbricht, sondern auf weiteren Input wartet bzw. über das Ende hinaus liest (was normalerweise halt nicht geht, weil gst sich beim Start merkt, wie Groß die Datei zu diesem Zeitpunkt ist).

Danke nochmal,

brb

Antworten |