GStreamer跨平台多媒体框架
阅读原文时间:2023年07月09日阅读:1

GStreamer跨平台多媒体框架

Gstreamer基本概念

GStreamer是用于构造媒体处理组件图的库。它支持的应用程序范围从简单的Ogg / Vorbis回放,音频/视频流到复杂的音频(混合)和视频(非线性编辑)处理。

应用程序可以透明地利用编解码器和过滤器技术的优势。可以通过编写带有通用接口的简单插件来添加新的编解码器和过滤器。

  • 播放DVB流时的MPEG-TS时间戳回归
  • 合成器:某些输入缩放/转换情况下的伪影,并确保实际支持输出格式,以及重新协商
  • 通过giosrc改进decodebin / playbin中的sftp:// URI播放
  • 自适应demux / dashdemux / hlsdemux
  • rtsp服务器
  • android媒体:编码AVC
  • 各种单元测试
  • 错误和内存泄漏改进
  • 各种稳定性,性能和可靠性方面的改进
  • gi注释改进
  • 构建编译

多平台

GStreamer可在所有主要操作系统上运行,例如Linux,Android,Windows,Max OS X,iOS,以及大多数BSD,商业Unix,Solaris和Symbian。它已被移植到各种操作系统,处理器和编译器。它可以在32位和64位以及Little Endian或Big Endian的所有主要硬件体系结构上运行,包括x86,ARM,MIPS,SPARC和PowerPC。

GStreamer可以桥接到其他多媒体框架,以便重用现有组件(例如编解码器)并使用平台输入/输出机制:

  • Linux / Unix:OpenMAX-IL(通过gst-omx)

  • Windows:DirectShow

  • Mac OS X:QuickTime

  • 基于图的结构允许任意管道构建

  • 基于 GLib 2.0对象模型的面向对象设计和继承

  • 小于500KB的紧凑型核心库,大约65K行代码

  • 多线程管道构造

  • 面向插件和应用程序,简单且稳定的 API

  • 极轻量的数据传递意味着非常高的性能/低延迟

  • 面向核心和插件/应用开发完整 调试系统

  • 时钟以确保全局流间同步(A / V同步)

  • 服务质量(qos),以确保在高CPU负载下可能的最佳质量

  • 动态加载的 插件提供了元素和媒体类型,这些元素和媒体类型是通过注册表缓存按需加载的,类似于ld.so.cache

  • 元素接口 处理所有已知类型的源,过滤器和接收器

  • 功能系统 允许使用MIME类型和特定于媒体的属性来验证元素兼容性

  • 自动插入使用功能系统自动完成复杂路径

  • 通过将管道转储到.dot文件并从中创建PNG图像,可以使其可视化

  • 资源友好的插件不会浪费内存

可以通过新插件扩展GStreamers功能。下面列出的功能只是一个粗略的概述,可以使用GStreamers自己的插件获得,不包括任何第三方提供的功能。

  • 容器格式:asf,avi,3gp / mp4 / mov,flv,mpeg-ps / ts,mkv / webm,mxf,ogg

  • 流式传输:http,mms,rtsp

  • 编解码器:FFmpeg,各种编解码器库,第三方编解码器包

  • 元数据:原生容器格式,它们之间具有通用映射

  • 视频:各种色彩空间,支持逐行和隔行视频

  • 音频:各种位深度和多通道配置中的整数和浮点音频

  • gst-launch命令行工具,用于快速进行原型制作和测试,类似于ecasound

  • 很多 文档,包括部分完成的 手册和 插件编写者指南

  • 每个模块中都有大量的测试程序和示例代码可供选择

  • 使用各种编程语言访问GStreamer API