On Mon, Jun 16, 2014 at 1:27 PM, <[email protected]> wrote: > Canek Peláez Valdés <[email protected]> [14-06-16 04:33]: >> On Sun, Jun 15, 2014 at 1:04 PM, Canek Peláez Valdés <[email protected]> >> wrote: >> > On Sun, Jun 15, 2014 at 12:54 PM, <[email protected]> wrote: >> >> Hi, >> >> >> >> After unsuccessfully trying vlc with a Logitech C920 HD Pro Webcam >> >> (over 2 seconds delay between audio and video). I played around >> >> with gstreamer and from bits and pieces from the web I build >> >> this line: >> >> >> >> gst-launch-1.0 v4l2src device=/dev/video1 ! >> >> video/x-h264,width=1920,height=1080,framerate=30/1 ! \ >> >> h264parse ! muxout. alsasrc device="hw:3,0" ! queue ! audioconvert ! >> >> lamemp3enc ! \ >> >> muxout. matroskamux name=muxout streamable=true ! filesink >> >> location=c920.mp4 >> >> >> >> which records a Full HD video with audio to my harddisc. The delay is >> >> minimal and the sync between audio and video is good. >> >> >> >> But there is one disadvantage: >> >> I cannot see what I am recording and I cannot watch the webcams stream >> >> before I fire up the script because otherwise the device would be "already >> >> in use" (I dont like scripts, which simply kill other applications when >> >> called). >> >> >> >> Any ideas or hints how to manage that? >> > >> > Use the tee element. I'm in a hurry, so I cannot test a pipeline right >> > now, but I will try later. Meanwhile, just try to put a queue element >> > after each path of the tee. >> > >> > gst-inspect-1.0 tee >> >> OK, it took me a bit of an effort, but this is my pipeline: >> >> gst-launch-1.0 v4l2src norm=NTSC device=/dev/video1 ! queue ! >> deinterlace mode=1 ! videorate ! >> video/x-raw,format=YV12,width=720,height=480,framerate=30000/1001 ! >> tee name=t t. ! queue ! videoconvert ! mpeg2enc ! avimux ! filesink >> location=file.avi t. ! queue ! videoconvert ! autovideosink >> >> My hardware is much more limited (analog RGB), so resolution and >> famerate are accordingly lower. This captures to an AVI file encoded >> to MPEG2 the video signal, and at the same time it opens a window to >> show the stream. >> >> It should not be that much of a problem to modify it to your needs; >> just notice that I didn't capture audio. >> >> Regards. >> -- >> Canek Peláez Valdés >> Profesor de asignatura, Facultad de Ciencias >> Universidad Nacional Autónoma de México >> > > Hi Canek, > > Thanks a lot for your effort!!! 8)
No problem; I have a little MP3 encoder that I use to handle my music collection (along with other utilities) [1], and I was trying to do some video analysis for another project I have, so I had the GStreamer notions kinda fresh. > Is there any documentation out there about this "How to build > a pipeline with gst-launch", which you would recommend to read? GStreamer is a programmer's framework, and really gst-launch-1.0 is just a test tool; however, GStreamer is so flexible and powerful, that a lot of stuff can be done using the launcher and without a single line of code written. Having said that, IMNSHO the only way to really understand the GStreamer pipelines is to read the developer's documentation[2]; specially when you need to use pads, although using the queue element can solve that problem many times. > I will see how I can map your example to my code I have already, which > handles audio and video... Good luck. [1] https://github.com/canek-pelaez/mlm/blob/master/src/mlm-encoder.vala#L467 [2] http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/index.html -- Canek Peláez Valdés Profesor de asignatura, Facultad de Ciencias Universidad Nacional Autónoma de México

