gstreamer 学习笔记 -- 音视频播放

时间:2023-01-02 08:42:47

研究了一天,终于把怎么用gstreamer播放ts流弄清楚了。


首先上个图:

gstreamer 学习笔记 -- 音视频播放

此图描述了如何将数据从源流向音视频设备。

首先数据从source流出,经过demuxer将音视频流解出来,然后音视频分别经过解码元件解出原始数据,最后在音视频设备上输出。

我所用的环境是在raspberry pi上,具有omx硬件解码接口。播放的视频文件为ts格式,视频编码为H.264, 音频编码为AAC。

这个是播放的命令:

gst-launch-1.0 filesrc location=/app/BIOHAZARD2.ts !tsdemux name=demux demux.video_0012 !queue !h264parse !omxh264dec !glimagesink demux.audio_0011 !queue !faad !alsasink


命令解释:

filesrc:此为源文件 location属性指定其文件位置

tsdemux: 此为ts解码元件,可以将ts流中的音视频解复用出来。name指定名称,用于之后的音视频引用。demux.video_0012 为视频流的标记,其中0012为视频PID的16进制表达。demux.audio_0011 为音频流,同理0011为音频PID的16进制表达。

omxh264dec : 为264的解码元件,这里支持芯片的硬解码。

glimagesink:为opengl的video输出设备。

faad: 为AAC解码元件。

alsasink:为alsa的音频输出设备。


由于本人也是刚学gstreamer,本着分享的精神写了本文,文中难免会出现错误之处,欢迎大家指正。


注:其中插图是在网上收集所得,非原创。