自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱写代码的自由人

分享我的开发经验和流媒体方面的知识

原创 FFmpeg对颠倒的RGB图像翻转显示

很多使用FFmpeg做解码的用户都可能遇到过一个问题,他们对解码出来的图像转为RGB格式之后显示图像是颠倒的。有些用户对其原因不大明白,其实原因跟RGB图像的存储方式有关。RGB图像即RGB位图有两种存储方式:一种是从上往下扫描,另一种是从下往上扫描。从上扫描的图像第一行的首地址即为图像Buffe...

2019-11-29 10:12:14

阅读数 103

评论数 0

原创 使用opencv调用摄像头然后录制视频和保存文件

用 OpenCV 开发经常用到摄像头,从Camera获取图像后用OpenCV的算法进行处理,但是一般我们处理完图像之后,还需要将视频保存下来,比如保存成avi、mp4等格式。怎么保存呢?其实OpenCV有一个类cv::VideoWriter专门用来把视频保存到文件的,但VideoWriter不仅仅...

2019-11-21 14:00:24

阅读数 139

评论数 0

转载 iplimage*转换成mat/mat转iplimage*

IplImage*转Mat IplImage * ipl = ...; cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data. Mat转IplImage * 方法...

2019-11-19 20:30:58

阅读数 14

评论数 0

原创 将OpenCV输出的图像嵌入显示到子窗口控件中(支持Windows、Linux)

OpenCV用来做视频处理很方便,能用窗口显示处理后的图像,但是它默认显示图像的窗口是弹出式的,而我们很多情况下需要将图像显示到自己软件的窗口控件中。这应该怎么做呢?上网搜过一些方案,也试了一下,最后自己优化了一下,把其中几种比较靠谱的方法分享给大家。 第一种,使用Cvvimage类 + GDI...

2019-11-19 20:18:56

阅读数 66

评论数 0

原创 获取视频文件格式信息的工具和方法

如果我们需要知道一个视音频文件的信息,包括封装格式、播放时长、码率、视频编码格式、音频编码格式、视频分辨率、帧率、音频属性等,有什么方法呢?下面我将常用的方法汇总一下: 第一种,使用MediaInfo工具 。 MediaInfo是一个用来分析视频和音频文件编码和内容信息的工具。免费开源,支持众...

2019-11-18 08:31:02

阅读数 93

评论数 0

原创 解码H264视频出现花屏或马赛克的问题

常见的引起花屏或马赛克问题的原因是因为丢包,这时候,开发者应该检查自己的接收缓冲区是否太小,还有打印RTP的SeqNumber看有没有不连续或乱序的问题,如果是用UDP传输,则RTP包容易发生乱序,需要开发者对包按顺序进行重组再解码。 我说的花屏问题的情况是假设网络没有数据丢包也没有乱序的情况,...

2019-11-10 22:15:11

阅读数 431

评论数 0

原创 国标MPEG-PS实时流播放器开发(附例子)

公安部制定的GBT 28181标准广泛应用于安防领域,这个标准规定了传输的视音频数据要封装成PS流格式。PS格式(原名叫MPEG-PS)在很多领域已经应用了很长一段时间,特别是在安防、广播电视、影音制作等领域,我们熟知的DVD格式(vob)就是用PS封装的。这篇文章我打算给大家讲解怎么实现一个PS...

2019-11-10 16:12:34

阅读数 114

评论数 0

原创 年轻程序员如何规划自己的职业道路,不断提升能力

我是一个有10多年从业经验的程序员,现在事业还不算成功,还是在一线上做开发,拿着一份稳定、待遇还算不错的收入。从毕业到现在自己事业上经历了很多波折,自己也有些感悟,希望向那些年轻的程序员分享下经验之谈,对后辈提供一些建议。 1. 做软件开发,程序员最关注的一点是如何提高自己的技术能力,其实,答案...

2019-11-04 12:40:04

阅读数 210

评论数 0

原创 Java/PHP/C#等语言如何调用ffmpeg/ffprobe获取音视频文件的信息并输出为JSON格式

我的这篇博文用FFmpeg获取视频流+音频流的信息(编码格式、分辨率、帧率、播放时长...)描述了用C++的方法调用FFmpeg API获得视音频文件的信息,但是如果你用其他语言:比如Java/PHP/C#等解释性语言开发的,虽然也可以通过一些转换好的库接口(比如JavaCV、Jave)间接调用F...

2019-11-02 16:47:01

阅读数 274

评论数 1

原创 使用Librtmp收流,接收H264 + AAC(附代码)

用librtmp接收H264+AAC的例子代码网上参考资源比较少,这份代码来自www.cnblogs.com的某个博客,但是已经找不到原链接了。把代码附上,帮助各位网友在开发时少走些弯路。 ////////////////////////////////////////////////////...

2019-10-28 16:50:05

阅读数 137

评论数 0

原创 使用librtmp接收数据时要注意的问题

(这篇博文的完整代码在我的另一篇博文《使用Librtmp接收H264 + AAC》) librtmp是一个RTMP的开源库,很多地方用它来做推流、拉流。它是RTMPDump开源软件里的一部分,librtmp的下载地址:http://rtmpdump.mplayerhq.hu/,目前最新版是V2....

2019-10-28 13:57:36

阅读数 156

评论数 0

原创 FFmpeg采集摄像头图像并推流(RTSP/RTMP)---开发总结

我的一篇博文《如何用FFmpeg API采集摄像头视频和麦克风音频。。。》已经介绍了如何从视音频采集设备获取数据,并且编码、保存文件到本地。但是,有些应用并不是把流保存成文件,而是需要发送到网络的,比如现在很典型的一种应用场景:把流推送到RTSP、RTMP、HLS服务器,由服务器转发给其他用户观看...

2019-10-28 09:56:24

阅读数 1416

评论数 2

原创 Direct3D初始化失败的原因

有些开发员在用D3D库开发时经常遇到初始化失败的问题,我把几个常见的原因归纳一下: 1. 系统没有安装显卡驱动,刚装的系统使用的是默认的驱动,是不支持D3D加速的,这个务必要检查一下。 2. 没有调用CoInitialize加载COM库,虽然在Win7或以上版本,不调用这一句程序也能正常初始化...

2019-10-26 09:43:59

阅读数 275

评论数 0

原创 用Direct3D实现一个图片浏览器(支持多图层显示、图层拖动、旋转)

Direct3D技术在图像处理、游戏开发等领域用得非常广泛,这里给大家讲解怎么用Direct3D API开发一个简单的图片浏览器。这个图片浏览器的功能有:图像显示,在视图区拖动图层、改变图层大小、图层旋转。先提醒一下,阅读该篇文章的读者最好具有一点D3D的开发基础,因为这篇文章不会讲Directs...

2019-10-25 22:39:29

阅读数 74

评论数 0

原创 使用Direct3D实现如幻灯片的动态图片切换效果

上一篇文章演示了如何用GDI技术实现图片切换效果,这一篇文章给大家讲解怎么用Direct3D API实现图片动画效果。 一、Direct3D概述 Direct3D是Microsoft的DirectX软件开发包的组件,是微软公司开发的3D图形函数库,目前已经发展到D3D11。它的任务是向具有设备...

2019-10-25 12:18:17

阅读数 31

评论数 0

原创 VC++开发的程序在部署时无法运行的问题

有时候,用VC++开发的程序在自己的系统上运行得好好的,但是一旦放到别的WIN系统上运行就失败,一般提示无法加载某个DLL或缺少什么运行时库。这个问题很多Windows的程序员都遇到过,我把常见的几个原因总结出来,希望对各位读者在解决类似问题时有用。 1. 程序依赖了某些动态库,而这些DLL不一...

2019-10-18 09:41:29

阅读数 82

评论数 0

原创 实现如幻灯片般的漂亮的图片切换特效

大家对PowerPoint的幻灯片特效一定不陌生,还有Windows系统的屏保模式所展现的一张张漂亮动态的图片效果(走马灯特效),这些效果十分吸引人,在很多广告播放器中都经常用到。 这一节我就给大家展现一个例子,讲解如何利用GDI/GDI+ API实现图片切换特效的。 先亮一下这个例子的界面...

2019-10-17 21:11:27

阅读数 79

评论数 0

原创 DirectShow播放器(LAVFilter + EVR)开发例子

LAVFilter是一套著名的DirectShow插件,包括Demux,Video Decoder,AudioDecoder,播放文件所需要的几个重要插件都包含进去了,并且支持播放的视音频格式非常广泛,FFmpeg支持的它几乎都支持(因为它底层是调用FFmpeg)。LAVFilter是我们开发Di...

2019-10-17 18:18:10

阅读数 337

评论数 0

原创 如何写Directshow Render Filter并实现视频渲染、叠加字幕和位图功能

在播放器上叠加字幕或位图(Logo)是一个很常见的需求,现在很多播放器都支持该功能。播放器开发目前可基于框架的有很多,比如MPlayer,gstreamer,Directshow,而这篇教程就是讲解怎么在Directshow播放器上叠加字幕和Logo的,如果你不是从事Directshow开发的程序...

2019-10-14 13:59:02

阅读数 109

评论数 0

原创 利用FFmpeg API进行字符叠加和加水印

前面两篇文章详细讲解了怎么叠加字幕和Logo,但是这两篇的例子主要是针对Windows平台的,用到大量Windows API,一些非Windows程序员想要移植到其他平台(如Linux、Android)可能还要费一番功夫。要在其他平台进行叠加字幕和Logo有什么比较通用的方案呢?其实FFmpeg已...

2019-10-14 13:55:12

阅读数 325

评论数 0

原创 怎么在视频上叠加字幕和Logo--技术实现2

上一篇博文介绍了渲染时叠加字幕的技术实现方法,而这一篇给大家讲解怎么用修改视频像素的方法叠加字幕和Logo。下面我把叠加字幕和Logo都统称为叠加OSD。 图像有分YUV和RGB格式,每个像素都有一个坐标和地址,我们要在图像指定地方叠加OSD,其实就是修改这些地方某些像素的像素值。叠加字幕原理简...

2019-10-14 11:50:47

阅读数 263

评论数 0

原创 怎么在视频上叠加字幕和Logo--技术实现1

这篇文章我给大家讲解的这种字幕叠加和Logo叠加方法是在渲染视频的时候“画“上去的,其实是通过某种API将OSD和Logo绘制到显卡缓存,然后提交缓存到屏幕。我们知道渲染视频有几种常用的API:GDI,DirectDraw,D3D,OpenGL,SDL,其中SDL库是对前面几种API在不同平台上的...

2019-10-14 00:02:14

阅读数 300

评论数 0

原创 怎么在视频上叠加字幕和Logo--开题篇

视频叠加字幕和图标(在某些地方也叫叠加OSD)在很多场合都很有用,比如电视台在直播的节目上叠加台标;美女主播在直播时在视频上加上自己喜爱的饰物或大头贴以增加娱乐的气氛;电影播放时在视频下方显示中英文字幕。正因为叠加字幕和图标的技术用得比较广,在我们日常工作中可能经常被用到,所以我们作为程序员有必要...

2019-10-14 00:01:52

阅读数 118

评论数 0

原创 查看视频文件格式信息的工具--MediaInfo

MediaInfo是一个用来分析视频和音频文件编码和内容信息的工具。免费开源,支持众多视频和音频文件格式,具有树状结构、文本、XML、网页等多种查看方式,信息可导出为文本,CSV,HTML等文件。该工具非常好用,可以验证保存的视频文件的格式是否合法,可以帮助开发者了解文件的详细信息。下面是该工具的...

2019-01-31 11:49:49

阅读数 2675

评论数 0

原创 VLC接收RTP流的SDP文件写法

接收RTP流我们经常用VLC来进行测试,但是对于RTP,如果直接在VLC的网络协议框输入RTP地址来播放是播放不了的,如下图,会提示"SDP required"的错误信息。 因为VLC打开RTP流需要一个SDP文件,SDP文件定义了流的一些信息比如视频编码格式,帧率,...

2019-01-31 11:28:28

阅读数 1460

评论数 0

原创 使用FFmpeg命令行进行UDP、RTP推流(H264、TS),ffplay接收

我们在开发网络程序时经常用到UDP或RTP来发送和接收流媒体,而开发程序完毕需要搭建一个环境测试,这时候可能你需要一个推流端或接收端。对于推流端,我们可以借助FFmpeg工具轻松完成该功能,只需要敲一条命令后就可以实现发流,并且支持多种网络协议(UDP/RTP/RTSP/RTMP)。而接收端我们可...

2019-01-31 10:43:56

阅读数 8929

评论数 4

原创 如何发送和接收RTP封包的H264,用FFmpeg解码

这篇文章给大家介绍怎么打包H264分片到RTP包,并且实现一个播放程序演示接收RTP包和用FFmpeg解码。为了让大家更了解H264打包成RTP的细节,有必要罗嗦一下向大家介绍一些相关的基础知识,下面分三节介绍,其中前面两节是基础知识,第三节重点讲解怎么实现RTP包的发送和接收,以及怎么用FFmp...

2019-01-16 18:10:06

阅读数 1183

评论数 2

原创 如何发送和接收RTP包,用FFmpeg分离、解码

RTP是网络上进行流媒体传输的一种常用协议,现在有很多封装RTP协议的开源库,比如:ortp, jrtplib,而其中最有名的要数jrtplib,本文给大家演示怎么用jrtplib开发一个带RTP发送和接收功能的应用程序,但这篇文章不会讲述jrtplib的基本用法知识,如果你要了解更多关于这个库的...

2019-01-16 12:07:38

阅读数 2209

评论数 3

原创 如何使用jrtplib进行RTP发送和接收

RTP 协议是目前流媒体实时传输用得最广的一种协议,大家在开发用到RTP协议的程序时,可能会考虑使用一些开放源代码的RTP库,比如大名鼎鼎的JRTPLIB。 JRTPLIB是一个面向对象的RTP库,它完全遵循RFC 1889设计,在很多场合下是一个非常不错的选择,JRTPLIB 是一个用C++语言...

2019-01-15 18:41:32

阅读数 864

评论数 1

原创 用FFmpeg实现的RTMP接收类

      现在很多直播都用到RTMP来传输,而接收RTMP用FFmpeg比较常见(当然也有用其他库的)。FFmpeg对RTMP接收有比较完善实现了,API使用方法也很简单,大多数流程跟文件流处理一样,但是一些区别的地方。下面大概说一下用FFmpeg怎么实现RTMP接收功能,后面再附上封装类的代码...

2019-01-10 10:36:23

阅读数 1161

评论数 0

原创 如何枚举系统的视音频采集设备

    用Directshow SDK很容易实现该功能,但是开发者必须了解Directshow SDK的一些基础知识,对于不了解Directshow的开发员就有点头疼了。为了更方便他们开发,我封装了一个动态库,可以枚举系统的视音频采集设备(仅支持Windows系统),动态库使用非常简单,因为只有一...

2019-01-09 18:34:56

阅读数 559

评论数 1

原创 Android平台使用MediaCodec压缩摄像头图像时设置码率无效或码率偏差很大的问题解决

Android从4.1系统开始,引进了MediaCodec API,支持对图像进行硬编码,但很多读者刚开始使用这套API遇到很多问题,特别是不知道如何正确设置编码器的参数。设置MediaCodec编码器涉及如下几个重要的参数:码率模式(固定码率、可变码率),码率,帧率、I帧间隔,H264的Prof...

2018-07-21 16:43:27

阅读数 4377

评论数 0

原创 Android平台采集摄像头图像和使用MediaCodec硬编码的例子详解

很多Android系统上的应用需要采集摄像头图像,并把图像编码成某种格式(比如H264),保存成文件或发送到网络。虽然有FFmpeg可以实现编码的功能,但是使用软编码一方面比较耗电,另一方面,对于CPU性能不是太强的ARM设备来说,软件编码肯定很占CPU资源,有些旧的机器甚至一编码就卡机。从And...

2018-07-21 16:20:10

阅读数 2106

评论数 0

转载 ffmpeg,ffplay在windows下的编译

      由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似Linux的编译环境,将FFMpeg编译为二进...

2018-03-03 12:05:01

阅读数 1276

评论数 0

转载 RTSP - RTP over TCP

原文链接:http://www.cnblogs.com/lidabo/p/4483497.htmlNormally, RTSP provide streaming over UDP. By nature, UDP is a better choice as it provides robust s...

2018-02-26 18:50:23

阅读数 117

评论数 1

转载 rtsp摘要认证协议流程

1. rtsp摘要认证协议流程RTSP协议,全称Real Time Streaming Protocol,是应用层的协议,它主要实现的功能是传输并控制具有实时特性的媒体流,如音频(Audio)和视频(Video)。Rtsp认证主要分为两种:基本认证(basic authentication)和摘要...

2018-02-26 10:41:12

阅读数 875

评论数 0

转载 RTSP常用命令解释

1. RTSP的常用命令与解释       其中C是客户端,S是服务端。1.1  OPTIONS       C->S:       OPTION request //询问S有哪些方法可用       S->C:       OPTION response //S回应信...

2018-02-26 10:03:09

阅读数 974

评论数 0

转载 关于RTP时间戳及多媒体通信同步的问题

原文链接:http://www.rosoo.net/a/201101/10776.html   多媒体通信同步方法,主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同...

2018-02-26 09:43:11

阅读数 298

评论数 0

原创 如何用Directshow采集摄像头图像

      很多人接触Directshow都是从采集摄像头开始的,因为用Directshow做采集是Windows平台上最通用、最成熟的做法。 现在市场上大多数的摄像头和采集卡在Windows系统上的驱动基于WDM架构,微软定义了采集卡设备与上层程序间的通信驱动接口,这已经成为一种标准,因此,控制...

2018-02-25 17:50:00

阅读数 4212

评论数 11

原创 一个虚拟摄像头Filter(Virtual Cam Capture Filter)

当我们运行一些多媒体程序或者OpenCV的例子的时候,经常要用摄像头作为输入源,但是并不是每个用户电脑上都装了USB摄像头,那怎么办呢?可以在你系统上安装一个虚拟摄像头的Directshow插件,那么你系统上就多了一个“摄像头”了,但是实际上它不是物理摄像头,只是模拟摄像头设备可以采集图像。我的资...

2018-02-25 14:54:31

阅读数 10084

评论数 12

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