Luis, Adam, Matching Gstreamer capabilities is an arcane magic that brings good to none. Many times I've tried to think logically about them to no avail --they're simply magic and we have accept the fact and live with it.
I would refrain from using "ffenc"-type components --their magic is weaker and impredictable, and they'll probably bring more trouble than they'll fix. So, instead "ffenc_mpeg2video" I'd use "mpeg2enc", which is definitely better. Also, I'd try adding a ffmpegcolorspace and a videorate **before** the caps specification. Those powerful amulets deal with the dark forces behind the caps matching and free us, o humble humans!, from dealing with such evil powers. In short, I'd first use this spell (pretty much the one Adam suggested, but with the mpeg2enc component --but it's unlikely it will work): gst-launch -ev v4l2src device=/dev/video0 ! video/x-raw-yuv, width=1280, height=1024 ! queue ! mpeg2enc format=3 ! queue ! mpegpsmux ! filesink location=testWithResolution.mpg , and, if it does not work, then I'd try adding the components marked in bold, one at a time: gst-launch -ev v4l2src device=/dev/video0 ! *ffmpegcolorspace ! videorate ! videoscale add-margins=true *! video/x-raw-yuv, width=1280, height=1024 ! queue ! mpeg2enc format=3 ! queue ! mpegpsmux ! filesink location=testWithResolution.mpg In any case, do not try to use those spells backwards --one never knows which diabolic creature might be summoned. In the worst case, none of the possibilities will work -- that means we will have to investigate further (perhaps the camera is using its MJPEG output?). I'm sorry but I don't remember if you tried this: does the line gst-launch -ev v4l2src device=/dev/video0 ! autovideosink work? Cheers Rubén 2012/8/7 Luis Galeana <[email protected]> > Hi, Adam, > > Thanks a lot for the response. I spent some time researching how to write > the pipeline, but I couldn't find much. I attach the output of both > commands. None of them worked. I keep getting an internal data flow error. > Do you think this could be some hardware-related issue? I can see the cam > turning on and then off after it fails. > > Thanks again for the help. > > Luis Galeana. > > 2012/8/3 McKenzie, Adam <[email protected]> > > Hi Luis, >> >> >> >> Sorry about the information overload, on the plus side the v4l-info >> output confirms that your webcam outputs raw frames (as does the gst-launch >> v4l2src device=/dev/video0 ! xvimagesink actually working). Could you try >> running the gstreamer command: >> >> >> "gst-launch -ev v4l2src device=/dev/video0 ! video/x-raw-yuv, >> width=1280, height=1024 ! queue ! ffenc_mpeg2video ! queue ! mpegpsmux ! >> filesink location=testWithResolution.mpg" >> >> >> Letting it run for a few seconds and then testing to see that the >> testWithResolution.mpg file plays okay? This is similar to the same >> pipeline that will run in matterhorn except that I have added the explicit >> resolution so that it will more likely link okay. If that pipeline works >> okay could you try: >> >> >> "gst-launch -ev v4l2src device=/dev/video0 ! queue ! ffenc_mpeg2video ! >> queue ! mpegpsmux ! filesink location=testWithoutResolution.mpg" >> >> >> Looking especially for the line "streaming task paused, reason >> not-linked (-1)" after the usual "ERROR: from element >> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error." >> >> Webcams are great in that they support a variety of resolutions and >> framerates for those resolutions but this makes it difficult for them in my >> experience to link correctly with encoders. Sometimes the encoders demand >> too many frames at the maximum resolution and overwhelm the webcam causing >> the internal data flow error (at least this is what I assume is happening >> with the webcam I use for testing). >> >> If the first gstreamer line works, but not the second I am hoping you >> should be able to capture with these settings: >> >> capture.device.Webcam.type=CUSTOM_VIDEO_SRC >> capture.device.Webcam.flavor=presenter/source >> capture.device.Webcam.outputfile=Webcam.mpg >> capture.device.Webcam.src=/dev/video0 >> capture.device.Webcam.customProducer=v4l2src device=/dev/video0 ! >> video/x-raw-yuv, width=1280, height=1024 ! queue >> >> Thanks, >> >> Adam >> >> >> Adam McKenzie >> ITS, University of Saskatchewan >> Rm 61 Physics, 116 Science Place >> Saskatoon SK S7N 5E2 Canada >> (306) 966-8241 >> >> >> >> *From:* [email protected] [mailto: >> [email protected]] *On Behalf Of *Luis Galeana >> *Sent:* Thursday, August 02, 2012 6:14 PM >> >> *To:* Matterhorn Users >> *Subject:* Re: [Matterhorn-users] Capture Agent pipeline >> >> >> >> Hi, Adam, >> >> I don't like to admit that I feel pretty lost. I attach the output of >> v4l-info and the one of gst-inspect. Also, I can launch the cam with this >> command gst-launch v4l2src device=/dev/video0 ! xvimagesink. >> >> Thanks a lot. >> >> Luis Galeana. >> >> 2012/8/2 McKenzie, Adam <[email protected]> >> >> Hi Luis, >> >> There are a couple of things you can do to try to get more information >> about your device. >> >> >> Could you run >> "v4l-info /dev/video0" >> >> This will spit out a lot of information but the key part is the video >> capture part. For example I have a camera that outputs motion jpeg and the >> output of the video capture looks like this: >> >> video capture >> VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE) >> index : 0 >> type : VIDEO_CAPTURE >> flags : 0 >> description : "YUV 4:2:2 (YUYV)" >> pixelformat : 0x56595559 [YUYV] >> VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE) >> index : 1 >> type : VIDEO_CAPTURE >> flags : 1 >> * description : "MJPEG"* >> pixelformat : 0x47504a4d [MJPG] >> >> Could you attach the whole output to your reply so that I can perhaps >> change the custom pipeline for your particular device. >> >> If it does say that it uses h264 could you run >> "gst-inspect ffdec_h264" >> >> If it complains that the gstreamer-tools are not installed could you >> install them with >> "sudo apt-get install gstreamer-tools" >> >> You need this element to actually decode 264 streams in case your webcam >> actually outputs x264. If it isn't installed and complains it is missing >> you might need to run: >> "sudo apt-get install gstreamer0.10-ffmpeg" >> >> To enable it and try the custom pipeline again. >> >> Thanks, >> Adam >> >> *Adam McKenzie* >> * Programmer Analyst, Education Applications* >> >> Client Services, Information and Communications Technology >> >> Ph: (306) 966-8241 >> >> >> >> <http://www.usask.ca/> >> ------------------------------ >> <http://www.usask.ca/> >> >> *From:* *[email protected]* [* >> [email protected]*] on behalf of Luis Galeana >> [*[email protected]*] <http://www.usask.ca/> >> >> >> *Sent:* Wednesday, August 01, 2012 6:29 PM >> *To:* Matterhorn Users >> *Subject:* Re: [Matterhorn-users] Capture Agent >> pipeline<http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> Hi, Adam, >> >> I changed my configuration to what you said, but I still get the >> internal error message. The log is below. Is there any information that >> could help determine the cause of the failure? >> >> Log: >> ---------------------------- >> ... >> 20:19:47 INFO (GStreamerPipeline:430) - Successfully initialised 2 >> devices. >> 20:19:47 INFO (CustomVideoProducer:73) - Custom Video Producer is using >> Pipeline: "v4l2src device=/dev/video0 ! queue ! decodebin ! queue" >> 20:19:48 INFO (GStreamerPipeline:96) - Initializing devices for capture. >> 20:19:51 INFO (ProducerBin:121) - Sending EOS to stop v4l2src0 >> 20:19:51 WARN (GStreamerPipeline$2:144) - v4l2src0: Internal data flow >> error. >> 20:19:51 INFO (ProducerBin:121) - Sending EOS to stop alsasrc0 >> 20:19:54 INFO (AgentStateJob:190) - #7 - State push to * >> org.opencastproject.capture.impl.jobs.AgentStateJob@5d59d625* to * >> http://localhost:8080/capture-admin/agents/Galeana* failed with code 405. >> 20:19:54 INFO (AgentConfigurationJob:121) - #7 - Capabilities push to * >> http://localhost:8080/capture-admin/agents/Galeana/configuration* failed >> with code 405. >> 20:19:54 INFO (AgentStateJob:190) - #7 - State push to * >> org.opencastproject.capture.impl.jobs.AgentStateJob@5d59d625* to * >> http://localhost:8080/capture-admin/recordings/Unscheduled-Galeana-1343866787387 >> * failed with code 405. >> ... >> 20:20:51 ERROR (CaptureAgentImpl:339) - Unable to start pipeline after 5 >> seconds. Aborting! >> --------------------------------------- >> >> Thanks! >> >> Luis Galeana. >> >> <http://www.usask.ca/> >> >> 2012/8/1 McKenzie, Adam <*[email protected]*> <http://www.usask.ca/> >> >> Hi Luis, <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> I noticed in your log that it stated the problem is “Internal data flow >> error” which combined with your comment earlier that your webcam captures >> in h264 might be the culprit. Could you try changing your webcam capture >> device settings to: <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> capture.device.Webcam.type=CUSTOM_VIDEO_SRC <http://www.usask.ca/> >> >> capture.device.Webcam.flavor=presenter/source <http://www.usask.ca/> >> >> capture.device.Webcam.outputfile=Webcam.mpg <http://www.usask.ca/> >> >> capture.device.Webcam.src=/dev/video0 <http://www.usask.ca/> >> >> capture.device.Webcam.customProducer=v4l2src device=/dev/video0 ! queue ! >> decodebin ! queue <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> The type CUSTOM_VIDEO_SRC specifies that you want to write your own >> gstreamer magic. The customProducer property is the actual gstreamer line >> that it will run when it tries to capture from your webcam. Each of the >> elements in the pipeline are separated with exclamation points “!”. The >> “v4l2src device=/dev/video0” part just tells it to capture from the video 4 >> linux 2 device located at /dev/video0. The queues are just in case your >> system needs a bit of a buffer to process and decode the video. Finally the >> “decodebin” part is a gstreamer element that will try to determine what is >> coming in, attach the correct decoder and pass on raw frames for the rest >> of the pipeline. Please let me know if anything else is unclear. >> <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> Cheers, <http://www.usask.ca/> >> >> Adam <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> Adam McKenzie >> ITS, University of Saskatchewan >> Rm 61 Physics, 116 Science Place >> Saskatoon SK S7N 5E2 Canada >> *(306) 966-8241* <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> *From:* *[email protected]* [mailto:* >> [email protected]*] *On Behalf Of *Luis >> Galeana >> *Sent:* Wednesday, August 01, 2012 9:29 AM >> *To:* Matterhorn Users >> *Subject:* Re: [Matterhorn-users] Capture Agent >> pipeline<http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> Hi again, >> >> Below is my device configuration and I'm getting some internal error... >> The log is at the end. What do you think that could be the problem? >> >> #Create the presenter capture >> capture.device.Webcam.type=V4L2SRC >> capture.device.Webcam.flavor=presenter/source >> capture.device.Webcam.outputfile=Webcam.mpg >> capture.device.Webcam.src=/dev/video0 >> >> #Create the audio capture >> capture.device.test.src=hw:0 >> capture.device.test.outputfile=test.mp2 >> capture.device.test.flavor=presenter/source >> capture.device.test.buffer.bytes=536870912 >> capture.device.names=Webcam, test >> >> Log: >> ------------------ >> 21:55:41 INFO (AgentStateJob:190) - #4 - State push to * >> org.opencastproject.capture.impl.jobs.AgentStateJob@2e647edd* to * >> http://localhost:8080/capture-admin/agents/Galeana* failed with code 405. >> 21:55:41 INFO (AgentConfigurationJob:121) - #4 - Capabilities push to * >> http://localhost:8080/capture-admin/agents/Galeana/configuration* failed >> with code 405. >> 21:55:44 INFO (GStreamerPipeline:430) - Successfully initialised 2 >> devices. >> 21:55:45 INFO (GStreamerPipeline:96) - Initializing devices for capture. >> 21:55:48 INFO (ProducerBin:121) - Sending EOS to stop v4l2src0 >> 21:55:48 INFO (ProducerBin:121) - Sending EOS to stop alsasrc0 >> 21:55:48 WARN (GStreamerPipeline$2:144) - v4l2src0: Internal data flow >> error. >> 21:55:51 INFO (AgentStateJob:190) - #5 - State push to * >> org.opencastproject.capture.impl.jobs.AgentStateJob@7a7683b1* to * >> http://localhost:8080/capture-admin/agents/Galeana* failed with code 405. >> 21:55:51 INFO (AgentConfigurationJob:121) - #5 - Capabilities push to * >> http://localhost:8080/capture-admin/agents/Galeana/configuration* failed >> with code 405. >> 21:55:51 INFO (AgentStateJob:190) - #5 - State push to * >> org.opencastproject.capture.impl.jobs.AgentStateJob@7a7683b1* to * >> http://localhost:8080/capture-admin/recordings/Unscheduled-Galeana-1343699744653 >> * failed with code 405. >> ... >> 21:56:48 ERROR (CaptureAgentImpl:339) - Unable to start pipeline after 5 >> seconds. Aborting! >> ------------------- >> >> P.S. I couldn't fix the push and capabilities errors. Could you >> elaborate a little bit on what I should do? I see that both >> config.properties files - the core and the capture agent - have the same >> url, as well as the org.opencastproject.capture.core.url. >> >> Thanks a lot!! >> >> Luis Galeana. <http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> >> _______________________________________________ >> Matterhorn-users mailing list >> *[email protected]* >> *http://lists.opencastproject.org/mailman/listinfo/matterhorn-users*<http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> >> _______________________________________________ >> Matterhorn-users mailing list >> *[email protected]* >> *http://lists.opencastproject.org/mailman/listinfo/matterhorn-users*<http://www.usask.ca/> >> >> <http://www.usask.ca/> >> >> _______________________________________________ >> Matterhorn-users mailing list >> [email protected] >> http://lists.opencastproject.org/mailman/listinfo/matterhorn-users >> >> > > _______________________________________________ > Matterhorn-users mailing list > [email protected] > http://lists.opencastproject.org/mailman/listinfo/matterhorn-users > >
_______________________________________________ Matterhorn-users mailing list [email protected] http://lists.opencastproject.org/mailman/listinfo/matterhorn-users
