
Gstreamer实战进阶系列
Gstreamer在项目中纯实战进阶,Gstreamer框架分析比较少,分享给想在多媒体进阶的朋友。
优惠券已抵扣
余额抵扣
还需支付
¥299.90
¥399.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Gstreamer与ffmpeg之mp4转h264对比实验(三十)
【代码】Gstreamer与ffmpeg之mp4转h264对比(三十)原创 2022-11-12 00:15:25 · 1909 阅读 · 0 评论 -
Gstreamer之mp4mux:Buffer has no PTS解决(二十九)
【代码】Gstreamer之mp4mux:Buffer has no PTS解决(二十九)原创 2022-11-11 22:11:19 · 943 阅读 · 0 评论 -
Gstreamer之QT程序无法找到Gstreamer1.0 pulseaudio插件(二十八)
原因:一般情况下,通过apt install gstreamer时,默认安装目录为/usr/local/lib/gstreamer-1.0目录.但是其实不是,所以要指定下gstreamer插件路径:# export GST_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/gstreamer-1.0原创 2021-12-06 20:22:05 · 1514 阅读 · 0 评论 -
Gstreamer之gst_omx_video_enc_set_format(二十七)
1.gst-omx/omx/gstomxvideoenc.c//定义一:static gboolean gst_omx_video_enc_set_format (GstVideoEncoder * encoder,GstVideoCodecState * state);<1>.static void gst_omx_video_enc_class_init (GstOMXVideoEncClass * klass){ GObjectClass *gobject_class = G.原创 2021-04-22 19:37:10 · 713 阅读 · 0 评论 -
Gstreamer1.18.4编译(二十六)
1.gstreamer1.18.4和ffmpeg4.3.2下载https://gstreamer.freedesktop.org/src2.gstreamer1.18.4编译顺序gstreamer-1.18.4gst-plugins-base-1.18.4gst-plugins-good-1.18.4gst-plugins-bad-1.18.4gst-plugins-ugly-1.18.4gst-rtsp-server-1.18.4//通用编译+安装命令# meson buil...原创 2021-04-07 21:01:52 · 852 阅读 · 0 评论 -
Gstreamer加载插件原理(二十五)
一、栗子#include <gst/gst.h>int main (int argc, char *argv[]){ GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Build the pipeline */ pipeline = gst_parse_launch ("pla原创 2021-04-07 16:14:39 · 686 阅读 · 0 评论 -
Gstreamer之dump h265/h264(二十四)
1.dump I帧gst-omx/omx/gstomxh265enc.c2.dump完整h265/h264帧gst-omx/omx/gstomxvideoenc.cstatic GstFlowReturn gst_omx_video_enc_handle_output_frame ( GstOMXVideoEnc * self, GstOMXPort * port, GstOMXBuffer * buf, GstVideoCodecFrame * frame){ if .原创 2021-03-18 18:44:25 · 1559 阅读 · 0 评论 -
Gstreamer之audio转码(二十三)
1.从pulsesrc转码vorbisenc编码(Ogg封装格式)# gst-launch-1.0 pulsesrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=dump.ogg2.从pulsesrc转码lamemp3enc编码(libav MP3封装格式(MPEG audio layer 3))# gst-launch-1.0 pulsesrc ! audioconvert ! lamemp3enc ! avmux_mp3 ! .原创 2021-03-26 14:54:08 · 771 阅读 · 0 评论 -
Gstreamer之gst-plugin-bad交叉编译集成x265(二十二)
注意:Gsteamer版本为1.16.20.下载arm交叉编译环境(自行配置)1.下载x265 code# git clone https://github.com/videolan/x265.git 2.编译x265源码# cd x265-master/build/arm-linux<1>.修改emacs crosscompile.cmake# modified begin# specify the cross compilerset(CMAKE_C_COMPILER .原创 2021-03-11 16:22:40 · 1026 阅读 · 0 评论 -
Gstreamer之gst_element_set_state (pipeline, GST_STATE_PLAYING)播放视频流程(二十一)
1.gstreamer/tools/gst-launch.cGstElement * pipelinegst_element_set_state (pipeline, GST_STATE_PLAYING);2.gstreamer/gst/gstelement.c<1>.static void gst_element_class_init (GstElementClass * klass){ klass->set_state = GST_DEBUG_FUNCPTR (gs.原创 2021-03-08 16:58:51 · 2051 阅读 · 1 评论 -
Gstreamer之重置PTS与DTS流程(二十)
一.重置PTS和DTS是在每次封装mp4时初始化里调用的reset.1.isomp4-plugin.c<1>.GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, isomp4, "ISO base media file format support (mp4, 3gpp, qt, mj2)", plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST.原创 2021-03-08 11:48:30 · 885 阅读 · 0 评论 -
Gstreamer之pts/dts(十九)
1.在Gstreamer下通过pipeline中传递的是GstBuffer,GstBuffer里可以在每帧中设置PTS,也可以获取出每帧的DTS.gst-plugins-good/gst/isomp4/gstqtmux.c<1>.static GstFlowReturn gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf){ GstBuffer *last_buf = NULL; l.原创 2021-03-08 11:25:50 · 1102 阅读 · 0 评论 -
Gstreamer之GstBuffer(十八)
1.GstBuffer结构体定义 gstreamer/gstreamer/gst/gstbuffer.htypedef struct _GstBuffer GstBuffer;/** * GstBuffer: * @mini_object: the parent structure * @pool: pointer to the pool owner of the buffer * @pts: presentation timestamp of the buffer, can be ..原创 2021-03-06 18:24:17 · 1659 阅读 · 1 评论 -
Gstreamer之gst_buffer_map()用法(十七)
一.首先看gst_buffer_map()定义/** * gst_buffer_map: * @buffer: a #GstBuffer. * @info: (out): info about the mapping * @flags: flags for the mapping * * This function fills @info with the #GstMapInfo of all merged memory * blocks in @buffer. * * @flags .原创 2021-03-02 10:26:58 · 2704 阅读 · 0 评论 -
Gstreamer之跨平台element(十六)
1.Androideglglessink视频sink是基于OpenGLES和EGLopenslessink音频sink基于OpenSL ESandroidmediaandroid.media.MediaCodec支持在设备侧编解码包括硬件编解码,Android4.1以后支持。2.Linuxximagesink标准基于X11视频sink,支持缩放需借助videoscale element。xvimagesink基于X11系统的视频sink,支持在GPU上进行高.原创 2020-12-29 23:59:13 · 422 阅读 · 0 评论 -
Gstreamer离线版官方文档(十五)
鉴于Gstreamer官网访问比较缓慢,构建一个本地离线官方文档,方便学习查阅。1.配置编译环境# sudo apt instll python3-dev libxml2-dev libxslt1-dev cmake libyaml-dev libclang-dev llvm-dev libglib2.0-dev libjson-glib-dev flex# pip3 install hotdoc2.下载Gstreamer Doc# git clone https://github.co.原创 2020-12-29 23:33:12 · 599 阅读 · 0 评论 -
Gstreamer播放videotestsrc流程(十四)
***************************************************************************************0.测试demo# gst-launch-1.0 videotestsrc pattern=snow ! videoconvert ! autovideosink//Or//通过glib2的g_object_set设置属性g_object_set(G_OBJECT(data_->videoparse), "patte.原创 2020-11-14 20:05:05 · 1336 阅读 · 1 评论 -
Gstreamer调用pulseaudio播放流程(十三)
一、pulseaudio音乐播放流程***************************************************************************************open("test.wav", O_RDONLY));pa_simple_new(NULL, argv[0], PA_STREAM_PLAYBACK, NULL, "playback", &ss, NULL, NULL, &error));pa_simple_write(s.原创 2020-11-13 22:20:53 · 1294 阅读 · 0 评论 -
Gstreamer应用g_signal_new/g_signal_connect/g_signal_emit总结(十二)
1.注册信号:g_signal_new()guint g_signal_new (const gchar *signal_name, GType itype, GSignalFlags signal_flags, guint class_offset, GSignalAccumulator accumulator, gpointer accu_data, GSignalC原创 2020-11-11 20:57:53 · 1767 阅读 · 0 评论 -
Gstreamer之No package ‘gstreamer-1.0‘ found解决(十一)
# sudo aptitude install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev原创 2020-11-10 16:57:54 · 5053 阅读 · 0 评论 -
Gstreamer之可变长参数实现(十)
1.计数实现方式//test02.c#include <stdio.h>#include <stdlib.h>#include <stdarg.h>void test(int count, ...){ va_list args; char *buf; va_start(args, count); while(count--){ buf = va_arg(args, char *); printf("buf = %s\n.原创 2020-11-10 15:59:01 · 341 阅读 · 0 评论 -
Gstreamer 搭建RTSP服务器(九)
基于Gstreamer1.x搭建Rtsp Server, gst-rtsp-server不是以plugin的形式存在,需要下载源码编译。0.安装依赖包# sudo apt-get install gtk-doc-tools libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav g.原创 2020-09-30 22:53:03 · 2995 阅读 · 0 评论 -
GStreamer1.0中no element “ffmpegcolorspace”报错解决(八)
解决方案:将ffmpegcolorspace替换为:videoconvert注意:videoconvert:用于颜色转换的插件 转换多种颜色格式的过滤器,摄像头设备视频数据通常使用YUV颜色格式,而显示器通常使用RGB颜色格式。...原创 2020-09-19 16:24:11 · 1469 阅读 · 0 评论 -
Gstreamer之video转码(七)
1.操作v4l2src源camera预览//查询/dev/video0分辨率# v4l2-ctl -d /dev/video0 --all //预览摄像头# gst-launch-1.0 v4l2src ! video/x-raw,format=YUY2,width=640,height=480 ! videoconvert ! xvimagesink# gst-launch-1.0 v4l2src ! video/x-raw,format=YUY2,width=640,height=480 .原创 2020-09-19 16:10:14 · 1748 阅读 · 0 评论 -
Ubuntu18.04之Gstreamer1.18源码编译(六)
# apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.原创 2020-08-05 18:31:31 · 6597 阅读 · 0 评论 -
Gstreamer调试命令(五)
1.Gstreamer Log等级GST_DEBUG="*:1" //ERRORGST_DEBUG="*:2" //WARNGST_DEBUG="*:3" //INFOGST_DEBUG="*:4" //DEBUGGST_DEBUG="*:5" //LOG//可以添加查看某个文件的log# GST_DEBUG="gstregistry:,3" gst-launch-0.10 playbin2 uri=file:///data/developer/guomei.mp4# GST_DEBUG.原创 2020-08-03 18:41:21 · 751 阅读 · 0 评论 -
GStreamer架构设计篇(四)
1、GStreamer是什么?众所周知,Microsoft's Windows和Apple's MacOS对多媒体设备、多媒体创作、播放和实时处理等方面都有很好的支持,而Linux对多媒体应用一直略显不足,所以为了解决Linux上对多媒体方面的支持,才引进GStreamer。GStreamer是一个通用的跨平台的流媒体应用程序框架,基于GObject,以C语言写成。 GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流,因此任意一种流媒体应用都可以支持,如:MeidaPlayer、翻译 2020-07-21 17:38:06 · 1086 阅读 · 0 评论 -
Gstreamer衬垫(pad)支持的媒体类型(三)
1.audio裸流:GST_STATIC_CAPS( "audio/x-raw, " "format = (string)S16LE, " "rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, " "channels = (int){1,2};")2.audio-mp3:GST_STATIC_CAPS( "audio/mpeg, " "mpegver.原创 2020-07-21 15:50:20 · 650 阅读 · 0 评论 -
GStreamer入门概念(二)
2.1.1. OverviewGStreamer是一个多媒体框架,它可以允许你轻易地创建、编辑与播放多媒体文件,这是 通过创建带有很多特殊的多媒体元素的管道来完成的。2.1.2. 管道-pipelineGStreamer的工作方式非常简单,你只需创建一个包含很多元素的管道,这与Linux命令行 的管道非常类似,例如,一般命令行的管道是这样的:foo@bar:~$ ps ax | grep "apache" |wc -l这个命令首先捕获一个进程列表然后返回名字包含 “apache” 的原创 2020-06-24 17:27:26 · 761 阅读 · 0 评论 -
Gstreamer入门之Helloworld(一)
# sudo apt-get install libgstreamer*2.demo.c#include <gst/gst.h>int main(int argc, char *argv[]) { GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Build the pipeli.原创 2020-06-24 16:41:49 · 998 阅读 · 0 评论