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

Reply via email to