Transmuxing using gst encodebin

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Transmuxing using gst encodebin

Jayanth K.P
Hi,
   I have a requirement to transmux an FLV stream (h.264/mp3) to
mpgets(h.264/mp3). I do not want to decode and mux.

How can this be achieved by using encodebin ? Or combination of
uridecodebin and encodebin .. Plz let me know.

Regards,
Jayanth
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Transmuxing using gst encodebin

Edward Hervey
Administrator
On Fri, 2011-02-11 at 20:40 +0530, Jayanth K.P wrote:
> Hi,
>    I have a requirement to transmux an FLV stream (h.264/mp3) to
> mpgets(h.264/mp3). I do not want to decode and mux.
>
> How can this be achieved by using encodebin ? Or combination of
> uridecodebin and encodebin .. Plz let me know.

  Add the proper h264 and mp3 caps to the uridecodebin caps property (or
use the various uridecodebin signals to stop decoding)
  Create a container encoding profile for mpegts to which you'll add two
stream profiles, one for h264 and one for mp3 and then set that on
encodebin.
  You'll then be able to link the non-decoded pads of uridecodebin to
the sinkpads of encodebin.

  -base/tests/examples/encoding/ might help you.

    Edward

>
> Regards,
> Jayanth
> _______________________________________________
> 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
Reply | Threaded
Open this post in threaded view
|

Re: Transmuxing using gst encodebin

Jayanth K.P
Hi Edward,
   Thanks .. I will try this tomorrow and let you know.

Jayanth

On Sat, Feb 12, 2011 at 6:32 PM, Edward Hervey <[hidden email]> wrote:

> On Fri, 2011-02-11 at 20:40 +0530, Jayanth K.P wrote:
>> Hi,
>>    I have a requirement to transmux an FLV stream (h.264/mp3) to
>> mpgets(h.264/mp3). I do not want to decode and mux.
>>
>> How can this be achieved by using encodebin ? Or combination of
>> uridecodebin and encodebin .. Plz let me know.
>
>  Add the proper h264 and mp3 caps to the uridecodebin caps property (or
> use the various uridecodebin signals to stop decoding)
>  Create a container encoding profile for mpegts to which you'll add two
> stream profiles, one for h264 and one for mp3 and then set that on
> encodebin.
>  You'll then be able to link the non-decoded pads of uridecodebin to
> the sinkpads of encodebin.
>
>  -base/tests/examples/encoding/ might help you.
>
>    Edward
>
>>
>> Regards,
>> Jayanth
>> _______________________________________________
>> 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
Reply | Threaded
Open this post in threaded view
|

Re: Transmuxing using gst encodebin

Jayanth K.P
In reply to this post by Edward Hervey
Hi Edward,

I am running base/tests/examples/encoding/encoding application (this
test application uses uridecodebin and encodebin). Here feed08 is a
FLV file with h264 video. I am stopping the decoding by adding
video/x-h264 and audio/mpeg,mpegversion=4 to the cap of uridecodebin.

   ./encoding file:///home/jayanth/feed08 -o f1.ts -f video/mpegts -v
video/x-h264 -a audio/mpeg,mpegversion=4 --gst-debug-level=3

But somehow i am not able to get "autoplug-continue" signal .. Plz
suggest me what could be the issue.

- Jayanth


Here are some logs -
===============


ncoding parameters
  Container format : MPEG-2 Transport Stream (video/mpegts)
  Video format : H.264 (video/x-h264)
  Audio format : MPEG-4 AAC (audio/mpeg, mpegversion=(int)4)
 Input URI  : file:///home/jayanth/feed08
 Output URI : file:///home/jayanth/gstreamer/gst-plugins-base-0.10.32/tests/examples/encoding/f1.ts
0:00:00.011603349 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstcoreelements.so" loaded
0:00:00.011632371 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"filesink" named "sink"
0:00:00.011947524 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<GstBaseSink@0x674000> adding pad
'sink'
========== GST_URI_SINK: Created
SINK(file:///home/jayanth/gstreamer/gst-plugins-base-0.10.32/tests/examples/encoding/f1.ts)
Successfully ==========
0:00:00.012469718 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstdecodebin2.so" loaded
0:00:00.012496410 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:371:gst_element_factory_create: creating element
"uridecodebin"
========== Created SRC(file:///home/jayanth/feed08) Successfully ==========
Available container formats:
======================== CAPS TO URIDECODEBIN: Num cont caps = 3 ===============
(video/x-raw-yuv; video/x-raw-rgb; video/x-raw-gray; audio/x-raw-int;
audio/x-raw-float; text/plain; text/x-pango-markup;
video/x-dvd-subpicture; subpicture/x-pgs; video/x-h264; audio/mpeg,
mpegversion=(int)4)
======================== END CAPS TO URIDECODEBIN ===============
0:00:00.013302635 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstencodebin.so" loaded
0:00:00.013330062 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:371:gst_element_factory_create: creating element
"encodebin"
0:00:00.013727810 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<GstEncodeBin@0x67d030> adding
pad 'src'
0:00:00.014145333 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstmpegtsmux.so" loaded
0:00:00.014171670 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"mpegtsmux" named "muxer"
0:00:00.014426124 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<MpegTsMux@0x683050> adding pad
'src'
0:00:00.014557437 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:963:gst_element_get_static_pad: found pad muxer:src
0:00:00.014615785 25194       0x607340 INFO                GST_PADS
gstpad.c:1941:gst_pad_link_prepare: trying to link muxer:src and
src:proxypad0
0:00:00.014637911 25194       0x607340 INFO                GST_PADS
gstpad.c:2124:gst_pad_link_full: linked muxer:src and src:proxypad0,
successful
0:00:00.014687659 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"pipeline" named "encoding-pipeline"
0:00:00.014795810 25194       0x607340 INFO        GST_ELEMENT_PADS
gstutils.c:1568:gst_element_link_pads_full: trying to link element
encodebin0:(any) to element sink:(any)
0:00:00.014824742 25194       0x607340 INFO                GST_PADS
gstutils.c:1028:gst_pad_check_link: trying to link encodebin0:src and
sink:sink
0:00:00.014861179 25194       0x607340 INFO                GST_PADS
gstutils.c:1468:prepare_link_maybe_ghosting: encodebin0 and sink in
same bin, no need for ghost pads
0:00:00.014887986 25194       0x607340 INFO                GST_PADS
gstpad.c:1941:gst_pad_link_prepare: trying to link encodebin0:src and
sink:sink
0:00:00.014917822 25194       0x607340 INFO                GST_PADS
gstpad.c:2124:gst_pad_link_full: linked encodebin0:src and sink:sink,
successful
0:00:00.015199213 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<sink> completed state
change to READY
0:00:00.015220670 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<sink> posting
state-changed NULL to READY
0:00:00.015252556 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'sink' changed state to 2(READY) successfully
0:00:00.015291274 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<muxer> completed state
change to READY
0:00:00.015307364 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<muxer> posting
state-changed NULL to READY
0:00:00.015329696 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encodebin0> child 'muxer'
changed state to 2(READY) successfully
0:00:00.015356632 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<encodebin0> completed
state change to READY
0:00:00.015372438 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<encodebin0> posting
state-changed NULL to READY
0:00:00.015393544 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'encodebin0' changed state to 2(READY) successfully
0:00:00.015412630 25194       0x607340 INFO              GST_STATES
gstelement.c:2314:gst_element_continue_state:<encoding-pipeline>
committing state from NULL to READY, pending PLAYING, next PAUSED
0:00:00.015434457 25194       0x607340 INFO              GST_STATES
gstelement.c:2323:gst_element_continue_state:<encoding-pipeline>
continue state change READY to PAUSED, final PLAYING
0:00:00.015501810 25194       0x607340 INFO              GST_STATES
gstbin.c:2498:gst_bin_change_state_func:<encoding-pipeline> child
'sink' is changing state asynchronously to PAUSED
0:00:00.015540433 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<muxer> completed state
change to PAUSED
0:00:00.015557009 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<muxer> posting
state-changed READY to PAUSED
0:00:00.015579365 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encodebin0> child 'muxer'
changed state to 3(PAUSED) successfully
0:00:00.015602076 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<encodebin0> completed
state change to PAUSED
0:00:00.015617937 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<encodebin0> posting
state-changed READY to PAUSED
0:00:00.015638648 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'encodebin0' changed state to 3(PAUSED) successfully
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>




On Sat, Feb 12, 2011 at 6:32 PM, Edward Hervey <[hidden email]> wrote:

> On Fri, 2011-02-11 at 20:40 +0530, Jayanth K.P wrote:
>> Hi,
>>    I have a requirement to transmux an FLV stream (h.264/mp3) to
>> mpgets(h.264/mp3). I do not want to decode and mux.
>>
>> How can this be achieved by using encodebin ? Or combination of
>> uridecodebin and encodebin .. Plz let me know.
>
>  Add the proper h264 and mp3 caps to the uridecodebin caps property (or
> use the various uridecodebin signals to stop decoding)
>  Create a container encoding profile for mpegts to which you'll add two
> stream profiles, one for h264 and one for mp3 and then set that on
> encodebin.
>  You'll then be able to link the non-decoded pads of uridecodebin to
> the sinkpads of encodebin.
>
>  -base/tests/examples/encoding/ might help you.
>
>    Edward
>
>>
>> Regards,
>> Jayanth
>> _______________________________________________
>> 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
Reply | Threaded
Open this post in threaded view
|

Re: Transmuxing using gst encodebin

Jayanth K.P
In reply to this post by Edward Hervey
Hi Edward,

I am running base/tests/examples/encoding/encoding application (this
test application uses uridecodebin and encodebin). Here feed08 is a
FLV file with h264 video. I am stopping the decoding by adding
video/x-h264 and audio/mpeg,mpegversion=4 to the cap of uridecodebin.

  ./encoding file:///home/jayanth/feed08 -o f1.ts -f video/mpegts -v
video/x-h264 -a audio/mpeg,mpegversion=4 --gst-debug-level=3

But somehow i am not able to get "autoplug-continue" signal .. Plz
suggest me what could be the issue.

- Jayanth


Here are some logs -
===============


Encoding parameters
 Container format : MPEG-2 Transport Stream (video/mpegts)
 Video format : H.264 (video/x-h264)
 Audio format : MPEG-4 AAC (audio/mpeg, mpegversion=(int)4)
 Input URI  : file:///home/jayanth/feed08
 Output URI : file:///home/jayanth/gstreamer/gst-plugins-base-0.10.32/tests/examples/encoding/f1.ts
0:00:00.011603349 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstcoreelements.so" loaded
0:00:00.011632371 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"filesink" named "sink"
0:00:00.011947524 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<GstBaseSink@0x674000> adding pad
'sink'
========== GST_URI_SINK: Created
SINK(file:///home/jayanth/gstreamer/gst-plugins-base-0.10.32/tests/examples/encoding/f1.ts)
Successfully ==========
0:00:00.012469718 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstdecodebin2.so" loaded
0:00:00.012496410 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:371:gst_element_factory_create: creating element
"uridecodebin"
========== Created SRC(file:///home/jayanth/feed08) Successfully ==========
Available container formats:
======================== CAPS TO URIDECODEBIN: Num cont caps = 3 ===============
(video/x-raw-yuv; video/x-raw-rgb; video/x-raw-gray; audio/x-raw-int;
audio/x-raw-float; text/plain; text/x-pango-markup;
video/x-dvd-subpicture; subpicture/x-pgs; video/x-h264; audio/mpeg,
mpegversion=(int)4)
======================== END CAPS TO URIDECODEBIN ===============
0:00:00.013302635 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstencodebin.so" loaded
0:00:00.013330062 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:371:gst_element_factory_create: creating element
"encodebin"
0:00:00.013727810 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<GstEncodeBin@0x67d030> adding
pad 'src'
0:00:00.014145333 25194       0x607340 INFO      GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/local/lib/gstreamer-0.10/libgstmpegtsmux.so" loaded
0:00:00.014171670 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"mpegtsmux" named "muxer"
0:00:00.014426124 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:716:gst_element_add_pad:<MpegTsMux@0x683050> adding pad
'src'
0:00:00.014557437 25194       0x607340 INFO        GST_ELEMENT_PADS
gstelement.c:963:gst_element_get_static_pad: found pad muxer:src
0:00:00.014615785 25194       0x607340 INFO                GST_PADS
gstpad.c:1941:gst_pad_link_prepare: trying to link muxer:src and
src:proxypad0
0:00:00.014637911 25194       0x607340 INFO                GST_PADS
gstpad.c:2124:gst_pad_link_full: linked muxer:src and src:proxypad0,
successful
0:00:00.014687659 25194       0x607340 INFO     GST_ELEMENT_FACTORY
gstelementfactory.c:369:gst_element_factory_create: creating element
"pipeline" named "encoding-pipeline"
0:00:00.014795810 25194       0x607340 INFO        GST_ELEMENT_PADS
gstutils.c:1568:gst_element_link_pads_full: trying to link element
encodebin0:(any) to element sink:(any)
0:00:00.014824742 25194       0x607340 INFO                GST_PADS
gstutils.c:1028:gst_pad_check_link: trying to link encodebin0:src and
sink:sink
0:00:00.014861179 25194       0x607340 INFO                GST_PADS
gstutils.c:1468:prepare_link_maybe_ghosting: encodebin0 and sink in
same bin, no need for ghost pads
0:00:00.014887986 25194       0x607340 INFO                GST_PADS
gstpad.c:1941:gst_pad_link_prepare: trying to link encodebin0:src and
sink:sink
0:00:00.014917822 25194       0x607340 INFO                GST_PADS
gstpad.c:2124:gst_pad_link_full: linked encodebin0:src and sink:sink,
successful
0:00:00.015199213 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<sink> completed state
change to READY
0:00:00.015220670 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<sink> posting
state-changed NULL to READY
0:00:00.015252556 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'sink' changed state to 2(READY) successfully
0:00:00.015291274 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<muxer> completed state
change to READY
0:00:00.015307364 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<muxer> posting
state-changed NULL to READY
0:00:00.015329696 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encodebin0> child 'muxer'
changed state to 2(READY) successfully
0:00:00.015356632 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<encodebin0> completed
state change to READY
0:00:00.015372438 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<encodebin0> posting
state-changed NULL to READY
0:00:00.015393544 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'encodebin0' changed state to 2(READY) successfully
0:00:00.015412630 25194       0x607340 INFO              GST_STATES
gstelement.c:2314:gst_element_continue_state:<encoding-pipeline>
committing state from NULL to READY, pending PLAYING, next PAUSED
0:00:00.015434457 25194       0x607340 INFO              GST_STATES
gstelement.c:2323:gst_element_continue_state:<encoding-pipeline>
continue state change READY to PAUSED, final PLAYING
0:00:00.015501810 25194       0x607340 INFO              GST_STATES
gstbin.c:2498:gst_bin_change_state_func:<encoding-pipeline> child
'sink' is changing state asynchronously to PAUSED
0:00:00.015540433 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<muxer> completed state
change to PAUSED
0:00:00.015557009 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<muxer> posting
state-changed READY to PAUSED
0:00:00.015579365 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encodebin0> child 'muxer'
changed state to 3(PAUSED) successfully
0:00:00.015602076 25194       0x607340 INFO              GST_STATES
gstelement.c:2341:gst_element_continue_state:<encodebin0> completed
state change to PAUSED
0:00:00.015617937 25194       0x607340 INFO              GST_STATES
gstelement.c:2354:gst_element_continue_state:<encodebin0> posting
state-changed READY to PAUSED
0:00:00.015638648 25194       0x607340 INFO              GST_STATES
gstbin.c:2492:gst_bin_change_state_func:<encoding-pipeline> child
'encodebin0' changed state to 3(PAUSED) successfully
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>
GOOOOOOOOOOOOOOOOOOT bus_message_cb = <64>



On Sat, Feb 12, 2011 at 6:32 PM, Edward Hervey <[hidden email]> wrote:

> On Fri, 2011-02-11 at 20:40 +0530, Jayanth K.P wrote:
>> Hi,
>>    I have a requirement to transmux an FLV stream (h.264/mp3) to
>> mpgets(h.264/mp3). I do not want to decode and mux.
>>
>> How can this be achieved by using encodebin ? Or combination of
>> uridecodebin and encodebin .. Plz let me know.
>
>  Add the proper h264 and mp3 caps to the uridecodebin caps property (or
> use the various uridecodebin signals to stop decoding)
>  Create a container encoding profile for mpegts to which you'll add two
> stream profiles, one for h264 and one for mp3 and then set that on
> encodebin.
>  You'll then be able to link the non-decoded pads of uridecodebin to
> the sinkpads of encodebin.
>
>  -base/tests/examples/encoding/ might help you.
>
>    Edward
>
>>
>> Regards,
>> Jayanth
>> _______________________________________________
>> 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