GStreamer playback of MP4 files with and without audio
Gareth Alldread
gda190672 at gmail.com
Wed Oct 2 07:26:46 UTC 2024
I would add a handler for the "pad-added" event on the filesrc element and
only create/add the audio part of the pipeline if you get an audio pad
created. That is what I have done to handle rtspsrc streams that may or
may not have audio. Reply if you want more details.
g_signal_connect(m_sourceElement, "pad-added",
G_CALLBACK(&SynxRTSPPipeline::onPadAdded), this);
On Wed, 2 Oct 2024 at 07:30, Terry Barnaby via gstreamer-devel <
gstreamer-devel at lists.freedesktop.org> wrote:
> I am developing a C++ video inspection program that creates MP4/H264/MP3
> files and needs to play them back with the video stream processed by
> various gstreamer elements and audio separately.
>
> In general this has been working fine when just video was being
> recorded/played back, but I am just adding audio to the mix. Some MP4 files
> will contain only a video stream and some will contain both video and audio
> streams.
>
> I need some way to handle the playback of these MP4 files that may or may
> not have MP3 audio streams.
>
> As a simple idea if I use something like (The real C++ code constructs the
> gstreamer piple line and tees the video stream to various gstreamer sub
> pipelines):
>
> gst-launch-1.0 -v filesrc location=temp.mp4 ! qtdemux name=demux
>
> demux.video_0 ! queue ! h264parse ! openh264dec ! glimagesink
>
> demux.audio_0 ! queue ! decodebin ! audioconvert ! pulsesink
>
> This plays back the video and audio streams fine (not sure how well
> synchronised?) from an MP4 with video and audio streams, but hangs if the
> MP4 only has a video stream.
>
> So I think I need to:
>
> 1. Maybe there is some gstreamer element or attribute that can ignore the
> audio stream if not present somehow ?
>
> 2. Check if the MP4 file has an audio stream before creating the gstreamer
> pipeline in C++.
>
> 3. Create the basic C++ pipleline in C++ and interrogate pads or something
> somehow and add the "demux.audio_0 ! queue ! decodebin ! audioconvert !
> pulsesink" sub pipeline if it is seen an audio stream is present.
> Any ideas on the simplest/most CPU efficient way of doing this with
> gstreamer ?
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20241002/6020accd/attachment.htm>
More information about the gstreamer-devel
mailing list