自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZONGXP的博客

让技术为产业赋能

原创 Linux之常用的压缩解压缩命令

记录一下平时常用到的压缩解压缩命令,免去每次查找的麻烦(不断完善) 1 解压命令 tar -xvf filename.tar tar -zxvf filename.tar.gz tar -jxvf filename.tar.bz2 tar -xZvf filename.tar.Z u...

2020-05-09 17:42:52 64 2

原创 Python之代码性能分析工具(时间+内存)

0 背景 在运行复杂的Python程序时,执行时间会很长,这时也许想提高程序的执行效率。但该怎么做呢?首先,要有个工具能够检测代码中的瓶颈,例如,找到哪一部分执行时间比较长。接着,就针对这一部分进行优化。同时,还需要控制内存和CPU的使用,这样可以在另一方面优化代码。本文主要介绍两种最常用的监控...

2019-10-09 09:52:20 699 0

转载 Linux之分析bin文件的10种方法

这世界有10种人,一种人懂二进制,另一种人不懂二进制。 ——鲁迅 大家好,我是良许。 二进制文件是我们几乎每天都需要打交道的文件类型,但很少人知道他们的工作原理。这里所讲的二进制文件,是指一些可执行文件,包括你天天要使用的 Linux 命令,也是二进制文件的一种。 Linux 系统给我...

2020-05-18 11:24:40 31 0

原创 Linux之ubuntu查看媒体信息工具

在linux上开发时,经常要与媒体文件交互,如图片、视频、音频文件,交互时需要获得媒体信息,如视频帧率、视频宽高、视频时常、编解码格式等,本文对查看媒体信息的方法进行总结,常用的工具是mediainfo和ffprob 1 mediainfo 在ubuntu18.04上安装方法很简单 sud...

2020-05-14 19:49:37 28 0

原创 Linux之ubuntu安装teamviewer

首先,请大佬轻拍:一般都是ssh连接服务器,通过terminal调试,为什么要用桌面系统呢? 确实,大多数场景用不着远程桌面,但如果是经常和图像视频打交道,安装一个还是挺方便的。 1 服务器端安装 《在Ubuntu 18.04系统上安装TeamViewer的两种方法》这篇文章其实介绍的比较详...

2020-05-14 11:01:31 62 0

原创 DeepStream系列文章目录

系列文章目录 (一)DeepStream4.0系列之环境配置安装 (二)DeepStream4.0系列之SDK文件夹解析 (三)DeepStream4.0系列之pipeline分析工具 (四)DeepStream5.0系列之环境安装 (未完待续……) ...

2020-05-11 14:17:48 61 0

转载 Linux之ubuntu离线安装软件包

方法一 在可上网的ubuntu电脑上,使用apt-get install安装软件,然后到/var/cache/apt/archives目录下拷贝安装包到离线ubuntu电脑上。比如要安装samba,步骤如下: # sudo apt-get install samba # sudo cd /v...

2020-05-08 13:35:48 57 0

原创 Tensorflow之deeplab训练cityscapes数据集

在《TensorFlow之deeplab语义分割API接口调试》文章中,介绍了如何安装tensorflow model以及训练自己的语义分割模型,本文介绍对cityscapes数据集的训练方法 ...

2020-05-08 11:17:19 141 0

原创 DeepStream5.0系列之环境安装

在前边的文章中,我们介绍过deepstream4.0 SDK的安装方法,最近deepstream更新到5.0版本,因此介绍一下5.0的安装方法。 官网介绍SDK的运行环境如下(T4环境),jetson环境下直接刷jetpack即可安装好 •Ubuntu 18.04 •GStreamer 1...

2020-05-07 11:49:06 170 0

翻译 Gstreamer应用开发手册14:替换管道元件

动态改变管道 在本节中,我们讨论一些用于动态修改管道的技术。我们正在专门讨论在PLAYING状态下且不中断数据流的情况下更改管道。 建立动态管道时,需要考虑一些重要事项: 从管道中删除元件时,请确保未链接的衬垫上没有数据流,因为这将导致致命的管道错误。断开衬垫连接之前,请始终阻塞source...

2020-04-29 16:50:54 64 0

翻译 Gstreamer应用开发手册13:管道中添加删除数据

手动在管道中添加/删除数据 许多人希望使用自己的源将数据注入到管道中,也有人希望获取管道的输出并在应用程序中处理它。强烈建议不要使用这些方法,但GStreamer会为它们提供支持。由于没有基类的任何支持,因此你需要彻底了解状态更改和同步。如果它不起作用,则有百万种方法可以使自己陷入困境。最好只编...

2020-04-29 16:50:40 110 0

翻译 Gstreamer应用开发手册12:探测函数

管道控制 本文将讨论如何在你的应用程序控制管道的几种方法。本文的有些部分明显的有点难度,所以你在阅读本文之前需要一些编程知识。接下来将要讨论的包括 如何如何将数据从应用程序插入到管道中, 如何从管道读取数据, 如何控制管道的速度、长度、起始点, 如何监听管道的数据处理过程。 使用探测 ...

2020-04-29 16:45:46 80 0

翻译 Gstreamer应用开发手册11:自动加载

自动加载 在前边我们学习过为 Ogg/Vorbis 文件建立一个简单的媒体播放器。通过替换元件,你同样可以建立一个播放其它文件格式的媒体播放器,像 Ogg/Speex, MP3 甚至视频格式。但是你可能更希望建立一个可以自动检测数据流的媒体格式的应用程序,该应用程序可以根据系统中可用元件自动建立...

2020-04-29 15:33:42 61 0

翻译 Gstreamer应用开发手册10:线程

线程 GStreamer本质上是多线程的,并且是完全线程安全的。大多数线程内部结构对应用程序都是隐藏的,这使开发更加容易。但是,在某些情况下,应用程序可能希望对其中的某些部分产生影响。GStreamer允许应用程序在管道的某些部分上强制使用多个线程。 GStreamer还可以在创建线程时通知您...

2020-04-29 15:03:39 85 0

翻译 Gstreamer应用开发手册9:动态控制参数

入门 GStreamer属性通常是使用g_object_set()设置的,但是想实时地调用来更改流几乎是不可能的。控制器子系统提供了一种轻量级的方法来在流运行时调整GObject属性。 控制器要考虑到时间影响,它通过GstControlSource控件来修改属性。控制源提供0.0到1.0的范围...

2020-04-29 14:23:07 78 0

翻译 Gstreamer应用开发手册8:缓冲

缓冲 缓冲的目的是在管道中累积足够的数据,以便可以流畅地进行播放而不会中断。从(慢速)非实时网络源读取数据时通常可以完成此操作,但也可以用于实时资源。 GStreamer为以下用例提供支持: 开始播放之前,在内存中缓冲多达特定数量的数据,以使网络波动最小化。请参阅流缓冲。 通过快速搜索下载...

2020-04-29 13:54:05 60 0

翻译 Gstreamer应用开发手册7:接口、时钟与同步

接口 在前边中我们学习过如何使用 GObject 的特性在应用程序和元件间进行简单交互。这个方法能够满足简单的直接设置,但对于比 set 和 get 更复杂的方法时就不行。为了满足一些更复杂的应用,GStreamer 使用了基于 Glib 中的 GInterface 类型的接口。这部分讲述的大多...

2020-04-29 11:33:13 54 0

翻译 Gstreamer应用开发手册6:跟踪、定位、元数据

到目前为止,我们已经接触到如何创建一个处理媒体数据流的管道,并如何使它运行。更多的应用程序开发者对在媒体数据流的处理过程中能否提供反馈信息给用户,以及提供什么反馈信息给用户,更感兴趣。举例来说: 对于多媒体播放器,我们想要对播放中的音乐显示一个进度条。或者进行代码转换的应用程序可能需要一个进度条来...

2020-04-29 10:43:33 60 0

翻译 Gstreamer应用开发手册5:构建一个应用

创建一个完整应用 在这一章中将会对先前的章节做个总结。它通过一个小程序来讲述 GStreamer 的各个方面:初始化库,创建元件,将元件打包进管道,播放管道中的数据内容。通过这些步骤,你将能够自己开发一个简易的,支持 Ogg/Vorbis 格式的音频播放器。 第一个 Hello world 程...

2020-04-28 19:18:50 51 0

翻译 Gstreamer应用开发手册4:衬垫、缓冲区、事件

衬垫(pads)及其功能 如我们在 Elements 一文中看到的那样,衬垫(Pads)是元件对外的接口。数据流从一个元件的源衬垫(source pad)到另一个元件的接收衬垫(sink pad)。衬垫的功能(capabilities)决定了一个元件所能处理的媒体类型。在这章的后续讲解中,我们将...

2020-04-28 19:03:15 55 0

翻译 Gstreamer应用开发手册3:箱柜、总线、消息

箱柜(Bins) 箱柜是一种容器元件。你可以往箱柜中添加元件。由于箱柜本身也是一种元件,所以你可以像普通元件一样 操作箱柜。因此,先前关于元件(Elements) 那章的内容同样可以应用于箱柜。 什么是箱柜 箱柜允许你将一组有链接的元件组合成一个大的逻辑元件。你不再需要对单个元件进行操作,而...

2020-04-28 18:23:50 59 0

翻译 Gstreamer应用开发手册2:初始化、元件

初始化 当你准备写一个GStreamer应用程序时,你仅需要通过包含头文件gst/gst.h 来访问库函数。除此之外,不要忘记初始化 GStreamer 库。 简易初始化 在 GStreamer 库被使用前,主应用程序中应该先调用函数 gst_init,这个函数将会对 GStreamer 库...

2020-04-28 17:46:02 63 0

翻译 Gstreamer应用开发手册1:关于Gstreamer

在之前的Gstreamer基础教程中,介绍了gstreamer基础相关的知识,目的是起到入门的作用。接下来在应用开发手册系列教程中,将更多的从技术角度,介绍更多的概念和功能,起到更好的学习效果。 1 什么是gstreamer GStreamer 是一个创建流媒体应用程序的框架。其基本设计思想来...

2020-04-28 11:58:50 89 0

原创 DeepStream4.0系列之pipeline分析工具

系列文章目录 (一)DeepStream系列之环境配置安装 (二)DeepStream系列之SDK文件夹解析 (三)DeepStream系列之pipeline分析工具 ================写在前边==================== 经过两个多月的暂停,deepstrea...

2020-03-31 15:52:18 301 0

翻译 GStreamer基础教程16:平台相关的element

目标 虽然GStreamer是跨平台的framework,但不是所有的element都是在所有平台下都有的。比如,音频和视频的sink都非常依赖于当前的window系统,根据当前的平台需要选择不同的element。当然,你在运行playbin2或者autovideosink这些element时不...

2020-03-12 14:35:12 91 0

翻译 GStreamer基础教程15:继承Clutter

目标 Clutter是一个开源的库,用来创建快速、可移植和动态的GUI。GStreamer可以通过cluttersink这个element把clutter集成进来,允许视频像纹理一样使用。本教程会展示: 如何把GStreamer pipeline的视频输出在clutter里面作为纹理来处理 介...

2020-03-12 14:30:06 66 0

翻译 GStreamer基础教程14:常用的element

目标 本教程给出了一系列开发中常用的element。它们包括大杂烩般的eleemnt(比如playbin2)以及一些调试时很有用的element。 简单来说,下面用gst-launch这个工具给出一个个具体例子(命令行),你可以用-v参数可以看到Pad得Caps是如何协商的。 Bins 这...

2020-03-12 14:25:38 88 0

翻译 GStreamer基础教程13:播放速度

目标 快进,倒放和慢放是trick模式的共同技巧,它们有一个共同点就是它们都修改了播放的速度。本教程会展示如何来获得这些效果和如何进行逐帧的跳跃。主要内容是: 如何来变换播放的速度,变快或者变慢,前进或者后退 如何一帧一帧的播放视频 介绍 快进是以超过正常速度播放媒体的一项技术,反之,慢放...

2020-03-12 14:18:07 79 0

翻译 GStreamer基础教程12:流式传输

目标 直接播放Internet上的文件而不在本地保存就被称为流播放。我们在前面教程里已经这样做过了,使用了http://的URL。本教程展示的是在播放流的时候需要记住的几个点,特别是: 如何设置缓冲 如何从打断中恢复(因为失去了时钟) 介绍 当在播放流的时候,一旦从网络上取到媒体数据块就会...

2020-03-12 14:12:39 65 0

翻译 GStreamer基础教程11:调试工具

目标 有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容。这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出错的地方。本教程主要讲述: 如何在GStreamer里面获得更多地调试信息 如何把你自己的调...

2020-03-12 14:08:46 67 0

翻译 GStreamer基础教程10:GStreamer工具

目标 GStreamer提供了一系列方便使用的工具。这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline——完全不使用C 如何找出一个element的Capabilities 如何发现一个媒体文件的内部结构 介绍 这些工具就位于SDK的bin目录下...

2020-03-12 14:00:49 91 0

翻译 GStreamer基础教程9:收集媒体信息

目标 有时你需要快速的了解一个文件(或URI)包含的媒体格式或者看看是否支持这种格式。当然你可以创建一个pipeline,设置运行,观察总线上的消息,但GStreamer提供了一个工具可以帮你做这些。本教程主要讲述: 如何获得一个URI上的信息 如何确定一个URI是可以播放的 介绍 Gst...

2020-03-12 11:54:20 52 0

翻译 GStreamer基础教程8:pipeline的快捷访问

目标 GStreamer建立的pipeline不需要完全关闭。有多种方法可以让数据在任何时候送到pipeline中或者从pipeline中取出。本教程会展示: 如何把外部数据送到pipeline中 如何把数据从pipeline中取出 如何操作这些数据 介绍 有几种方法可以让应用通过pip...

2020-03-12 11:43:14 62 0

翻译 GStreamer基础教程7:多线程和Pad的有效性

目标 GStreamer会自动处理多线程这部分,但在有些情况下,你需要手动对线程做解耦。本教程会教你怎样才能做到这一点,另外也展示了Pad的有效性。主要内容包括: 如何针对部分的pipeline建立一个新的线程 什么是Pad的有效性 如何复制流 介绍 多线程 GStreamer是一个支...

2020-03-12 11:31:43 69 0

翻译 GStreamer基础教程6:媒体格式和pad的Capabilities

目标 Pad的Capabilities是一个GStreamer element的基础,因为framework大部分时间是自动处理的,所以我们几乎感觉不到它的存在。本教程比较偏向原理,介绍了: 什么是Pad Capabilities 如何获得这个东西 什么时候应该去获得这个东西 为什么你需...

2020-03-12 11:17:54 82 0

翻译 GStreamer基础教程5:集成GUI工具

目标 本教程展示了如何在GStreamer集成一个GUI(比如:GTK+)。最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互。在这个教程里面,我们可以学到: 如何告诉GStreamer输出视频到一个window 如何持续的刷新GUI 在GStreamer多线程时如何...

2020-03-12 10:05:21 54 0

翻译 GStreamer基础教程4:时间管理

目标 本教程显示了如何使用GStreamer与时间相关的工具。尤其是: 如何在管道中查询流位置或持续时间之类的信息。 如何寻找(跳到)流中的另一个位置(时间)。 介绍 GstQuery是一种机制,允许向元素或填充物询问一条信息。在此示例中,我们询问管道是否允许搜索(某些源(例如实时流)不允...

2020-03-04 17:34:52 96 0

翻译 GStreamer基础教程3:动态管道

目标 本教程介绍了使用GStreamer所需的其余基本概念,这些概念允许在信息可用时“动态”构建管道,而不是在应用程序开始时定义一个整体式管道。 学习完本教程之后,您将具有开始播放教程的必要知识。这里的要点是: 链接元素时如何获得更好的控制。 如何收到有趣事件的通知,以便您及时...

2020-03-04 11:42:42 143 0

翻译 GStreamer基础教程2:基本概念

目标 上一教程介绍了如何自动构建管道。现在,我们将通过实例化每个元素并将它们链接在一起来手动构建管道。在此过程中,我们将学习: 什么是GStreamer元素以及如何创建一个元素。 如何将元素彼此连接。 如何自定义元素的行为。 如何监视总线上的错误情况并从GSt...

2020-03-04 10:37:40 105 0

翻译 GStreamer基础教程1:Hello World

目标 没有比在屏幕上打印“ Hello World”更好的关于软件库的第一印象了! 但是由于我们正在处理多媒体框架,所以我们将改为播放视频。 不要被下面的代码量吓到了:只有4行可以完成实际工作。剩下的就是清理代码,在C语言中,这总是有些冗长。 事不宜迟,为您的第一个GStreamer应用程...

2020-03-04 10:18:05 176 0

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