Hi,
I am trying transcoding files and I'm using gstreamer 0.10. My problem is that I'm unable to work out (in case a source file has more than one stream) which stream(s) to select if they have same capabilities. Say I've an audio file with two streams with different language, then how will I select/determine the desired stream? What I have in my mind is (all thinking/no practical) : Connect all streams and add a queue with large enough size (but do not connect to final sink/or connect to fake sink); then change state to paused - there will be messages in the bus with required meta info; now disconnect all unneeded pads, connect with sink and play. How's that? Am I stretching it too far? Regards, Yogesh M _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
What I'm looking for is a way to identify a stream so that I may be able to apply correct options to each streams. I'm refering to "Stream ID" values which are shown by many media info pragrams (Is that a real value or just an index number of stream). So far I'm unable to get any clue where/how to get hold of that information. Hope I'm clear this time. Regards, On Sunday 14 Oct 2012 6:14:15 PM Yogesh Marwaha wrote: > Hi, > > I am trying transcoding files and I'm using gstreamer 0.10. > > My problem is that I'm unable to work out (in case a source file has more > than one stream) which stream(s) to select if they have same capabilities. > Say I've an audio file with two streams with different language, then how > will I select/determine the desired stream? > > What I have in my mind is (all thinking/no practical) : Connect all streams > and add a queue with large enough size (but do not connect to final sink/or > connect to fake sink); then change state to paused - there will be messages > in the bus with required meta info; now disconnect all unneeded pads, > connect with sink and play. How's that? Am I stretching it too far? > > Regards, > > Yogesh M gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Sat, 2012-10-20 at 12:14 +0530, Yogesh Marwaha wrote:
Hi, > What I'm looking for is a way to identify a stream so that I may be able to > apply correct options to each streams. I'm refering to "Stream ID" values > which are shown by many media info pragrams (Is that a real value or just an > index number of stream). So far I'm unable to get any clue where/how to get > hold of that information. Hope I'm clear this time. It's not so easy with 0.10. 1.0 has stream-ids as part of the stream-start event for each stream. These are stable for a given file, so you can first discover some info and then later recognise which stream is which again. Also, decodebin tries much harder to expose streams in the same order in 1.0, in 0.10 it's basically random which pads get exposed in which order. If you must use 0.10, it depends a bit on what your plan is. You could do decodebin, then for each new pad hook up a queue, set up a pad block on the queue's src pad, and an event probe on the new decodebin pad. You will then get tag events for each stream via the event probe (with info about the stream's language etc.), and you will also get a notify::caps signal on that pad once a buffer with caps went through it. You can then expose all that info in your user interface, and then link things up to the queues as needed and unblock the pads to start/continue transcoding. This approach won't work so well if you want to support transmuxing as well though. I would recommend you switch to 1.0, it makes this all somewhat easier. Cheers -Tim > Regards, > > > On Sunday 14 Oct 2012 6:14:15 PM Yogesh Marwaha wrote: > > Hi, > > > > I am trying transcoding files and I'm using gstreamer 0.10. > > > > My problem is that I'm unable to work out (in case a source file has more > > than one stream) which stream(s) to select if they have same capabilities. > > Say I've an audio file with two streams with different language, then how > > will I select/determine the desired stream? > > > > What I have in my mind is (all thinking/no practical) : Connect all streams > > and add a queue with large enough size (but do not connect to final sink/or > > connect to fake sink); then change state to paused - there will be messages > > in the bus with required meta info; now disconnect all unneeded pads, > > connect with sink and play. How's that? Am I stretching it too far? > > > > Regards, > > > > Yogesh M > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
Thanks for the reply. I'm unable to understand how 1.0 will simplify my problem. Apart from stream- id, (as far as I'm able to understand) I'll still have to follow the procedure you explained for 0.10 unless you meant to run the pipeline twice, once to get the information and then again for taking action as per the information collected. Please advise. Regards, On Saturday 20 Oct 2012 12:07:29 PM Tim-Philipp Müller wrote: > On Sat, 2012-10-20 at 12:14 +0530, Yogesh Marwaha wrote: > > Hi, > > > What I'm looking for is a way to identify a stream so that I may be able > > to > > apply correct options to each streams. I'm refering to "Stream ID" values > > which are shown by many media info pragrams (Is that a real value or just > > an index number of stream). So far I'm unable to get any clue where/how > > to get hold of that information. Hope I'm clear this time. > > It's not so easy with 0.10. > > 1.0 has stream-ids as part of the stream-start event for each stream. > These are stable for a given file, so you can first discover some info > and then later recognise which stream is which again. Also, decodebin > tries much harder to expose streams in the same order in 1.0, in 0.10 > it's basically random which pads get exposed in which order. > > If you must use 0.10, it depends a bit on what your plan is. You could > do decodebin, then for each new pad hook up a queue, set up a pad block > on the queue's src pad, and an event probe on the new decodebin pad. You > will then get tag events for each stream via the event probe (with info > about the stream's language etc.), and you will also get a notify::caps > signal on that pad once a buffer with caps went through it. You can then > expose all that info in your user interface, and then link things up to > the queues as needed and unblock the pads to start/continue transcoding. > This approach won't work so well if you want to support transmuxing as > well though. > > I would recommend you switch to 1.0, it makes this all somewhat easier. > > Cheers > -Tim > > > Regards, > > > > On Sunday 14 Oct 2012 6:14:15 PM Yogesh Marwaha wrote: > > > Hi, > > > > > > I am trying transcoding files and I'm using gstreamer 0.10. > > > > > > My problem is that I'm unable to work out (in case a source file has > > > more > > > than one stream) which stream(s) to select if they have same > > > capabilities. > > > Say I've an audio file with two streams with different language, then > > > how > > > will I select/determine the desired stream? > > > > > > What I have in my mind is (all thinking/no practical) : Connect all > > > streams > > > and add a queue with large enough size (but do not connect to final > > > sink/or > > > connect to fake sink); then change state to paused - there will be > > > messages > > > in the bus with required meta info; now disconnect all unneeded pads, > > > connect with sink and play. How's that? Am I stretching it too far? > > > > > > Regards, > > > > > > Yogesh M > > > > _______________________________________________ > > gstreamer-devel mailing list > > [hidden email] > > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Sun, 2012-10-21 at 18:27 +0530, Yogesh Marwaha wrote:
> Thanks for the reply. > > I'm unable to understand how 1.0 will simplify my problem. Apart from stream- > id, (as far as I'm able to understand) I'll still have to follow the procedure > you explained for 0.10 unless you meant to run the pipeline twice, once to get > the information and then again for taking action as per the information > collected. That is what I meant, yes. Whether that makes sense or not depends on the flow of your application of course, if you need to wait for the user to make choices, or if you have a command line app that takes all decisions up front etc. Cheers -Tim _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |