|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
gstreamer 开发中,一般开发思路为:寻找命令行实现--命令行验证--将命令行集成到代码中---代码工程化。当然如果你要代码更优雅一点,可以用命令行用对应的 API 来实现。本节来总结一下 gstreamer 的常用使用过程。
/ K% s/ Z) N+ j" c 将配套资料通过 U 盘拷贝到开发板的根目录下,如下图所示。配套资料的路径在“iTOP-3399 开发板/02_iTOP-3399 开发板资料汇总(不含光盘容)/12_iTOP-3399 开发板音视频开发资料/测试资料”! Y, a( w4 R: R5 P) \' D# t6 w
9 t- N$ y; u# g, o( f% B- K# L A1.png
( I& P E# \7 _, y0 d6 E( s# S2 E+ B% d; J7 u! S9 O4 t. O* t' @
9 c* |* N6 p! L4 q7 o
. A0 ^; o, h7 Y$ ^* n. v7 F # S9 }7 S7 o' l: r0 R1 _" L
1 gst-inspect-1.0 测试1 ` y. }# E/ j3 _" i
gst-inspect 可以查看插件或者元素,输入以下命令查看所有元素# S0 n# [3 Y& b6 U) C/ p
gst-inspect-1.02 r8 Q2 v! Z$ q
$ ]2 Y! Q8 F2 h/ C# v+ A
2.png7 g$ Q3 Y: I0 t
: I( ~- _ e# P4 d
; z/ P* m+ c- d% l5 s8 D- N- R& A- F: x
6 I6 z$ e1 |& z2 z) l查看并过滤相关元素,输入以下命令,如下图所示:
0 O* D* t* w6 s2 ?& D* w8 J* o( }gst-inspect-1.0 |grep xxxx5 g; `$ e$ V, G' g# R
9 l k) e- a0 `+ y3.png$ P4 x! S K2 N) M7 a' R
: G* G, {2 p$ Y- o( b9 `% l, T, G% s
$ p- {1 s9 x% L" A3 K
. j1 X9 j" @8 e: B2 l9 f查看某一个元素,输入以下命令,如下图所示:
' M7 R; i+ p2 T! s2 O+ {gst-inspect-1.0 xxx* M9 ]- f* w# T* w2 L2 p
+ B. q4 l* Z, m3 v4.png# S" T$ X) R5 A. w
/ a" X* x* e# B8 P' ^' q' i0 s9 D
+ c1 S. h8 `1 b* A' g5 m
4 q0 V' z$ l! T8 R M' G 8 q& q+ j' s/ b( t
输入以下命令查看黑名单元素,通常某些插件的依赖库不存在,gstreamer 会将它列入黑名单,不可使用,通过该命可以追踪某些异常的插件。
4 l8 R4 h% }) N# agst-inspect-1.0 -b0 e4 m# V( J; m6 S- |/ m5 X' @- k
6 n% b# x( C- a3 q Z( y5.png
# F# B ~0 {/ {6 u! `8 E
# M7 C: H5 j* R' ~3 d3 M1 Z- ~$ w% S4 V' M6 }
& A7 A9 P) S' J' r5 s
& \) v5 G/ [# ]2 f6 U4 { G, ^' k 2 播放器工具 gst-play-1.0
$ ^8 l9 k5 s0 M( C1 ~% Y, ?如播放一个视频,输入以下命令:! }+ @: \- {- ] A6 D
gst-play-1.0 /video/1080p_30fps_h265.mp46 c7 T( d4 r" f7 v
$ `) j8 N$ C! f; R5 J
6.png/ B; V: @. ?3 s' l" n m
. z% f6 J" Q4 k5 q! k/ K1 W7 X; |
. p7 ?7 Q, j2 l* g
# e( f) T; M! Q0 I N
3 @6 W6 q( {/ P0 f2 m Z, I& _; A; @
; r' x- U1 B1 i0 d2 R7 M9 _
3 gstreamer 日志级别设置/ a0 F1 m0 Q3 }% R R
gst 的日志等级分为 none(0)error(1) warning(2) info(3) debug(4) log(5)。默认 gst 的日志等级为 1,即 error打印,出错时会打印。; ]2 V/ M: B: j+ h2 x
1)全局日志级别设置6 {' c% W7 X. X1 y( g9 h& \* ^ F
如果需要更高级别打印,修改环境变量 GST_DEBUG 即可。如需要 warning 级别打印,配置 export* b+ M: g( I0 ^0 G' E
GST_DEBUG=2 ,如图所示
" a0 e. t8 Y- }5 ?* c; } / v6 Z# Z) [, Z8 R1 C8 r3 t. {
7.png1 D$ g( b7 y2 @0 T m X& o* z" T
) o9 _' W3 W9 s% p' ~9 p# V7 n/ ~ w6 C* N p" m2 v
8 z5 h; `% u: |' @ a" v
! [& N. K2 e5 g: t+ v- U 2)某个插件日志级别设置
' T L! s6 k0 \6 r+ {& E( uset GST_DEBUG=GST_AUTOPLUG:5,GST_ELEMENT_*:4,d3dvideosink:3( A. n* w' R) W& z$ }: d) [9 ?& e+ j
即自动插件为 5,所有元素默认为 4,d3dvideosink 元素为 3。
; n: b& n: ]4 {! D3 ~3)日志打印函数4 |3 d) V4 Y7 y# j
日志打印函数 GST_ERROR(),GST_WARNING(),GST_INFO(),GST_LOG()和 GST_DEBUG()宏。它们就像 printf 一样可以接受一些参数并且它们是使用默认种类的9 h: [1 ^/ x# q
4)日志另存为文件,配置环境变量 GST_DEBUG_FILE=文件路径
9 z {$ x5 l3 g$ h, G- ^ 如:Set GST_DEBUG_FILE = C:\\test.log。日志就重定向到 C:\\test.log 文件里。
" M# r( u9 M2 a A5) GST_REGISTRY_UPDATE 环境变量用来查找插件是否更新,即是否重新扫描去更新 cache 内容,将这个环境变量的值设置成”no”,这样 gstreamer 框架在初始化的时候就不会检查 plugin 的更新,这样可以加速启动。输入以下命令:
/ m2 A5 Z Z7 USet GST_REGISTRY_UPDATE=”no”5 m/ A& A* g8 j {+ i# z
更多内容关注:北京迅为9 j& h/ x! F! a7 G- D
" v( k) Z3 E2 i( T$ r2 t/ D9 ]9 y/ k- q |
|