GStreamer跨平台多媒体框架
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
GStreamer跨平台多媒体框架的更多相关文章
- Android多媒体框架对音乐播放器的支持
下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些. 1. MediaScannerReceiver 这个广播接收者在接收到A ...
- Android的多媒体框架OpenCore介绍
网上资料很少, 不过还是找到一个比较详细的说明: 特地在此整理了下: 地址:http://blog.csdn.net/djy1992/article/details/9339787 分为几个阶段: 1 ...
- .NET 跨平台界面框架和为什么你首先要考虑再三
原文地址 现在用 C# 来开发跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码.这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统 ...
- 【译】.NET 跨平台界面框架和为什么你首先要考虑再三
现在用 C# 来开发跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码.这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统深度集成. 这里的 ...
- .NET 跨平台RPC框架DotNettyRPC
DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standard2.0 2.产生背景 传统.NET开发中遇到远程调用 ...
- 微软跨平台ORM框架之EFCore
EFCore是微软推出的跨平台ORM框架,想较于EF6.X版本,更加轻量级.EFCore目前已经更新到2.x. 接下来用CodeFirst的方式来使用EFCore. 1.创建控制台程序 2.引入EFC ...
- 新的开始 接触ASP.NET Core跨平台的框架
今天我刚学习了使用Visual Studio 2015新建了.NET Core项目写了一个小的CSHTML代码.按我的话说就是,把C#和HTML合起来使用了,写了一个简单的关于学生的“增” “删” “ ...
- .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
.NET 跨平台RPC框架DotNettyRPC DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...
- JobEngine 基于quartz.net 跨平台作业框架
github:https://github.com/zzhi/JobEngine 基于quartz.net 的跨平台作业框架 quartz.net(https://github.com/quartzn ...
随机推荐
- 【SpringMVC配置失效】Springboot2.x拦截器配置不无生效
一.环境 maven springboot版本2.x <parent> <groupId>org.springframework.boot</groupId> &l ...
- 逆向工程第004篇:跨越CM4验证机制的鸿沟(中)
一.前言 在上一篇文章的最后,我已经找出了关键的CALL语句,那么这篇文章我就带领大家来一步一步地分析这个CALL.我会将我的思路完整地展现给大家,因此分析过程可能略显冗长,我会分为两篇文章进行讨论. ...
- DVWA之DOM XSS(DOM型跨站脚本攻击)
目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...
- UVA10943简单递推
题意: 给你两个数字n,k,意思是用k个不大于n的数字组合(相加和)为n一共有多少种方法? 思路: 比较简单的递推题目,d[i][j]表示用了i个数字的和为j一共有多少种情况,则 ...
- 使用jenkins一键打包发布vue项目
jenkins的安装 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立 ...
- @Test无法运行
使用@Test需要导入两个依赖 junit-4.12.jar hamcrest-core-1.3.jar 添加@Test注解,却没有运行的三角形.需要在该类和方法上都加一个public public ...
- Linux安装Redis报错`cc:命令未找到`
缺少gcc和gcc-c++的编译环境,安装即可. 可以联网情况下使用命令 yum install gcc yum install gcc-c++ 然后清理原来的残余文件 make distclean ...
- liunx中文件夹不能删除怎么操作
1.运行rm -rf 文件名称 2.不能删除对应文件并且提示"rm: cannot remove './.user.ini': Operation not permitted" 操 ...
- 分布式事务与Seate框架(2)——Seata实践
前言 在上一篇博文(分布式事务与Seate框架(1)--分布式事务理论)中了解了足够的分布式事务的理论知识后,到了实践部分,在工作中虽然用到了Seata,但是自己却并没有完全实践过,所以自己私下花点时 ...
- Java集合详解(一):全面理解Java集合
概述 Java所有集合类都在java.util包下,支持并发的集合在java.util.concurrent(juc)包下. 集合与数组区别: 数组大小是固定的,集合大小可以根据使用情况进行动态扩容. ...