自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 GStreamer学习笔记(八)——基础教程7:多线程和Pad可用性

GStreamer是一个多线程框架。这意味着,在内部,它根据需要创建和销毁线程,例如,从应用程序线程解耦流。此外,插件也可以自由地为自己的处理创建线程,例如,视频解码器可以创建4个线程来充分利用4核CPU。此外,当构建管道时,应用程序可以显式指定分支(pipeline的一部分)在不同的线程上运行(例如,让音频和视频解码器同时执行)。这是使用queue元素完成的,其工作方式如下。sink pad只是对数据进行入队并返回控制。在另一个线程上,数据被从队列中取出并向下推送。

2024-01-17 20:15:52 1592

原创 GStreamer学习笔记(七)——基础教程6:媒体格式和pad能力

正如前面所示,Pads允许信息进入和离开元素。然后,Pad的Capabilities(简称Caps)指定了哪些信息可以通过Pad传输。例如,“分辨率为320x200像素,每秒30帧的RGB视频”,或“每采样音频16位,每秒44100采样5.1声道”,甚至是mp3或h264等压缩格式。Pads可以支持多种caps(例如,视频接收器可以支持不同类型的RGB或YUV格式的视频),caps可以指定为范围(例如,音频接收器可以支持每秒1到48000个采样率)。

2024-01-17 07:30:00 914

原创 GStreamer学习笔记(六)——基础教程5:GUI工具集成

我们将使用GTK+工具包构建一个媒体播放器,但是这些概念也适用于其他工具包,例如Qt。对GTK+有最起码的了解将有助于理解本教程。重点是告诉GStreamer将视频输出到我们选择的窗口。一个常见的问题是,GUI工具包通常只允许通过主线程(或应用程序)操作图形“widgets”,而GStreamer通常生成多个线程来处理不同的任务。从回调内部调用GTK+函数通常会失败,因为回调在调用线程中执行,而调用线程不必须是主线程。

2024-01-14 04:00:00 948 1

原创 GStreamer学习笔记(五)——基础教程4:时间管理

GstQuery是一种允许向element或pad查询信息的机制。在这个例子中,我们查询pipeline是否允许seek(一些源,比如实时流,不允许查找)。如果允许,那么,一旦电影播放了十秒钟,我们就使用seek跳到另一个位置。在前面的教程中,一旦我们设置并运行了pipeline,我们的main函数就会等待通过总线接收ERROR或EOS。这里,我们修改了这个函数,让它定期唤醒并查询pipeline中的流位置,这样我们就可以在屏幕上打印它。这类似于媒体播放器所做的,定期更新用户界面。

2024-01-13 17:23:33 820 1

原创 GStreamer学习笔记(四)——基础教程3:动态pipeline

正如你即将看到的,本教程中的pipeline在设置为播放状态之前并没有完全构建。这没问题。如果我们不采取进一步的行动,数据将到达pipeline的末端,pipeline将产生错误消息并停止。但我们将采取进一步行动……在这个例子中,我们正在打开一个多路复用(或muxed)的文件,也就是说,音频和视频一起存储在容器文件中。

2024-01-13 15:41:59 1644 1

原创 GStreamer学习笔记(三)——基础教程2:GStreamer概念

gst_bus_timed_pop_filtered()会在发生错误或者EOS的情况下返回,因此我们需要检查是哪一个情况,然后在屏幕上打印相应的信息(你的应用可能会承载更多的操作)。在本例中,一旦我们知道消息包含错误(通过使用GST_MESSAGE_TYPE()宏),我们就可以使用gst_message_parse_error(),它返回一个GLib GError错误结构和一个用于调试的字符串。bin是一种特殊的element,它包含其他的element,pipeline是一种特殊的bin。

2024-01-12 20:38:42 964 1

原创 GStreamer学习笔记(二)--HelloWold程序代码走读

使用gst_init初始化GStreamer通过gst_parse_launch()以文本描述的方式快速构建一个pipeline使用playbin创建一个自动播放的pipeline使用gst_element_set_state()通知GStreamer开始播放让GStreamer负责一切,使用gst_element_get_bus()和gst_bus_timed_pop_filtered()

2023-11-25 23:26:08 98

原创 GStreamer学习笔记-HelloWorld

官网介绍GStreamer是一个用于创建流媒体应用的强大通用框架。GStreamer框架的许多优点来自于她的模块化:GStreamer可以无缝地集成新的插件模块。但是模块化和功能强大伴随着非常大的复杂性,因此写新的应用不是那么容易的。

2023-11-25 21:49:30 194

原创 【小程序问题记录】ENOENT: no such file or directory, open ‘xxx/miniprogram/pages/logs/logs.wxss

问题背景:微信小程序的默认模版,删除logs目录之后报错。编辑-->清除编辑器缓存...,等待一会弹出清除结果,选择。解决方法:点击工具栏。

2023-11-03 23:12:05 290

原创 OpenHarmony代码下载编译流程记录

OpenHarmony代码下载编译流程

2022-09-06 22:49:34 2410 2

原创 Openharmony代码prebuild失败解决方法

Openharmony代码prebuild失败解决方法

2022-09-02 21:24:46 1028

GStreamer官方教程源码

GStreamer官网教程对应的示例源码

2024-01-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除