一、TI在gstreamer体系下增加的插件
目录/opt/LeopardBoardDM365sdkEVAL2011Q2/proprietary/dvsdk-4_02_00_06/dvsdk/gstreamer-ti_svnr919/src
x(代表c,h)
gstticodecplugin.c 主要是注册TI提供的插件
1、插件代码:
音频解码插件
gsttiauddec1.x
音频编码插件
gsttiaudenc1.x
色彩空间转换加速器插件
gsttic6xcolorspace.x
显示插件
gsttidisplaysink2.x
用来捕获管道性能的数据的插件
gsttidmaiperf.x
video输出插件
gsttidmaivideosink.x
JPEG图像解码插件
gsttiimgdec1.x
JPEG图像编码插件
gsttiimgenc1.x
解码器插件TIViddec2
gsttividdec2.x
编码器插件TIVidenc1
gsttividdenc1.x
视频帧缩放插件
gsttividresize.x
2、一些全局定义:
定义:使用DMAI实现一个循环缓存区
gstticircbuffer.x
定义:提供一个查询平台提供到
编解码器信息到函数体
gstticodecs.x
定义:包含所有elements通用函数结构gstticommonutils.x
定义:实现把一个已经存在到DMAI缓存区
放到gstreamer缓存区,
以便给pipeline使用
gsttidmaibuffertransport.x
定义一些用来解码的函数和参数信息
gsttiquicktime_xxxx.x
3、参数定义:
特定型号芯片的配置参数,
包括插件默认的参数,
需要链接的文件的路径等
gstticodecplugin_dmxxx.cfg
xxxx平台编解码器的信息(名称)
gstticodecs_xxxx.c
为TIVidenc插件准备GstBuffer
的插件,主要是把内存复制到
连续的物理缓存
gsttiprepencbuf.x
二、gstreamer体系的代码
目录/opt/LeopardBoardDM365sdkEVAL2011Q2/proprietary/gst-dmai-plugins/src/src
x(代表c,h)
注册插件、提供主要函数
gstticodecplugin
1、插件
dmaiaccel插件,
把gst缓存转换成dmai缓存(可能时)
或者仅仅复制数据到dmai缓存
gsttidmaiaccel.x
dmaiperf插件,
用来捕获管道性能的数据的插件
gsttidmaiperf.x
通用的缩放插件
gsttidmairesizer.x
dmai视频输出接口插件
gsttidmaivideosink.x
priority插件,
修改了线程的优先级和调度
gsttipriority.x
2、一些全局定义:
特定型号芯片的配置参数,
包括插件默认的参数,
需要链接的文件的路径等
dmxxx.cfg
定义:各种分辨率,视频格式的支持能力
cap.x
定义:音频编解码器到调用接口
gsttiauddec.x
定义:包含所有elements通用的
函数、结构
gstticommonutils.x
定义:实现把一个已经存在到DMAI缓存区
放到gstreamer缓存区,
以便给pipeline使用
gsttidmaibuffertransport.x
定义:DMAI基础上的通用解码器插件
gsttidmaidec.x
定义:DMAI基础上的通用编码器插件
gsttidmaienc.x
3、参数定义:
提供通用的图像解码器接口
gsttiimgdec.x
提供通用的图像编码器接口
gsttiimgenc.x
解析xxx文件格式的文件
gsttisupport_xxx.x
提供通用的视频解码器接口
gsttividdec.x
提供通用的视频编码器接口
gsttividenc.x
提供给所有插件使用的各分辨率参数
ittiam_caps.x
提供通用编解码器属性
ittiam_encoders.x
提供大部分TI编解码器属性
ti_encoders.x
三、目录/opt/LeopardBoardDM365sdkEVAL2011Q2/fs/apps
在这个目录,包含了gstreamer的主框架,和基本插件。
四、各插件参数
1、v4l2src参数:
默认使用的输入设备定义为:#define DEFAULT_PROP_DEVICE "/dev/video0"
queue-size:streaming模式下驱动中缓存到数量,最小1,最大16,默认size=2,
always-copy:缓存区是否可以直接被mmap使用,默认true
input-src:选择输入源,默认留空,好像也不可以设置
chain-ipipe:使用ipipe工具链,会调用resizer,previewer驱动,默认true
force-720p-30:强制驱动工作在720p-30fps模式,默认false,leopard不支持此设置
num-buffers:输出缓存区的数量,录像时用到,决定录像文件的大小和时间长度。
2、dmaiaccel插件,
把gst缓存转换成dmai缓存(如果有必要),或者仅仅复制数据到dmai缓存,应该所用来加快速度的
调用v4l2src之后,需要设置输出参数
3、dmaiperf插件,
提升管道的性能,数据处理速度。
engine-name:引擎名字,比如decode,encode
print-arm-load:打印cpu加载信息,默认false
4、TIDmaiVideoSink插件,
视频显示输出,
sync:时钟到同步标志
accelFrameCopy:使用硬件加速,拷贝视频帧,默认true
videoOutput:输出设备,SVIDEO,COMPOSITE,COMPONENT,DVI,LCD,AUTO
videoStd:视频格式,D1_NTSC,D1_PAL, 480P, 576P, 720P_60, 720P_50, 等
enable-last-buffer:使能最后一帧特性
5、dmaienc_h264插件
实现对数据进行h264格式的编码
encodingpreset:使用编码预置算法到类型,
0:默认,1:高质量,2:高速度,3:使用外部定义的参数
ratecontrol:使用速率控制算法,
1:恒定比特率CBR,适用视频会议
2:可变比特率,适合存储
3:通过非实时应用切换使用两种控制
4:不使用速率控制算法
5:用户定义的外部参数
intraframeinterval:内部连续的两帧之间的间隔
0:仅第一个I帧跟随所有P帧
1:无内部帧
2:连续IP序列(如果无B帧)
N:(n-1) P序列在I帧之间
idrinterval:两个连续的IDR帧间的间隔,0--2147483647,默认0
targetbitrate:目标比特率,1000-2000 0000,默认600 0000
outputBufferSize:输出缓存区大小,0 - 2147483647 Default: 0
6、qtmux多路复用器
7、queue简单的数据队列
8、rtph264pay
五、实现一些功能的常用
1、canera(mt9p031)输入,经过dmai缓存,加速,composite输出D1_NTSC
gst-launch -e v4l2src chain-ipipe=true always-copy=false \
! dmaiaccel \
! video/x-raw-yuv,format=\(fourcc\)NV12, width=640, height=480, framerate=\(fraction\)30/1 \
!dmaiperf \
! TIDmaiVideoSink sync=false accelFrameCopy=false videoOutput=composite videoStd=D1_NTSC sync=false enable-last-buffer=false&
2、canera(mt9p031)输入,经过dmai缓存,加速,h264编码,保存到文件,mp4格式
gst-launch -e v4l2src always-copy=true chain-ipipe=true num-buffers=200 \
! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480' \
! dmaiaccel \
! dmaienc_h264 encodingpreset=2 ratecontrol=2 intraframeinterval=23 idrinterval=46 targetbitrate=6000000 \
! dmaiperf \
! qtmux \
! filesink location=test01.mp4 sync=false enable-last-buffer=false&
3、camera输入,打包成ts流,udp方式发送到网络
gst-launch -e v4l2src chain-ipipe=true always-copy=FALSE \
! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480,framerate=(fraction)30/1' \
! queue \
! dmaiaccel \
! dmaienc_h264 encodingpreset=2 targetbitrate=600000 maxbitrate=5000000 intraframeinterval=25 \
outputBufferSize=5000000 ratecontrol=2 headers=true \
! dmaiperf print-arm-load=true \
! mpegtsmux \
! udpsink ts-offset = 100000000 port=1234 host=227.1.1.1 enable-last-buffer=false sync=true &
注:参数说明
1)
width
640
800
1024
1280
1280
1600
1920
2048
2176
height
480
600
768
720
1024
1200
1080
1536
1944
framerate
(30或60)/1
65/1
47/1
(45或23)/1
42/1
31/1
31/1
21/1
14/1
以上参数要一一对应
2)ts-offset参数与udp输出的fps和cpu使用率成反比
3)ratecontrol速率控制算法也影响udp输出的fps和cpu使用率
4)targetbitrate增大也会增加cpu到使用率
分享到:
相关推荐
在实际开发过程中,我采用一种循序渐进的设计方法在Linux平台下实现基于GStreamer框架的smooth streaming通信协议的插件开发:首先,实现基本的网络通信协议开发;然后,实现smooth streaming协议通信;最后,分别...
本播放器是在Linux操作系统下开发的基于Gstreamer框架的流媒体播放器,现阶段仅仅实现了基本功能,如:播放,快进,快退,暂停,停止。
GStreamer框架
软件使用基于流水线方式的多媒体框架GStreamer技术,实现了视频采集、H.264压缩与网络传输的功能;最后通过服务器将视频显示出来,服务器在Linux操作系统和Windows XP操作系统下都可以将摄像头采集的视频信息播放...
This repository contains a collection of GStreamer* elements to enable CNN model based video analytics capabilities (such as object detection, classification, recognition) in GStreamer* framework.
Linux平台C语言利用GStreamer实现mp4格式视频播放代码,包括管道配置,连接,以及动态连接element的pad。难点:demux控件通过回调方式进行音视频的分流,连接解码器、sink输出。
gstreamer源码
它以基于GStreamer的低级技术实现,以优化资源消耗。它提供以下功能:网络流协议,包括HTTP,RTP和WebRTC。支持媒体混合和媒体路由/调度的组通信(MCU 和 SFU 功能)。 对计算视觉和增强现实过滤器的通用支持。媒体...
基于 qt的gstreamer 应用,实现视频播放,外国人写的linux系统,需要本机安装 gstreamer 插件
GStreamer是一个通用的跨平台的流媒体应用程序框架,基于GObject,以C语言写成。... GStreamer框架是基于插件(plugin)和管道(pipeline)的体系结构,框架中所有功能模块都是可插拔的组件,可随意安装到任意管道上
使用Qt5.9.1开发的一个视频播放器,底层使用gstreamer多媒体框架,支持拖动进度,调节音量,暂停,调节音量大小
本手册旨在帮助你了解GStreamer的框架0.10.9.1版)以便你能够开发新的插件来扩展当前的功能。本手册通过用C语言开发一个示例插件──一个音频过滤器──来定位大多数问题。然而,接下来的部分会通过编写其它类型的...
这是基于Kaldi工具包和GStreamer框架并以Python实现的实时全双工实时语音识别服务器。 广告 塔林工业大学正在寻找一名从事语音识别的博士生,重点是轻度代码转换的语音(例如,芬兰语包含很多英语技术术语)。 。 ...
运用gstreamer可以实现电脑截屏功能,大家可以更改参数,截取指定位置的屏幕。
基于gstreamer的MP3 播放器的开发教程。
详情见博客https://blog.csdn.net/qq_41563600/article/details/121343927
用QT做前端界面,调用 gstreamer的一些接口,写的DVR,用于视频存贮
gstreamer1+QT实现的 播放器 可以直接播放网路URL,实现基本的播放控制
Linux下基于Gstreamer的流媒体播放器设计.pdf
GStreamer  是一个非常强大而且通用的流媒体应用程序框架。  GStreamer所具备的很多优点来源于其框架的模块化:  GStreamer能够无缝的合并新的插件。 但是, 由于追求模块化和高效率, 使得GStreamer在整个...