多媒体开发框架-GStreamer


GStreamer 是 GNOME 桌面环境下用来构建流媒体应用的多媒体框架(Framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多种格式的多媒体数据。

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. A flexible, fast and multiplatform multimedia framework.
Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.
GStreamer is released under the LGPL. GStreamer docs is very nice.
GStreamer框架使用GObjects,因此一些OO概念的知识将派上用场;GObject和GLib库的知识不是强制性的,但会使旅行更容易。
Features
Multiplatform
Comprehensive Core Library
Intelligent Plugin Architecture
Broad Coverage of Multimedia Technologies
Extensive Development Tools
最新版本:1.6
API和ABI均与GStreamer1.0兼容的同时,引入了新的功能、大量bug修复和优化。新的插件支持DASH adaptive streaming、JPEG2000 images、VP9和Daala video,以及WebP的解码。
最新版本:1.18
GstTranscoder:新的高级 API,可将媒体文件从一种格式转码为另一种格式
高动态范围(HDR)视频信息呈现和信令增强
支持即时播放速率的更改与活动格式说明(AFD)和条形数据
GStreamer RTSP 服务器和客户端均支持 ONVIF trick 模式
在 Windows 上通过 DXVA2 / Direct3D11 进行硬件加速的视频解码
Microsoft Media Foundation 插件,用于 Windows 上的视频捕获和硬件加速的视频编码
qmlgloverlay:新的叠加层元素,可在输入视频流的顶部渲染 QtQuick 场景
新的 imagessequencesrc 元素,可以轻松地从一系列 jpeg 或 png 图像创建视频流
dashsink:添加新接收器以产生 DASH 内容
dvbsubenc:DVB 字幕编码器元素
兼容电视广播的 MPEG-TS 复用,具有恒定比特率复用和 SCTE-35 支持
rtmp2:新的 RTMP 客户端源和接收器元素实现
更多内容见发行说明。
最新版本:1.2x
v1.26 现已于2025年3月中旬发布,其在之前的 v1.24 系列的基础上添加了新功能,并且是 GStreamer 多媒体框架 API 和 ABI 稳定的 1.x 版本系列的一部分。更新特点如下:
H.266 多功能视频编码 (VVC) 编解码器支持
低复杂度增强视频编码 (LCEVC) 支持
Closed captions:H.264/H.265 提取器 / 插入器、cea708overlay、cea708mux、tttocea708 等
新的 hlscmafsink、hlssink3 和 hlsmultivariantsink;HLS/DASH 客户端和 dashsink 改进
新的 AWS 和 Speechmatics 转录、翻译和 TTS 服务元素以及 Translationbin
Splitmux lazy loading 和动态片段添加支持
Matroska:H.266 视频和旋转标签支持,定义延迟多路复用
MPEG-TS:支持 H.266、JPEG XS、AV1、VP9 编解码器和 SMPTE ST-2038 和 ID3 meta;mpegtslivesrc
ISO MP4:支持 H.266、Hap、Lagarith 无损编解码器;原始视频支持;旋转标签
SMPTE 2038 辅助数据流支持
JPEG XS 图像编解码器支持
Analytics:新的 TensorMeta;N-to-N 关系;Mtd 携带分段掩码
ONVIF 元数据提取器以及关系元之间的转换
新的 originalbuffer 元素可以在转换步骤后再次恢复缓冲区以进行分析
改进了 analytics API 的 Python 绑定
大量 Vulkan 集成和 Vulkan 视频解码器 / 编码器改进
OpenGL 集成改进,尤其是在 glcolorconvert、gldownload、glupload 中
Qt5/Qt6 QML GL sinks 现在支持从硬件解码器直接导入 DMABuf
CUDA:新合成器、Jetson NVMM 内存支持、stream-ordered allocator
NVCODEC AV1 视频编码器元素和 nvdsdewarp
新的 Direct3D12 集成支持库
新的 d3d12swapchainsink 和 d3d12deinterlace 元素以及用于零拷贝 IPC 的 D3D12 sink/source
Decklink HDR 支持 (PQ + HLG) 和帧调度增强
AJA capture source clock 处理和信号丢失恢复改进
RTP 和 RTSP:新的 rtpbin 同步模式、rtspsrc 中的客户端 MIKEY 支持
新的 Rust rtpbin2、rtprecv、rtpsend 以及许多新的 Rust RTP 负载程序和卸载程序
webrtcbin 支持基本回滚和其他改进
webrtcsink:支持更多编码器、SDP 混合以及内置 Web/signalling server
webrtcsrc/sink:支持未压缩的音频 / 视频以及 NTP 和 PTP clock signalling 和 synchronization
rtmp2:服务器身份验证改进,包括 Limelight CDN (llnw) 身份验证
新的基于 Microsoft WebView2 的 Web 浏览器源元素
GTK3 插件已获得 Windows 上对 OpenGL/WGL 的支持
许多 GTK4 paintable sink 改进
GstPlay:id-based stream selection 和 message API 改进
使用新的 dots tracer 和 viewer 在浏览器中实现 Real-time pipeline 可视化
新的跟踪器用于以 pcap 文件形式跟踪内存使用情况、pad push 时间和缓冲区流
VA hardware-acclerated H.266/VVC 解码器、VP8 和 JPEG 编码器、VP9/VP8 alpha decodebins
Video4Linux2 元素现在支持 DMA_DRM caps negotiation
V4L2 无状态解码器实现 AV1 和 VP9 的帧间分辨率变化
Editing services:支持反向播放和音频通道重新排序
基于 QUIC 的新元素,用于处理原始 QUIC 流、RTP-over-QUIC (RoQ) 和 WebTransport
Apple AAC 音频编码器和 Apple 音频解码器的多通道支持
cerbero:Python 绑定和自省支持;基于 WiX5 改进的 Windows 安装程序
大量新插件、功能、性能改进和错误修复
有关更多详细信息,可查看 GStreamer v1.26 发行说明。
项目主页:http://gstreamer.freedesktop.org/

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. A flexible, fast and multiplatform multimedia framework.
Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.
GStreamer is released under the LGPL. GStreamer docs is very nice.
GStreamer框架使用GObjects,因此一些OO概念的知识将派上用场;GObject和GLib库的知识不是强制性的,但会使旅行更容易。
Features
Multiplatform
Comprehensive Core Library
Intelligent Plugin Architecture
Broad Coverage of Multimedia Technologies
Extensive Development Tools
最新版本:1.6
API和ABI均与GStreamer1.0兼容的同时,引入了新的功能、大量bug修复和优化。新的插件支持DASH adaptive streaming、JPEG2000 images、VP9和Daala video,以及WebP的解码。
最新版本:1.18
GstTranscoder:新的高级 API,可将媒体文件从一种格式转码为另一种格式
高动态范围(HDR)视频信息呈现和信令增强
支持即时播放速率的更改与活动格式说明(AFD)和条形数据
GStreamer RTSP 服务器和客户端均支持 ONVIF trick 模式
在 Windows 上通过 DXVA2 / Direct3D11 进行硬件加速的视频解码
Microsoft Media Foundation 插件,用于 Windows 上的视频捕获和硬件加速的视频编码
qmlgloverlay:新的叠加层元素,可在输入视频流的顶部渲染 QtQuick 场景
新的 imagessequencesrc 元素,可以轻松地从一系列 jpeg 或 png 图像创建视频流
dashsink:添加新接收器以产生 DASH 内容
dvbsubenc:DVB 字幕编码器元素
兼容电视广播的 MPEG-TS 复用,具有恒定比特率复用和 SCTE-35 支持
rtmp2:新的 RTMP 客户端源和接收器元素实现
更多内容见发行说明。
最新版本:1.2x
v1.26 现已于2025年3月中旬发布,其在之前的 v1.24 系列的基础上添加了新功能,并且是 GStreamer 多媒体框架 API 和 ABI 稳定的 1.x 版本系列的一部分。更新特点如下:
H.266 多功能视频编码 (VVC) 编解码器支持
低复杂度增强视频编码 (LCEVC) 支持
Closed captions:H.264/H.265 提取器 / 插入器、cea708overlay、cea708mux、tttocea708 等
新的 hlscmafsink、hlssink3 和 hlsmultivariantsink;HLS/DASH 客户端和 dashsink 改进
新的 AWS 和 Speechmatics 转录、翻译和 TTS 服务元素以及 Translationbin
Splitmux lazy loading 和动态片段添加支持
Matroska:H.266 视频和旋转标签支持,定义延迟多路复用
MPEG-TS:支持 H.266、JPEG XS、AV1、VP9 编解码器和 SMPTE ST-2038 和 ID3 meta;mpegtslivesrc
ISO MP4:支持 H.266、Hap、Lagarith 无损编解码器;原始视频支持;旋转标签
SMPTE 2038 辅助数据流支持
JPEG XS 图像编解码器支持
Analytics:新的 TensorMeta;N-to-N 关系;Mtd 携带分段掩码
ONVIF 元数据提取器以及关系元之间的转换
新的 originalbuffer 元素可以在转换步骤后再次恢复缓冲区以进行分析
改进了 analytics API 的 Python 绑定
大量 Vulkan 集成和 Vulkan 视频解码器 / 编码器改进
OpenGL 集成改进,尤其是在 glcolorconvert、gldownload、glupload 中
Qt5/Qt6 QML GL sinks 现在支持从硬件解码器直接导入 DMABuf
CUDA:新合成器、Jetson NVMM 内存支持、stream-ordered allocator
NVCODEC AV1 视频编码器元素和 nvdsdewarp
新的 Direct3D12 集成支持库
新的 d3d12swapchainsink 和 d3d12deinterlace 元素以及用于零拷贝 IPC 的 D3D12 sink/source
Decklink HDR 支持 (PQ + HLG) 和帧调度增强
AJA capture source clock 处理和信号丢失恢复改进
RTP 和 RTSP:新的 rtpbin 同步模式、rtspsrc 中的客户端 MIKEY 支持
新的 Rust rtpbin2、rtprecv、rtpsend 以及许多新的 Rust RTP 负载程序和卸载程序
webrtcbin 支持基本回滚和其他改进
webrtcsink:支持更多编码器、SDP 混合以及内置 Web/signalling server
webrtcsrc/sink:支持未压缩的音频 / 视频以及 NTP 和 PTP clock signalling 和 synchronization
rtmp2:服务器身份验证改进,包括 Limelight CDN (llnw) 身份验证
新的基于 Microsoft WebView2 的 Web 浏览器源元素
GTK3 插件已获得 Windows 上对 OpenGL/WGL 的支持
许多 GTK4 paintable sink 改进
GstPlay:id-based stream selection 和 message API 改进
使用新的 dots tracer 和 viewer 在浏览器中实现 Real-time pipeline 可视化
新的跟踪器用于以 pcap 文件形式跟踪内存使用情况、pad push 时间和缓冲区流
VA hardware-acclerated H.266/VVC 解码器、VP8 和 JPEG 编码器、VP9/VP8 alpha decodebins
Video4Linux2 元素现在支持 DMA_DRM caps negotiation
V4L2 无状态解码器实现 AV1 和 VP9 的帧间分辨率变化
Editing services:支持反向播放和音频通道重新排序
基于 QUIC 的新元素,用于处理原始 QUIC 流、RTP-over-QUIC (RoQ) 和 WebTransport
Apple AAC 音频编码器和 Apple 音频解码器的多通道支持
cerbero:Python 绑定和自省支持;基于 WiX5 改进的 Windows 安装程序
大量新插件、功能、性能改进和错误修复
有关更多详细信息,可查看 GStreamer v1.26 发行说明。
项目主页:http://gstreamer.freedesktop.org/
该文章最后由 阿炯 于 2025-03-14 11:34:57 更新,目前是第 2 版。