自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (5)
  • 收藏
  • 关注

原创 OBS-RTMP推流

OBS-RTMP推流1、OBSBasic::StartStreaming() //调用函数 outputHandler->SetupStreaming(service) outputHandler->StartStreaming(service)outputHandler是指SimpleOutput或者AdvancedOutput,这两者都继承自BasicOutputHandler。具体使用哪一个,由用户在 设置->输出->输出模式中配置。Advan

2022-01-25 10:41:59 5429 2

原创 分布式一致性算法raft动画演示

http://thesecretlivesofdata.com/raft/演示的非常容易理解

2021-08-05 20:20:19 223

原创 Linux 监控程序资源使用记录

每隔两秒记录一次进程的资源使用#!/bin/shlogFile="useRes.log"appName=$1if [ -e "$logFile" ]; then rm "$logFile"fitouch "$logFile"while truedo useinfo=`ps aux | grep -v "grep" | grep -E "${appName}$" | awk 'BEGIN{FS=" "} { now=strftime("%m/%d/%y %T").

2021-07-26 15:51:36 315

原创 Qt + Gstreamer 实现视频播放功能

简介Qt 是跨平台C++图形用户界面应用程序开发框架。GStreamer是一个用于构造媒体处理组件图的库。它支持的应用程序范围从简单的Ogg/Vorbis 播放, audio/video 流化到复杂的 audio(混音) 和 video (非线性编辑) 处理。...

2021-07-24 16:47:57 4319 18

翻译 gst-launch-1.0

gst-launch-1.0信息此内容主要来自 gst-launch-1.0 工具的 Linux 手册页。 因此,它在路径规范和插件名称方面非常以 Linux 为中心。 请耐心等待它被重写为更通用。名称gst-launch-1.0 - 构建并运行 GStreamer pipeline概要gst-launch-1.0 [OPTIONS]PIPELINE-DESCRIPTION 描述gst-launch-1.0 是一个构建和运行基本 GStreamer 管道的工具。在最简单.

2021-07-23 10:38:19 3061

翻译 Gstreamer- Debugging tools

Debugging tools目标有时事情不会按预期进行,并且从总线检索到的错误消息(如果有)只是没有提供足够的信息。 幸运的是,GStreamer 附带了大量调试信息,这些信息通常会暗示问题所在。 本教程显示:如何从 GStreamer 获取更多调试信息。 如何将自己的调试信息打印到 GStreamer 日志中。 如何获取pipeline graph打印调试信息调试日志GStreamer 及其插件充满了调试痕迹,即代码中特别感兴趣的一条信息被打印到控制台的地方,以及时间戳、进程、

2021-07-22 23:06:57 444

翻译 GStreamer tools

GStreamer tools目标GStreamer附带了从方便的到绝对必要的一组工具。在本教程中没有代码,只是坐下来放松,我们将教你:如何从命令行构建和运行 GStreamer pipeline,完全不使用 C! 如何找出可用的 GStreamer element及其capabilities。 如何发现媒体文件的内部结构。介绍这些工具位于 GStreamer 二进制文件的 bin 目录中。你需要移动到这个目录来执行它们,因为它没有添加到系统的 PATH 环境变量中(以避免过度污染)。

2021-07-22 22:26:14 327

原创 使用Gstreamer 播放ts over udp组播流

RT系统:Ubuntu 16.04组播地址为:udp://239.254.33.34:3334gst-launch-1.0 -vv udpsrc uri=udp://239.254.33.34:3334 caps="video/mpegts" ! queue2 use-buffering=true max-size-buffers=1000 ! tsparse ! decodebin ! videoconvert ! videoscale ! xvimagesinkqueue2 作为缓冲

2021-07-20 18:26:12 1278 2

翻译 Gstreamer- Source elements

Source elementssource element是向pipeline提供数据的element。它通常没有任何 sink(输入)pad。典型的source element包括:file readers network elements (live or not) capture elements (video/audio/…) generators (signals/video/audio/…)实时源当一个source具有以下属性时,它被称为实时源:暂时停止从

2021-07-20 13:01:34 254

翻译 Gstreamer- QoS

服务质量服务质量是关于测量和调整pipeline的实时性能。实时性能总是相对于pipeline时钟进行度量,并且通常发生在sink与时钟同步缓冲区时。测量会导致QOS事件,这些事件旨在调整一个或多个上游element中的数据速率。可进行两种调整:基于sinks的最新观察结果的短期“紧急”修正。 基于sinks中观察到的趋势进行的长期速率修正。应用程序也可以人为地在同步缓冲区之间引入延迟,这称为节流。例如,它可以用来降低帧率。服务质量问题的来源CPU负载高 网络问题 其他资

2021-07-20 10:42:13 1021

翻译 Gstreamer - 位置跟踪和定位

Position tracking and seeking到目前为止,我们已经了解了如何创建pipeline来进行媒体处理以及如何使其运行。大多数应用程序开发人员会对向用户提供有关媒体进度的反馈感兴趣。例如,媒体播放器会想要显示一个显示歌曲进度的滑块,通常还有一个指示流长度的标签。转码应用程序需要显示任务完成百分比的进度条。 GStreamer 内置支持使用称为querying的概念来完成所有这些工作。由于seeking非常相似,因此也将在此处讨论。seeking是使用事件的概念来完成的。查询...

2021-07-12 14:23:50 820

翻译 Gstreamer - 接口

接口将element当做作GObject 展示了 将 GObject 属性的使用作为应用程序和element交互的一种简单方式。这个方法可以用于简单的getter和setter,但无法用于任何更复杂的操作。对于更复杂的用例,GStreamer 使用基于 GObject GTypeInterface 类型的接口。这篇文章是介绍性的,不包括源代码示例。请查看 API 参考以获取更多详细信息。URI 处理程序接口到目前为止,在我们的示例中,我们仅使用“filesrc” element展示了对本地文

2021-07-12 14:08:37 531

翻译 Gstreamer - 自动插件

自动插件在您的第一个应用程序中,您已经学会了为 Ogg/Vorbis 文件构建一个简单的媒体播放器。通过使用替代element,您可以为其他媒体类型构建媒体播放器,例如 Ogg/Speex、MP3 甚至视频格式。但是,您更愿意构建一个应用程序,该应用程序可以自动检测流的媒体类型,并通过查看系统中的所有可用element来自动生成可能的最佳pipeline。这个过程称为自动插件,GStreamer 包含高质量的自动插件器。如果您正在寻找自动插件程序,请不要继续阅读并转到<播放组件>。本章将解释

2021-07-12 14:03:44 507

翻译 Gstreamer- pad(取消)激活

pad(取消)激活激活当改变状态时,一个 bin 会以 sink-to-source 的顺序在它的所有子element上设置状态。当element经历 READY→PAUSED 转换时,它们的pad被激活以准备数据流。一些pad会启动任务来驱动数据流。一个element激活它的 pads,从 sourcepads 到 sinkpads。这是为了确保当 sinkpads 被激活并准备好接收数据时,sourcepads 已经处于活动状态以向下游传递数据。可以以两种模式之一激活pad,PUSH 和 PUL

2021-07-08 12:00:17 313

翻译 Gstreamer- 实时源(Live sources)

实时源实时源(live source )是不能在不丢失数据的情况下任意暂停的source。实时源(例如录制音频或视频的element)需要以特殊方式处理。对于这些设备,在 PAUSED 状态下启动数据流是没有意义的,因为用户可能会在从 PAUSED 到 PLAYING 之间等待很长时间,从而使之前录制的缓冲区变得无关紧要。因此,实时源仅在 PLAYING 状态下生成缓冲区。这对等待缓冲区完成预卷状态的sink有影响,因为这样的缓冲区可能永远不会到达。当进入 PAUSED 状态时,实时源返回 NO_

2021-07-07 23:43:08 662

翻译 Gstreamer- 事件(Events)

事件事件是与缓冲区数据流并行传递的对象,以通知element各种事件。使用事件功能在打击垫上接收事件。一些事件应该与数据流交错,因此它们需要采用 STREAM_LOCK,而另一些则不需要。存在不同类型的事件来实现各种功能。GST_EVENT_FLUSH_START:数据将被丢弃GST_EVENT_FLUSH_STOP:再次允许数据GST_EVENT_CAPS:关于以下缓冲区的格式信息GST_EVENT_SEGMENT:以下缓冲区的计时信息GST_EVENT_TAG:流元数据。GST_EVE

2021-07-07 23:21:35 1513

翻译 Gstreamer- 状态(states)

状态元素和衬垫都可以处于不同的状态。衬垫的状态与元件的状态相关联,因此状态的设计主要围绕元件状态进行。一个元素可以有 4 种状态。NULL、READY、PAUSED和PLAYING。当一个元素最初被实例化时,它处于 NULL 状态。状态定义NULL:这是元素的初始状态。READY: 元素应该准备去PAUSED。PAUSED:元素应该准备好接受和处理数据。然而,接收器元素只接受一个缓冲区然后阻塞。PLAYING:PAUSED除实时源和接收器外,相同。接收器接受并呈现数据。实时源产生数据。我们

2021-07-05 11:38:46 1324

翻译 GStreamer- (缓冲)Buffering

缓冲缓冲的目的是在pipeline中积累足够的数据,以便播放可以顺利进行而不会中断。它通常在从(慢速)并且非实时网络源读取时这样做,但也可用于实时源。GStreamer 为以下用例提供支持: 在开始播放之前在内存中缓冲特定数量的数据,以便将网络波动降至最低。请参阅流缓冲。 将网络文件下载到本地磁盘,并在下载的数据中进行快速定位(seeking)。这类似于 quicktime/youtube 播放器。请参阅下载缓冲。 将(半)实时流缓存到本地磁盘环形缓冲区,并在缓存区域中定位(seeki

2021-07-03 22:17:30 2114

翻译 Gstreamer- 元数据(Metadata)

元数据GStreamer 明确区分了它支持的两种类型的元数据: Stream tags,以非技术方式描述流的内容;和 Stream-info,这是对流属性的某种技术性描述。Stream tags的示例包括歌曲的作者、歌曲的标题或它所属的专辑。 Stream-info的示例包括视频大小、音频采样率、使用的编解码器等。Tags 使用 GStreamer的 tagging system进行处理。通 获取该pad当前(协商的)的GstCaps,可以通过从 GstPad 中检索出Stream-info 。.

2021-07-03 17:23:04 743

翻译 Gstreamer- 多线程(Threads)

多线程GStreamer 本质上是多线程的,并且是完全线程安全的。大多数线程内部对应用程序是隐藏的,这应该使应用程序开发更容易。但是,在某些情况下,应用程序可能希望影响其中的某些部分。 GStreamer 允许应用程序在pipeline的某些部分强制使用多个线程。请参阅何时要强制使用线程?。GStreamer 还可以在创建线程时通知您,以便您可以配置要使用的线程优先级或线程池等内容。请参阅在 GStreamer 中配置线程。GStreamer 中的调度GStreamer pipeline中的每个el

2021-07-03 16:09:36 1801

翻译 Gstreamer- 协商(Negotiation)

协商Capabilities 协商是为 GStreamer pipeline内的数据流决定适当格式的过程。理想情况下,协商(也称为“capsnego”)将信息从pipeline中具有信息的那些部分传输到pipeline的那些易扩展的部分,受pipeline中不易扩展部分的约束。基本规则必须遵循这些简单的规则:下游建议格式上游决定格式caps协商中使用了 4 种 查询/事件(queries/events ):GST_QUERY_CAPS:获取可能的格式GST_QUERY_ACCEPT_C

2021-07-03 11:57:07 1115

翻译 Gstreamer- Caps

CapsCaps是描述媒体类型的轻量可引用对象。它们由一组GstStructure和GstStructure的GstCapsFeatures集(可选)组成。Caps在GstPadTemplates上被公开来描述一个给定的pad可以处理的所有可能的类型。它们还与element的描述一起存储在注册表中。Caps 通过 CAPS 和 ACCEPT_CAPS 查询公开在element pad上。该函数描述了pad可以处理或产生(协商)的可能类型。存在各种方法来处理媒体类型,例如相减或相交。操作固定如

2021-07-02 18:04:12 899

翻译 Gstreamer- 缓冲池(Bufferpool)

缓冲池本文档详细介绍了如何在池中分配和管理缓冲区的设计。缓冲池通过减少分配开销和提高实现零拷贝内存传输的可能性来提高性能。与 ALLOCATION 查询一起,element可以在它们之间协商分配属性和缓冲池。这也允许element在它们之间协商缓冲区元数据。要求提供一个 GstBufferPool 基类来帮助高效实现可重用 GstBuffer 对象列表。让上游元素发起缓冲池及其配置的协商。允许下游元素提供缓冲池属性和/或缓冲池。这包括以下属性:具有最小和最大数量的缓冲区,并可以选择预先分配缓冲

2021-07-02 10:38:24 1390

翻译 Gstreamer- 流状态(Stream status)

流状态本文档描述了流状态消息的设计和用例。当流线程的状态发生变化时,STREAM_STATUS 消息会发布到总线上。此消息的目的是允许应用程序与流线程属性进行交互,例如要使用的线程优先级或线程池。要求和场景我们满足以下要求:将要创建流线程时会通知应用程序。应用程序可以建议自定义 GstTaskPool。当流线程的状态改变时通知应用程序。这对于想要可视化流线程状态(播放/暂停/停止)的 GUI 应用程序可能感兴趣当流线程被销毁时通知应用程序。我们允许以下场景:element需要特定(内

2021-07-01 19:30:43 897

翻译 Gstreamer1.0-总览(OverView)

概述这部分讲述了 GStreamer 的设计,并参考了不同主题更详细的说明。本文档适用于希望全面了解 GStreamer 内部工作原理的人员。介绍GStreamer 是一组库和插件,可用于实现各种多媒体应用程序,包括桌面播放器、音频/视频录像、多媒体服务器、转码器等。应用程序通过由elements组成的pipeline来构建的。一个 element是对多媒体流执行某些操作的对象,例如:读取文件在不同的格式之间解码或编码从硬件设备捕获渲染到硬件设备混合或多路复用多个流在 GStrea

2021-07-01 18:14:24 336

翻译 Gstreamer- 衬垫和处理能力 (Pads and capabilities)

pads(衬垫) 和 capabilities(处理能力)正如我们在 Elements 中看到的,pads 是element与外界的接口。从一个element的source pad 到另一个element的sink pad的数据流。element可以处理的特定媒体类型将由pads的处理能力暴露。我们将在本章后面详细讨论功能(请参阅 pad 的功能)。Padspad 类型由两个属性定义:方向和可用性。正如我们之前提到的,GStreamer 定义了两种pad方向:source pads 和 sink pa

2021-06-29 14:55:31 831

翻译 Gstreamer-缓冲区和事件(Buffers and Events)

缓冲区和事件流经pipeline的数据由缓冲区和事件的组合构成。缓冲区包含实际的媒体数据。事件包含控制信息 ,例如seeking 信息和end-of-stream通知。在pipeline运行时,所有这些都是自动流经pipeline。本章主要是为了向您解释这个概念;你不需要为此做任何事情。缓冲区缓冲区包含将流经您创建的pipeline的数据。source element通常会创建一个新的缓冲区,并将其通过 pad 传递到链中的下一个element 。使用 GStreamer 基础架构创建媒体pipel

2021-06-29 13:39:21 521

翻译 Gstreamer- 消息总线(bus)

消息总线(Bus)消息总线是一个简单的系统,负责将消息从流线程转发到其自己的线程上下文中的应用程序。总线的优点是应用程序不需要知道线程来使用 GStreamer,即使 GStreamer 本身是大量线程的。默认情况下,每个pipeline都包含一个消息总线,因此应用程序不需要创建消息总线或任何东西。应用程序唯一应该做的就是在消息总线上设置一个消息处理程序,这类似于对象的信号处理程序。当主循环运行时,消息总线会定期检查新消息,当有消息可用时会调用回调。消息总线的使用方法有两种不同的方式使用消息总线:

2021-06-29 13:35:10 1535

翻译 Gstreamer - 箱柜(Bins)

Binsbin 是一个容器型的 element。 您可以将element添加到 bin。 由于 bin 本身就是一个element,因此可以以与任何其他element相同的方式处理 bin。 因此,整个前一章的内容(element)也适用于 bin。什么是binsBins允许您将一组已链接element组合成一个逻辑element。 您不再处理单个element,而只处理一个element,即 bin。 我们将看到,当您要构建复杂的pipeline时,这非常强大,因为它允许您将pipeline分解为更

2021-06-29 13:16:56 806

翻译 Gstreamer- 元素(Elements)

ElementsGStreamer 中对于程序员开发者来说最重要的对象是 GstElement 。Elements 是多媒体 pipeline 的基本构建块。您使用的所有不同的高级组件都源自 GstElement。每个解码器、编码器、解复用器、视频或音频输出实际上都是一个 GstElement什么是elements?对于程序员开发者来说,elements 最好被可视化为黑盒。一方面,你可能向其输入一些东西,elements 用它做一些事情,从另一边会输出其他东西。例如,对于解码器element,您输入

2021-06-29 13:06:38 1102

翻译 GStreamer-时钟和同步

在播放复杂媒体时,每个声音和视频样本必须在特定时间以特定顺序播放。为此,GStreamer 提供了一种同步机制。GStreamer 为以下用例提供支持:访问速度快于播放速度的非实时源。这是从文件中读取媒体并以同步方式播放的情况。在这种情况下,需要同步多个流,如音频、视频和字幕。从多个实时源捕获和同步混流/混音媒体。这是一个典型的用例,您从麦克风/摄像头录制音频和视频并将其合成到文件中进行存储。使用缓冲技术对(慢速)网络流进行流式传输。这是典型的 Web 流媒体案例,您使用 HTTP 从流

2021-06-24 19:37:26 916

原创 组播流媒体卡顿问题排查

问题-播放组播流卡顿操作系统:Linux硬件平台:Arm64播放工具:Gstreamer-1.0步骤:在一台PC上通过ffmpeg命令行推送ts组播流,通过rtp协议传输ts流。ffmpeg -re -stream_loop -1 -i hd1080.mp4 -c:v copy -c:a copy -f rtp_mpegts rtp://239.239.22.22:3333在arm开发板上通过Gstreamer命令行工具播放该组播流。目前gstreamer 无法通过playbin

2021-06-22 18:26:52 3280

翻译 Gstreamer-对象关系类型

对象关系类型本文档描述了GStreamer中存在的对象之间的关系。它还将描述处理与锁定和重新计数关系的方式。父-子关系 +---------+ +-------+ | parent | | child |*--->| *----->| | | F1|<-----* 1| +---------+ +-------+特性- 父对象拥有多个子对象的引用- 子对象有对父对象的引用-

2021-06-22 10:26:15 187

翻译 Gstreamer-基础

介绍gstreamer的基础概念。Elementselement是gstreamer中最重要的对象类。通常,你将创建一条由多个element链接到一起而组成的链路,并让数据流从该这链路通过。 一个element具有一项特定功能,可以是从文件中读取数据,对该数据进行解码或将该数据输出到您的声卡(或其他任何东西)。 通过将几个这样的element链接在一起,可以创建一个pipeline完成特定任务(例如媒体播放或捕获)。 默认情况下,GStreamer附带了大量element,这使得开发各种媒体..

2021-06-21 14:15:46 185

翻译 Gstreamer-文档协定

文档惯例由于具有指数增长的潜力,因此在本文档中将使用一些缩写约定。这些约定主要来自对IRC中的体系结构的极为深入的讨论。如果使用得当,这已经验证了这些约定的安全性。只要严格遵守上下文,就没有已知的名称空间冲突。对象类由于所有内容均以Gst开头,因此我们通常会使用较短的名称来表示涉及到的对象(即Element或Pad)。这些名称将始终首字母大写。函数名称在给定对象的上下文中,在该对象的头文件和/或源文件中定义的函数将去除其特定于对象的前缀。例如,gst_element_add_pad()将

2021-06-18 23:29:38 76

翻译 Gstreamer-线程安全API的约定

GStreamer API被设计为线程安全的。这意味着可以同时从多个线程调用API函数。GStreamer在内部使用线程来执行数据传递,并且各种异步服务(例如时钟)也可以使用线程。该设计决策对API和本文档说明的对象的使用有影响。MT安全技术几种设计模式用于保证GStreamer中的对象一致性。这是在各种GStreamer子系统中使用的方法的概述。引用计数:所有共享对象都有与其关联的引用计数。每次获得对对象的引用都应增加引用计数,而每次丢失对象的引用应减少引用计数。引用计数用于...

2021-06-18 23:24:16 417

翻译 Gstreamer之GstObject

GstObject整个GStreamer层次结构的基类是GstObject。父-子关系一个指针可用来存储对象的当前父对象。这是GStreamer等分级系统的两个基本需求之一(对于另一个,请参阅GstBin)。提供了三个函数:_set_parent()、_get_parent()和_unparent()。第三个是必需的,因为在_set_parent()中有一个显式的检查:如果您希望设置一个对象的父对象,在设置之前它必须不具有父对象。因此首先必须取消对象的父对象。才允许以后添加新的父对象。Gst

2021-06-15 14:49:47 269

原创 debian9.9镜像地址

http://cdimage.debian.org/cdimage/archive/9.9.0/amd64/iso-dvd/

2020-07-28 18:57:10 654

原创 WebRtc服务器Licode(一)

什么是WebRtc从百度百科摘抄了这么一段话。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox\...)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号

2020-06-05 02:17:32 1468

原创 安装mongocxx-v3驱动

前提:1、任何标准的Unix平台或Windows 7 SP1+2、编译器支持C++11 (gcc, clang, or Visual Studio)3、CMake 3.2 以及更新的版本4、boost headers (可选)Step 1:安装最新版本的MongoDB C 驱动mongocxx驱动程序构建在MongoDB C驱动程序之上对于 mongocxx-3.4....

2019-08-02 00:10:41 786

c语言 编程900例

c语言编程的学习,提高的参考资料。通过900个列子来深化对c编程的理解

2011-11-03

仓库管理系统

一个简单实用的仓库管理系统练习,可以用来参考学习

2011-10-28

操作系统教程答案

高等教育出版社《操作系统教程》(第四版)答案

2011-09-23

access 开发实例集锦

access 2003 的开发使用 适用于初学者

2011-09-18

access 2003教程

主要讲解access 2003 使用教程 和基本方法

2011-09-18

空空如也

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

TA关注的人

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