gstreamer 中那些gst-launch 命令怎么转换成c语言?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gstreamer 中那些gst-launch 命令怎么转换成c语言?相关的知识,希望对你有一定的参考价值。

参考技术A gst-launch
**
首先你要建一个pipeline,然后根据gst-launch后面的插件,建立相应的facotry就行了,类似这样
source
=
gst_element_factory_make("filesrc",
"filesrc");
return_val_if_fail(source,FALSE);
g_print("Good
source
Element\n");
GstElement
*rtpmp2tdepay
=
gst_element_factory_make("rtpvp8depay",NULL);
if(!rtpmp2tdepay)

g_print("rtpmp2tdepay
==
NULL\n");

最后到分流,建立相应的pad,最后设置state

gstreamer应用

1.播放本地文件
gst-launch-1.0 playbin uri=file:///opt/niliu.mp4
2.打dot图
export GST_DEBUG_DUMP_DOT_DIR=/opt/gstreamer/
dot -Tpng -o 0.00.02.484080226-gst-launch.PAUSED_PLAYING.png 0.00.02.484080226-gst-launch.PAUSED_PLAYING.dot
应用中可以用下面宏
GST_DEBUG_BIN_TO_DOT_FILE()
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()
比如:
GstElement *pipeline = gst_pipeline_new (NULL);
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN (pipeline),GST_DEBUG_GRAPH_SHOW_ALL,“gst-graphic”);
3.根据dot
gst-launch-1.0 filesrc location="/opt/niliu.mp4" ! typefind ! qtdemux ! video/x-h264 ! avdec_h264 ! videoconvert ! xvimagesink

3.视频裁剪
gst-launch-1.0 filesrc location="/opt/niliu.mp4" ! typefind ! qtdemux ! video/x-h264 ! avdec_h264 ! videoconvert ! tee name=tee tee. ! queue ! videobox right=960 bottom=540 ! autovideosink tee. ! queue ! videobox left=960 bottom=540 ! autovideosink tee. ! queue ! videobox top=540 ! autovideosink

4.推rtp流
server:
gst-launch-1.0 filesrc location="/opt/niliu.mp4" ! typefind ! qtdemux ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=localhost port=5000 async=false

recver:
gst-launch-1.0 udpsrc caps=‘application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP2T, payload=(int)33’ port=5000 ! rtpjitterbuffer ! rtpmp2tdepay ! tsdemux ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
注意:h264parse在这里是为了把stream-format=avc转换为stream-format=byte-stream

5.推图片
gst-launch-1.0 filesrc location=/home/hidoo/colorbar.png ! pngdec ! videoconvert ! imagefreeze ! autovideosink
qt-gstreamer:
qt使用gstreamer有三种方式
1.使用qmultimedia(内部采用playbin)
编译qmultimedia
进入qt顶层
./configure -qt-xcb -gstreamer 1.0
-qt-xcb是为了使用qt自带的xcb避免xcb环境问题导致出错
进入qtmultimedia
qmake && make

2.使用qmlglsink插件,可能在gst-plugins-bad、gst-plugins-base、gst-plugins-good
下载gst-plugins-bad源码
./configure
查看config.log中QT相关,看是否有result: yes,若为no看错误提示。
比如报缺Qt5Qml.pc 则安装sudo apt-get install qtdeclarative5-dev
最新的gst-plugins-good(因为后来的qmlglsink被移动到gst-plugins-good)源码git中有qmlglsink的demo,可直接用qtcreator编译,但是并不见界面内容,通过export GST_DEBUG=3 发现如下错误:
qtglutility gstqtglutility.cc:145:gst_qt_get_gl_wrapcontext: Unknown platform
进入源码通过ctags发现没定义HAVE_QT_X11,该宏是在configure阶段检测定义,查看config.log发现如下错:
No package ‘Qt5X11Extras’ found
sudo apt-get install libqt5x11extras5-dev
pkg-config --list-all |grep Qt5X11Extras检查OK
3.使用qtgstreamer模块
————————————————
版权声明:本文为CSDN博主「__一缕阳光__」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zxr1521904712/article/details/81328640

以上是关于gstreamer 中那些gst-launch 命令怎么转换成c语言?的主要内容,如果未能解决你的问题,请参考以下文章

使用 gstreamer 和 gst-launch 循环播放视频?

gstreamer的gst-inspect 和gst-launch

Gstreamer Gstreamer中通过UDP(RTP)远程播放MP3

gstreamer应用

英伟达jetson盒子gstreamer gst-launch-1.0 录制rtsp为mp4不能播放问题(加-e)(EOS on shutdown enabled)

英伟达jetson盒子gstreamer gst-launch-1.0 录制rtsp为mp4不能播放问题(加-e)(EOS on shutdown enabled)