![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
视频开发
各种视频开发技术,FFMPEG,LIVE555,GPU硬编解码,推流直播等技术
Zhang_P_Y
关注机器学习、计算机视觉、嵌入式(MCU、DSP、ARM)和桌面开发等领域
展开
-
【GStreamer开发】GStreamer播放教程01——playbin2的使用
目标 我们前面已经使用过了playbin2这个element,它可以让我们做的很少而实现很多。本教程会展示当这个element的默认设置在一些特殊情形下不符合我们的需求是可以做的一些深度定制,我们会看到: 如何判断一个文件中有多少个流并区分开 如何获得每一个流的信息 作为一个编注,虽然这个element名字是playbin2,但因为原来的转载 2017-02-17 22:07:51 · 840 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程02——字幕管理
目标 这篇教程和上一篇非常相似,但不是切换音频流,而是字幕了。这次我们会展示: 如何选择选择字幕流 如何引入外部的字幕 如何客制化字幕使用的字体介绍 我们都知道一个文件可以有多个音视频流并且可以使用playerbin2的current-audio和current-video属性很方便的进行切换。切换字幕也是一样的方便转载 2017-02-17 22:15:36 · 984 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程03——pipeline的快捷访问
目的 《GStreamer08——pipeline的快捷访问》展示了一个应用如何用appsrc和appsink这两个特殊的element在pipeline中手动输入/提取数据。playbin2也允许使用这两个element,但连接它们的方法有所不同。连接appsink到playbin2的方法在后面还会提到。这里我们主要讲述: 如何把appsrc连接到playbin2转载 2017-02-17 22:17:32 · 964 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程04——既看式流
目的 在《GStreamer基础教程——流》里面我们展示了如何在较差的网络条件下使用缓冲这个机制来提升用户体验。本教程在《GStreamer基础教程——流》的基础上在扩展了一下,增加了把流的内容在本地存储。并且展示了: 如何开启既看式下载 如何知道下载的是什么 如何知道在哪里下载 如何限制下载数据的总量介绍转载 2017-02-17 22:19:10 · 630 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程05——色彩平衡
目标 亮度,对比度,色度和饱和度都是常见的视频调节参数,也是GStreamer里面设置色彩平衡的参数。本教程将展示: 如何发现可用的色彩平衡通道 如何改变它们介绍 《GStreamer基础教程05——集成GUI工具》里面已经解释了GObject接口:应用通过它们来获得特定功能,而不用去管具体的element的实现。转载 2017-02-17 22:21:01 · 464 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程06——可视化音频
目标 GStreamer有一系列把音频转换成视频的element。他们可以用于科学的目的或者增加音乐播放器的趣味性。本教程展示: 如何允许音频的可视化 如何选择可视化element介绍 在playbin2里面运行音频可视化是非常容易的。当遇到一个只有音频的流时,只需要正确地设置playbin2的一些标志就行了。它会自己创建必要的e转载 2017-02-17 22:22:26 · 508 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程07——自定义playbin2的sink
目标 通过手动选择音频和视频的sink,playbin2可以进一步定制。这允许使用playbin2的应用在解码后可以自行做最终的渲染和显示。本教程展示了: 如何替换playbin2选择的sink 如何使用一个复杂的pipeline来作为sink介绍 playbin2有两个属性:audio-sink和video-sink。应用只需要转载 2017-02-17 22:23:49 · 725 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程08——视频解码的硬件加速
目标 视频的硬件解码近来发展非常快速,尤其是在低功耗的设备上。本教程会讲述一些硬件加速的背景知识并解释一下GStreamer是怎么做的。 悄悄告诉你,如果设置正确地话,我们什么也不用做,GStreamer自动做完这一切的。介绍 视频解码是非常消耗CPU的一个任务,尤其是1080P这种高分辨率的高清节目。幸运的是,现在的显卡都带了可编程的GPU,转载 2017-02-17 22:25:24 · 2052 阅读 · 0 评论 -
【GStreamer开发】GStreamer播放教程09——数字音频传输
目标 本教程展示GStreamer是如何进行数字音频传输的。介绍 在常见的模拟格式外,高端的音频系统通常都接受数字格式,压缩的非压缩的都能接受。因为音频信号是从电脑传到音箱,用一种更有弹性的形态会更能保证质量。 典型的连接是通过S/PDIF线缆,可以是光缆或者同轴电缆。 在这种情况下,GStreamer是不需要做音频的解码的,可以转载 2017-02-17 22:27:02 · 585 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程01——Hello World
目标 对于一个软件库来说,没有比在屏幕上打印出Hello World更近直观的第一印象了。因为我们是在和一个多媒体的framework打交道,所以我们准备播放一段视频来代替Hello World。不要被下面的代码吓唬住了——真正起作用的也就四行而已。剩下的都是资源管理的代码,C语言嘛,就是有这个麻烦。不多说了,准备你的第一个GStreamer应用吧……Hello Worl转载 2017-02-17 22:30:26 · 622 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程02——GStreamer概念
上一个教程演示了如何自动生成一个pipeline。这次我们打算用一个个element来手动搭建一个pipeline。我们这个教程会演示:1. 什么是GStreamer的element以及如何建立一个element2. 如何在element直接建立连接3. 如何客制化element的行为4. 如何监视总线上的错误并获得相关的信息 手动建立Hello World转载 2017-02-17 22:31:53 · 478 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程03——动态pipeline
本教程介绍pipeline的一种新的创建方式——在运行中创建,而不是在运行前一次性的创建结束。介绍 在这篇教程里的pipeline并非在运行前就全部创建结束的。放松一下,这样做没有任何问题。如果我们不进行更深入的处理,那么数据在到达pipeline的末尾时就直接丢弃了,当然,我们肯定会进行深入处理的。。。 在这个例子中,我们会打开一个已经包含了音视频的文件(Cont转载 2017-02-17 22:33:39 · 780 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程04——时间管理
目标 本教程主要讲述一些和时间相关的内容。主要包括: 1. 如何问pipeline查询到流的总时间和当前播放的时间 2. 如何在流内部实现跳转功能介绍 GstQuery是向一个element或者pad询问一些信息的机制。在这个例子中我们会问pipeline是否支持跳转功能(实时流是不支持跳转功能的),如果支持跳转功能,那么在播放了转载 2017-02-17 22:35:22 · 895 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程05——集成GUI工具
目标 本教程展示了如何在GStreamer集成一个GUI(比如:GTK+)。最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互。 在这个教程里面,我们可以学到: 如何告诉GStreamer输出视频到一个window 如何持续的刷新GUI 在GStreamer多线程时如何保持UI的更新 一个仅发转载 2017-02-17 22:36:44 · 1133 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程06——媒体格式和pad的Capabilities
目标 Pad的Capabilities是一个GStreamer element的基础,因为framework大部分时间是自动处理的,所以我们几乎感觉不到它的存在。本教程比较偏向原理,介绍了: 什么是Pad Capabilities 如何获得这个东西 什么时候应该去获得这个东西 为什么你需要了解他们介绍Pads转载 2017-02-17 22:38:14 · 605 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程07——多线程和Pad的有效性
目标 GStreamer会自动处理多线程这部分,但在有些情况下,你需要手动对线程做解耦。本教程会教你怎样才能做到这一点,另外也展示了Pad的有效性。主要内容包括: 如何针对部分的pipeline建立一个新的线程 什么是Pad的有效性 如何复制流介绍多线程 GStreamer是一个支持多线程的框架。这就说明,如果有转载 2017-02-17 22:39:42 · 640 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程08——pipeline的快捷访问
目标 GStreamer建立的pipeline不需要完全关闭。有多种方法可以让数据在任何时候送到pipeline中或者从pipeline中取出。本教程会展示: 如何把外部数据送到pipeline中 如何把数据从pipeline中取出 如何操作这些数据介绍 有几种方法可以让应用通过pipeline和数据流交互。本教程讲转载 2017-02-17 22:40:52 · 772 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程09——收集媒体信息
目标 有时你需要快速的了解一个文件(或URI)包含的媒体格式或者看看是否支持这种格式。当然你可以创建一个pipeline,设置运行,观察总线上的消息,但GStreamer提供了一个工具可以帮你做这些。本教程主要讲述: 如何获得一个URI上的信息 如何确定一个URI是可以播放的介绍 GstDiscover是一个在pbutils库提供转载 2017-02-17 22:42:26 · 551 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程10——GStreamer工具
目标 GStreamer提供了一系列方便使用的工具。这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline——完全不使用C 如何找出一个element的Capabilities 如何发现一个媒体文件的内部结构介绍 这些工具就位于SDK的bin目录下。你需要把这个目录加入PATH变转载 2017-02-17 22:43:19 · 609 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程11——调试工具
目标 有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容。这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出错的地方。本教程主要讲述: 如何在GStreamer里面获得更多地调试信息 如何把你自己的调试信息加入GStreamer的调试记录 如何获得图形转载 2017-02-18 14:40:52 · 593 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程12——流
目标 直接播放Internet上的文件而不在本地保存就被称为流播放。我们在前面教程里已经这样做过了,使用了http://的URL。本教程展示的是在播放流的时候需要记住的几个点,特别是: 如何设置缓冲 如何从打断中恢复(因为失去了时钟)介绍 当在播放流的时候,一旦从网络上取到媒体数据块就会进行解码和放入显示队列。这意味着如果网络来的转载 2017-02-18 14:41:48 · 752 阅读 · 2 评论 -
【GStreamer开发】GStreamer基础教程13——播放速度
目标 快进,倒放和慢放是trick模式的共同技巧,它们有一个共同点就是它们都修改了播放的速度。本教程会展示如何来获得这些效果和如何进行逐帧的跳跃。主要内容是: 如何来变换播放的速度,变快或者变慢,前进或者后退 如何一帧一帧的播放视频介绍 快进是以超过正常速度播放媒体的一项技术,反之,慢放是以低于正常速度播放的技术。倒放和播放是一样转载 2017-02-18 14:42:30 · 1224 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程14——常用的element
目标 本教程给出了一系列开发中常用的element。它们包括大杂烩般的eleemnt(比如playbin2)以及一些调试时很有用的element。 简单来说,下面用gst-launch这个工具给出一个个具体例子(命令行),你可以用-v参数可以看到Pad得Caps是如何协商的。Bins 这些是Bin element,它们在内部包含其他的eleme转载 2017-02-18 14:43:04 · 952 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程15——继承Clutter
目标 Clutter是一个开源的库,用来创建快速、可移植和动态的GUI。GStreamer可以通过cluttersink这个element把clutter集成进来,允许视频像纹理一样使用。本教程会展示: 如何把GStreamer pipeline的视频输出在clutter里面作为纹理来处理介绍 连接GStreamer和clutter的流程实际上转载 2017-02-18 14:43:58 · 506 阅读 · 0 评论 -
【GStreamer开发】GStreamer基础教程16——平台相关的element
目标 虽然GStreamer是跨平台的framework,但不是所有的element都是在所有平台下都有的。比如,音频和视频的sink都非常依赖于当前的window系统,根据当前的平台需要选择不同的element。当然,你在运行playbin2或者autovideosink这些element时不需要考虑跨平台的问题,但是,当你使用仅仅在特定的平台存在的sink时,这个问题就绕不过去了转载 2017-02-18 14:44:32 · 1156 阅读 · 0 评论 -
【Gstreamer开发】TI嵌入式处理器GStreamer pipeline
Example GStreamer PipelinesFrom Texas Instruments Embedded Processors WikiJump to: navigation, searchTranslate this page to Translate Example GStreamer Pipelines转载 2017-02-17 15:49:57 · 1934 阅读 · 0 评论 -
【miscellaneous】视频浓缩摘要简介
视频摘要,就是以自动或者半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段,将它们以某种特点的方式重新组合成紧凑的、能够充分表现视频语义内容的浓缩视频。 一、静态视频摘要:静态的视频摘要,也称之为视频概要(video summary),是以一系列从原始视频流中抽取出来的静态语义单元来表现视频的内容。静态语义单元是诸如关键帧、标题、幻灯片等可以转载 2016-12-25 20:05:30 · 1532 阅读 · 0 评论 -
【数据库开发】如何创建MySQL数据库连接池(一个基于libmysql的MySQL数据库连接池示例(C/C++版))
http://blog.csdn.net/horace20/article/details/80875571、 一般架构说明图 1 架构层次图 一般应用系统数据库访问模块可大致分为两层,一层是对数据库连接、连接池和结果集等直接对数据库的操作的封装,由于libmysql提供的库函数是直接操作数据库的,所以这一层在本质上是转载 2016-12-20 21:39:01 · 2642 阅读 · 0 评论 -
【miscellaneous】网络摄像机
自20世纪90年代初期网络摄像机开始诞生,产业已历经20余年的演变。 “IP大时代”的口号在安防领域已响彻已久,但也是自2015年至今才开使有了真正的底气。当全面超越模拟已尘埃落定,网络摄像机技术前沿也已经预热“智能IPC”的概念和应用有一年半载的时间。自20世纪90年代初期网络摄像机开始诞生,产业已历经20余年的演变,这20年时间里,一代代产品伴随着技术的发展快速更迭,在产业发展的转载 2016-07-29 09:20:40 · 657 阅读 · 0 评论 -
【miscellaneous】华为智能视频监控系统设计解决方案
[导读] 近年来,随着经济的快速增长、社会的迅速进步,校园、工厂园区、中小企业、楼宇等领域对安全防范和现场记录报警系统的需求与日俱增,视频监控在工作、生活各方面得到了非常广泛的应用。1.中小型视频监控概述 近年来,随着经济的快速增长、社会的迅速进步,校园、工厂园区、中小企业、楼宇等领域对安全防范和现场记录报警系统的需求与日俱增,视频监控在工作、生活各方面得到了非转载 2016-07-29 09:41:47 · 2730 阅读 · 0 评论 -
【miscellaneous】硬解码与软解码
在显卡技术日益成熟的今天,一些概念我们都不是很清楚了,那么显卡硬件解码功能是什么意思呢?高清硬解和软件有什么不同呢?显卡配置需不需要考虑硬件解码呢?电脑爱好者为您分析。什么是硬件解码?显卡硬件解码是将原来全部交由CPU来处理的视频数据的一部分交由GPU来做,而GPU的并行运算能力要远远高于CPU,这样可以大大的降低对CPU的负载,CPU的占用率较低了之后就可以同时运行一些其他的程序了,当然转载 2016-10-12 23:13:43 · 1368 阅读 · 0 评论 -
【miscellaneous】监狱安防系统智能视频监控系统设计方案
1监狱安防新需求 随着司法监狱管理系统内视频监控系统的日益发展,现有的被动式人工监控这一传统模式已无法满足新形势下的监管工作需求,尤其是现在靠轮询的视频监控方式,无法对突发恶性事件做到第一时间的防御和处理。要完成监狱繁重的实时监控任务,确保监所安全,充分发挥视频监控系统的作用,就必须向主动式的智能化监控方向发展。 智能视频行为分析和报警系统,正是为现代化监狱的管理系统提供了转载 2016-07-29 09:44:14 · 3137 阅读 · 0 评论 -
【miscellaneous】监狱智能视频监控系统设计解决方案
监狱智能视频监控系统设计解决方案 一、系统概况 随着司法监狱管理系统内视频监控系统的日益发展,现有的被动式人工监控这一传统模式已无法满足新形势下的监管工作需求,尤其是现在靠轮询的视频监控方式,无法对突发恶性事件做到第一时间的防御和处理。要完成监狱繁重的实时监控任务,确保监所安全,充分发挥视频监控系统的作用,就必须向主动式的智能化监控方向发展。转载 2016-07-29 09:42:44 · 3651 阅读 · 0 评论 -
【miscellaneous】最新HEVC/H.265 4K视频,显卡解码测试
转载自:http://bbs.zol.com.cn/diybbs/d34441_76103.html4K这个概念也在最近几年开始流行了起来,无论是4K显示器、4K电视盒子,还是4K游戏对硬件的要求也越来越高。很多玩家,为了达到“4K”标准,不得不去升级自己的设备。最近又推出了HEVC/H.265视频编码标准,相较于之前的H.264标准有了相当大的改善。H.2转载 2016-10-12 23:15:55 · 17519 阅读 · 0 评论 -
【miscellaneous】星光级超低照度摄像机技术分析
低照度摄像机采用了超灵敏度图像传感器和独有的电子倍增和噪点控制技术能够极大地提高摄像机的灵敏度,并且具备24小时全彩色实时效果,绝无普通低照度摄像机出现的拖尾现象,以满足对夜间高品质监控的需求。 在平安城市项目、金融、酒店、写字楼、住宅小区、平安村居、校园、港口、高速公路、街道等场合,由于夜间光照不足,又不可能大规模安装补光照明设施,此种场景下对摄像机的低照度性能要求就比较高,由于常转载 2016-07-29 10:44:50 · 3448 阅读 · 0 评论 -
【VS开发】组播(多播)的C程序实战
每个人都有不同的认知规律和习惯, 有的人喜欢搞一套严密的大理论, 论述起来滔滔不绝, 不管自己懂不懂, 反正读者/听者是没搞懂。 有的人喜欢从实践出发, 没看到代码, 不运行一下, 不看到结果, 就不太舒服。 我感觉, 我偏向后者, 必须有一个结果作用于我, 我才有感触。 比如初学C语言, 我也很不喜欢老师总在讲什么原码, 反码和补码, 讲什么 32767 + 1 为什么等于-转载 2016-11-02 13:28:53 · 3228 阅读 · 1 评论 -
【miscellaneous】多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和广播模式。利用这一特性,UDP(用户数据报协议)还提供了向多个目标地址发送广播数据包的能力。广播数据即数据从一个工作站上发出,只要将数据包的目标物理地址对应的所有bit位都设为1,局域网内的所有工转载 2016-11-02 13:23:11 · 786 阅读 · 0 评论 -
【miscellaneous】多播的实现和需要注意的问题
多播的实现和需要注意的问题 前段时间研究了一小段时间的网络多播问题,自己很有感触,把自己的经历写出来,希望有需要的可以少走一些弯路。 先说一下原理,我觉得这个还是需要说一下的。 网络中存在三种传输概念,单播,多播,广播,单播和广播大家可能都很了解,单播,连接的建立是一对一的,广播则是向一个网络内所有用户发送。转载 2016-11-02 13:59:45 · 489 阅读 · 0 评论 -
【miscellaneous】单播、广播和多播IP地址
转自:http://www.cnblogs.com/gaoxing/archive/2012/02/19/2358484.html 除地址类别外,还可根据传输的消息特征将IP地址分为单播、广播或多播。主机使用IP地址进行一对一(单播)、一对多(多播)或一对所有(广播)的通信。1.单播单播地址是IP网络中最常见的。包含单播目标地址的分组发送给特定主机,一个这转载 2016-11-02 15:30:33 · 673 阅读 · 0 评论 -
【miscellaneous】海康相机RTSP连接代码分析
海康相机RTSP连接代码分析最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码。【源码在我上传的共享资料中: http://download.csdn.net/detail/zhouyongku/8203521】 一、基本原理 RTSP客户端去连接服务器的最基本步骤如下: (1)分析url中的端口号,创建一个与服务器[S-PORT]转载 2016-11-02 23:04:02 · 2507 阅读 · 0 评论