在 GStreamer 中,解复用器(Demuxer) 用于分离容器格式(如 MP4、MKV、AVI 等)中的 视频、音频、字幕等流。不同的容器格式需要不同的 Demuxer 元素。
一、常见的 GStreamer Demuxer 元素
1. MP4 / QuickTime 格式
-
qtdemux
-
用于解析 MP4(.mp4)、MOV(.mov) 等基于 QuickTime 容器格式的文件。
-
动态生成
video_%u
、audio_%u
等 Pad。 -
示例:
bash
gst-launch-1.0 filesrc location=video.mp4 ! qtdemux name=demux \demux.video_0 ! queue ! h264parse ! avdec_h264 ! autovideosink \demux.audio_0 ! queue ! aacparse ! avdec_aac ! autoaudiosink
-
2. Matroska / WebM 格式
-
matroskademux
-
用于解析 MKV(.mkv)、WebM(.webm) 文件。
-
动态生成
video_%u
、audio_%u
等 Pad。 -
示例:
bash
gst-launch-1.0 filesrc location=video.mkv ! matroskademux name=demux \demux.video_0 ! queue ! av1dec ! autovideosink \demux.audio_0 ! queue ! vorbisdec ! autoaudiosink
-
3. AVI 格式
-
avidemux
-
用于解析 AVI(.avi) 文件。
-
动态生成
video
、audio
Pad。 -
示例:
bash
gst-launch-1.0 filesrc location=video.avi ! avidemux name=demux \demux.video ! queue ! mpeg4videoparse ! avdec_mpeg4 ! autovideosink \demux.audio ! queue ! mp3parse ! avdec_mp3 ! autoaudiosink
-
4. MPEG-TS / MPEG-PS 格式
-
tsdemux
-
用于解析 MPEG-TS(.ts、.m2ts) 流(如数字电视、DVB 流)。
-
示例:
bash
gst-launch-1.0 filesrc location=stream.ts ! tsdemux name=demux \demux.video_0 ! queue ! h264parse ! avdec_h264 ! autovideosink \demux.audio_0 ! queue ! aacparse ! avdec_aac ! autoaudiosink
-
-
mpegpsdemux
-
用于解析 MPEG-PS(.vob、.mpg) 文件(如 DVD 视频)。
-
5. FLV 格式
-
flvdemux
-
用于解析 FLV(.flv) 文件(Flash 视频)。
-
示例:
bash
gst-launch-1.0 filesrc location=video.flv ! flvdemux name=demux \demux.video ! queue ! vp6dec ! autovideosink \demux.audio ! queue ! mp3dec ! autoaudiosink
-
6. OGG 格式
-
oggdemux
-
用于解析 OGG(.ogg、.ogv) 文件(如 Vorbis 音频、Theora 视频)。
-
示例:
bash
gst-launch-1.0 filesrc location=audio.ogg ! oggdemux name=demux \demux.audio_0 ! queue ! vorbisdec ! autoaudiosink
-
通用 Demuxer
-
decodebin
/uridecodebin
-
自动检测容器格式,并选择合适的 Demuxer 和解码器。
-
适用于 不确定输入格式 的情况。
-
示例:
bash
gst-launch-1.0 uridecodebin uri=file:///video.mp4 ! autovideosink
-
如何查看系统支持的 Demuxer?
在终端运行:
bash
gst-ins