研究了一天,终于把怎么用gstreamer播放ts流弄清楚了。
首先上个图:
此图描述了如何将数据从源流向音视频设备。
首先数据从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,本着分享的精神写了本文,文中难免会出现错误之处,欢迎大家指正。
注:其中插图是在网上收集所得,非原创。