新闻  |   论坛  |   博客  |   在线研讨会
骁龙820A汽车 ADAS 分享方案介绍—多媒体处理之应用程序篇(二)
车载技术工程师 | 2018-06-26 14:56:54    阅读:547   发布文章

在之前的820方案介绍中,我们介绍了多媒体框中的工具使用,基于上篇的应用程序篇,我们来进一步探讨关于组件和文件相关。

组件(Components)

GStreamer包含一些高级(higher-level )组件,这些组件可以简化你
的应用程序。
Playbin2是一个元件,它会处理播放的方方面面,从源经过解复用、解码到最后的显示。同时它也非常灵活,有很多设置项。playbin2 能够自动支持管道的所有特性,包括错误处理,标签支持,状态处理,得到流位置信息,查询等。简单地,可以通过命令行来测试"playbin2""gst-launch-1.0
playbin2 uri=file:///path/to/file"

uridecodebin

这个element从一个URI获得数据然后解码成原始媒体数据。它会
选择一个能处理给定的
URIsource element,然后和decodebin2
连接起来。它在一个媒体里面发现多少流就ᨀ供多少source pad
来输出,这点和解复用很像。
gst-launch-
    0.10 uridecodebin     uri=http://docs.gstreamer.com/media/sintel_traile
    r-480p.webm ! ffmpegcolorspace ! Autovideosink
gst-launch-
    0.10 uridecodebin     uri=http://docs.gstreamer.com/media/sintel_traile
    r-480p.webm ! audioconvert ! autoaudiosink

decodebin2

这个element会自动用解复用插件和解码插件创建解码pipeline。它被使用起来更方便的uridecodebin作为一个source element集成在自己内部了。以前还有一个旧的decodebin,目前已经废弃不用了,uridecodebin一样,它也是在媒体里面发现多少流就ᨀ供多少source pad来输出。
gst-launch-
    0.10 souphttpsrc     location=http://docs.gstreamer.com/media/sintel_tr
    ailer-480p.webm ! decodebin2 ! autovideosink

文件输入/输出

• filesrc
这个element会读取一个本地文件然后用Caps来输出媒体数据。如果你想要获得一个正确地Caps,那么需要用typefind element来搜索流或者把filesrc的typefind属性设置成TRUE。
    gst-launch-0.10 filesrc     location=f:\\media\\sintel\\sintel_trailer-
    480p.webm ! decodebin2 ! Autovideosink
• filesink
这个element会把所有收到的媒体数据存成文件。使用location属性来指
定路径和文件名。
gst-launch-0.10 audiotestsrc ! vorbisenc ! oggmux ! filesink location=test.og

Network
• souphttpsrc
这个element作为一个客户端,使用SOUP库经由HTTP来接收数据。
通过location属性来设置URL。
gst-launch-
0.10 souphttpsrc location=http://docs.gstreamer.com/media/sintel_tra
iler-480p.webm ! decodebin2 ! autovideosink

测试媒体数据生成

Videotestsrc
这个element生成一个固定的video输出(通过pattern属性来设置),用来测试视频的pipeline

gst-launch-0.10 videotestsrc ! ffmpegcolorspace !autovideosink
audiotestsrc
这个element生成一个音频信号(通过设置wave属性来设置), 用来测试音频的pipeline
gst-launch-0.10 audiotestsrc ! audioconvert ! autoaudiosink

音视频适配

ffmpegcolorspace
这个element会把一个色彩空间转换到另一个色彩空间(比如从RGB转到YUV)。 它也可以在转换不同的YUV格式或者RGB格式。
gst-launch-0.10 videotestsrc ! ffmpegcolorspace ! autovideosink
videorate
这个element接受带时间戳的视频数据转换成匹配source pad帧率的流。通过丢弃或者复制帧来执行改正,而不是通过古怪的算法。
gst-launch-0.10 videotestsrc ! video/x-raw-rgb,framerate=30/1 ! videorate ! video/x-rawrgb,framerate=1/1 ! ffmpegcolorspace ! autovideosink
videoscale
这个element可以修改视频帧的尺寸。
gst-launch-0.10 uridecodebin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm ! videoscale ! video/x-rawyuv,width=178,height=100 ! ffmpegcolorspace ! autovideosink
audioconvert
这个element会转化原始的不同音频格式之间的缓冲。它支持从整数到浮点数的转化,符号数/字节序转换以及声道转换。
gst-launch-0.10 audiotestsrc ! audioconvert ! autoaudiosink
audioresample
这个element使用可配置的窗口函数重采样音频缓冲到不同的采样率来增强质量。
gst-launch-0.10 uridecodebin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm ! audioresample ! audio/x-rawfloat,rate=4000 ! audioconvert ! autoaudiosink

其它组件
• 多线程
queue, queue2 , multiqueue, tee
• 调试
fakesink, identity


关于应用程序编写部分,我们就了解到这里,因为在实际项目中我们需要根据项目需求来自己编写完成功能,那么Gst的插件编写也是必备掌握的能力,那么在后续的博客中,我们将会对插件编写来进行讨论。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客