- 博客(57)
- 资源 (49)
- 收藏
- 关注
原创 FFmpeg对颠倒的RGB图像翻转显示
很多使用FFmpeg做解码的用户都可能遇到过一个问题,他们对解码出来的图像转为RGB格式之后显示图像是颠倒的。有些用户对其原因不大明白,其实原因跟RGB图像的存储方式有关。RGB图像即RGB位图有两种存储方式:一种是从上往下扫描,另一种是从下往上扫描。从上扫描的图像第一行的首地址即为图像Buffer的起始地址,而从下往上扫描的图像第一行的首地址为:buffer_data+ linesize*(h...
2019-11-29 10:12:14
2413
原创 使用opencv调用摄像头然后录制视频和保存文件
用 OpenCV 开发经常用到摄像头,从Camera获取图像后用OpenCV的算法进行处理,但是一般我们处理完图像之后,还需要将视频保存下来,比如保存成avi、mp4等格式。怎么保存呢?其实OpenCV有一个类cv::VideoWriter专门用来把视频保存到文件的,但VideoWriter不仅仅是将原始图像流保存到文件,它还可以对视频编码,然后以某种封装格式(比如AVI/MP4)将视频流写到文...
2019-11-21 14:00:24
6024
2
转载 iplimage*转换成mat/mat转iplimage*
IplImage*转MatIplImage * ipl = ...;cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data.Mat转IplImage *方法一:Mat mat, mat1; // mat1是临时变量IplImage * img;mat...
2019-11-19 20:30:58
2073
原创 将OpenCV输出的图像嵌入显示到子窗口控件中(支持Windows、Linux)
OpenCV用来做视频处理很方便,能用窗口显示处理后的图像,但是它默认显示图像的窗口是弹出式的,而我们很多情况下需要将图像显示到自己软件的窗口控件中。这应该怎么做呢?上网搜过一些方案,也试了一下,最后自己优化了一下,把其中几种比较靠谱的方法分享给大家。第一种,使用Cvvimage类 + GDI方式显示图像。CvvImage类有个函数DrawPicToHDC (IplImage *img, ...
2019-11-19 20:18:56
3499
原创 获取视频文件格式信息的工具和方法
如果我们需要知道一个视音频文件的信息,包括封装格式、播放时长、码率、视频编码格式、音频编码格式、视频分辨率、帧率、音频属性等,有什么方法呢?下面我将常用的方法汇总一下:第一种,使用MediaInfo工具 。MediaInfo是一个用来分析视频和音频文件编码和内容信息的工具。免费开源,支持众多视频和音频文件格式,具有树状结构、文本、XML、网页等多种查看方式,信息可导出为文本,CSV,HTM...
2019-11-18 08:31:02
4951
原创 解码H264视频出现花屏或马赛克的问题
常见的引起花屏或马赛克问题的原因是因为丢包,这时候,开发者应该检查自己的接收缓冲区是否太小,还有打印RTP的SeqNumber看有没有不连续或乱序的问题,如果是用UDP传输,则RTP包容易发生乱序,需要开发者对包按顺序进行重组再解码。我说的花屏问题的情况是假设网络没有数据丢包也没有乱序的情况,假设输入的网络包是正常的。那问题出在哪里?是在程序去RTP头、拿到Payload数据之后的处理流程有问...
2019-11-10 22:15:11
17798
1
原创 国标MPEG-PS实时流播放器开发(附例子)
公安部制定的GBT 28181标准广泛应用于安防领域,这个标准规定了传输的视音频数据要封装成PS流格式。PS格式(原名叫MPEG-PS)在很多领域已经应用了很长一段时间,特别是在安防、广播电视、影音制作等领域,我们熟知的DVD格式(vob)就是用PS封装的。这篇文章我打算给大家讲解怎么实现一个PS流的实时流播放器,通过这篇文章学习,大家就知道一个实时流播放器应该如何设计、如何对PS流做处理等。...
2019-11-10 16:12:34
6651
6
原创 年轻程序员如何规划自己的职业道路,不断提升能力
我是一个有10多年从业经验的程序员,现在事业还不算成功,还是在一线上做开发,拿着一份稳定、待遇还算不错的收入。从毕业到现在自己事业上经历了很多波折,自己也有些感悟,希望向那些年轻的程序员分享下经验之谈,对后辈提供一些建议。1. 做软件开发,程序员最关注的一点是如何提高自己的技术能力,其实,答案概括起来就是基础+实践,这里我要强调的是基础。很多入行的人忽略了一点:大学里学的专业课程其实对以后的工...
2019-11-04 12:40:04
947
原创 Java/PHP/C#等语言如何调用ffmpeg/ffprobe获取音视频文件的信息并输出为JSON格式
我的这篇博文用FFmpeg获取视频流+音频流的信息(编码格式、分辨率、帧率、播放时长...)描述了用C++的方法调用FFmpeg API获得视音频文件的信息,但是如果你用其他语言:比如Java/PHP/C#等解释性语言开发的,虽然也可以通过一些转换好的库接口(比如JavaCV、Jave)间接调用FFmpeg,但是调用API的形式毕竟不大方便,特别是对FFmpeg API不熟悉的朋友。其实,通过命令...
2019-11-02 16:47:01
3633
1
原创 使用Librtmp收流,接收H264 + AAC(附代码)
用librtmp接收H264+AAC的例子代码网上参考资源比较少,这份代码来自www.cnblogs.com的某个博客,但是已经找不到原链接了。把代码附上,帮助各位网友在开发时少走些弯路。//////////////////////////////////////////////////////////#include "librtmp/rtmp_sys.h"#include "lib...
2019-10-28 16:50:05
1468
1
原创 使用librtmp接收数据时要注意的问题
(这篇博文的完整代码在我的另一篇博文《使用Librtmp接收H264 + AAC》)librtmp是一个RTMP的开源库,很多地方用它来做推流、拉流。它是RTMPDump开源软件里的一部分,librtmp的下载地址:http://rtmpdump.mplayerhq.hu/,目前最新版是V2.3。librtmp如何使用在很多博客已经有介绍,雷神的博客也有几个相关的例子介绍其使用,这里就不多说,...
2019-10-28 13:57:36
1849
2
原创 FFmpeg采集摄像头图像并推流(RTSP/RTMP)---开发总结
我的一篇博文《如何用FFmpeg API采集摄像头视频和麦克风音频。。。》已经介绍了如何从视音频采集设备获取数据,并且编码、保存文件到本地。但是,有些应用并不是把流保存成文件,而是需要发送到网络的,比如现在很典型的一种应用场景:把流推送到RTSP、RTMP、HLS服务器,由服务器转发给其他用户观看。很多开发者也是调用FFmpeg API来实现推流的,用FFmpeg 做一个推流器很简单,调用流程跟输...
2019-10-28 09:56:24
33703
12
原创 Direct3D初始化失败的原因
有些开发员在用D3D库开发时经常遇到初始化失败的问题,我把几个常见的原因归纳一下:1. 系统没有安装显卡驱动,刚装的系统使用的是默认的驱动,是不支持D3D加速的,这个务必要检查一下。2. 没有调用CoInitialize加载COM库,虽然在Win7或以上版本,不调用这一句程序也能正常初始化D3D,但是如果在WinXP或旧版系统,就不一定了。所以最好还是在程序启动的时候调用CoInitial...
2019-10-26 09:43:59
13781
原创 用Direct3D实现一个图片浏览器(支持多图层显示、图层拖动、旋转)
Direct3D技术在图像处理、游戏开发等领域用得非常广泛,这里给大家讲解怎么用Direct3D API开发一个简单的图片浏览器。这个图片浏览器的功能有:图像显示,在视图区拖动图层、改变图层大小、图层旋转。先提醒一下,阅读该篇文章的读者最好具有一点D3D的开发基础,因为这篇文章不会讲Directshow的基础知识。如果你完全没有学过Direct3D,建议先学习一下一些Direct3D的入门教程(比...
2019-10-25 22:39:29
1635
原创 使用Direct3D实现如幻灯片的动态图片切换效果
上一篇文章演示了如何用GDI技术实现图片切换效果,这一篇文章给大家讲解怎么用Direct3D API实现图片动画效果。一、Direct3D概述Direct3D是Microsoft的DirectX软件开发包的组件,是微软公司开发的3D图形函数库,目前已经发展到D3D11。它的任务是向具有设备无关性的三维视频显示设备提供设备相关的访问。简单地说,Direct3D是三维硬件的一个绘图接口。Dir...
2019-10-25 12:18:17
1212
原创 VC++开发的程序在部署时无法运行的问题
有时候,用VC++开发的程序在自己的系统上运行得好好的,但是一旦放到别的WIN系统上运行就失败,一般提示无法加载某个DLL或缺少什么运行时库。这个问题很多Windows的程序员都遇到过,我把常见的几个原因总结出来,希望对各位读者在解决类似问题时有用。1. 程序依赖了某些动态库,而这些DLL不一定在其他系统中已安装,这是最常见的一个原因。如果你的程序是用MFC开发的,要特别注意一个工程设置的问题...
2019-10-18 09:41:29
1610
原创 实现如幻灯片般的漂亮的图片切换特效
大家对PowerPoint的幻灯片特效一定不陌生,还有Windows系统的屏保模式所展现的一张张漂亮动态的图片效果(走马灯特效),这些效果十分吸引人,在很多广告播放器中都经常用到。这一节我就给大家展现一个例子,讲解如何利用GDI/GDI+ API实现图片切换特效的。 先亮一下这个例子的界面: 这个例子部分代码参考了电子工业出版社出版的《Visual C++...
2019-10-17 21:11:27
1187
原创 DirectShow播放器(LAVFilter + EVR)开发例子
LAVFilter是一套著名的DirectShow插件,包括Demux,Video Decoder,AudioDecoder,播放文件所需要的几个重要插件都包含进去了,并且支持播放的视音频格式非常广泛,FFmpeg支持的它几乎都支持(因为它底层是调用FFmpeg)。LAVFilter是我们开发Directshow播放器必不可少的插件,值的一提的是它既支持软解又支持硬解,功能非常强大。在Vista以...
2019-10-17 18:18:10
3213
原创 如何写Directshow Render Filter并实现视频渲染、叠加字幕和位图功能
在播放器上叠加字幕或位图(Logo)是一个很常见的需求,现在很多播放器都支持该功能。播放器开发目前可基于框架的有很多,比如MPlayer,gstreamer,Directshow,而这篇教程就是讲解怎么在Directshow播放器上叠加字幕和Logo的,如果你不是从事Directshow开发的程序员或根本不熟悉Directshow,那可以绕路了。叠加字幕或图标一般分两种应用:一种是在显...
2019-10-14 13:59:02
2007
原创 利用FFmpeg API进行字符叠加和加水印
前面两篇文章详细讲解了怎么叠加字幕和Logo,但是这两篇的例子主要是针对Windows平台的,用到大量Windows API,一些非Windows程序员想要移植到其他平台(如Linux、Android)可能还要费一番功夫。要在其他平台进行叠加字幕和Logo有什么比较通用的方案呢?其实FFmpeg已经集成了一个加水印滤镜功能,用跨平台的FFmpeg能够帮助我们轻松实现该功能。废话少说,先看看加水...
2019-10-14 13:55:12
4980
1
原创 怎么在视频上叠加字幕和Logo--技术实现2
上一篇博文介绍了渲染时叠加字幕的技术实现方法,而这一篇给大家讲解怎么用修改视频像素的方法叠加字幕和Logo。下面我把叠加字幕和Logo都统称为叠加OSD。图像有分YUV和RGB格式,每个像素都有一个坐标和地址,我们要在图像指定地方叠加OSD,其实就是修改这些地方某些像素的像素值。叠加字幕原理简单描述就是:在视频图像上指定位置的像素值用OSD前景的颜色值代替。什么是OSD前景颜色?对字幕来说,前...
2019-10-14 11:50:47
3744
1
原创 怎么在视频上叠加字幕和Logo--技术实现1
这篇文章我给大家讲解的这种字幕叠加和Logo叠加方法是在渲染视频的时候“画“上去的,其实是通过某种API将OSD和Logo绘制到显卡缓存,然后提交缓存到屏幕。我们知道渲染视频有几种常用的API:GDI,DirectDraw,D3D,OpenGL,SDL,其中SDL库是对前面几种API在不同平台上的封装,是一个大集合。我给大家演示的例子是针对Windows平台的,一般在Windows平台上我们会用...
2019-10-14 00:02:14
3540
原创 怎么在视频上叠加字幕和Logo--开题篇
视频叠加字幕和图标(在某些地方也叫叠加OSD)在很多场合都很有用,比如电视台在直播的节目上叠加台标;美女主播在直播时在视频上加上自己喜爱的饰物或大头贴以增加娱乐的气氛;电影播放时在视频下方显示中英文字幕。正因为叠加字幕和图标的技术用得比较广,在我们日常工作中可能经常被用到,所以我们作为程序员有必要掌握这种技术。一般地,视频制作、处理和发布的流程为:采集、编码、保存为文件,然后分享,而...
2019-10-14 00:01:52
2404
1
原创 查看视频文件格式信息的工具--MediaInfo
MediaInfo是一个用来分析视频和音频文件编码和内容信息的工具。免费开源,支持众多视频和音频文件格式,具有树状结构、文本、XML、网页等多种查看方式,信息可导出为文本,CSV,HTML等文件。该工具非常好用,可以验证保存的视频文件的格式是否合法,可以帮助开发者了解文件的详细信息。下面是该工具的一些截图:使用方法:这个工具是集成到Windows资源管理器的,要查看一个媒体文件...
2019-01-31 11:49:49
15664
原创 VLC接收RTP流的SDP文件写法
接收RTP流我们经常用VLC来进行测试,但是对于RTP,如果直接在VLC的网络协议框输入RTP地址来播放是播放不了的,如下图,会提示"SDP required"的错误信息。因为VLC打开RTP流需要一个SDP文件,SDP文件定义了流的一些信息比如视频编码格式,帧率,接收端的IP、端口号等。关于SDP文件的格式网上有详细的介绍,这里就不作详细说明了。反正,打开一个流,播放器需要根据SDP...
2019-01-31 11:28:28
9230
1
原创 使用FFmpeg命令行进行UDP、RTP推流(H264、TS),ffplay接收
我们在开发网络程序时经常用到UDP或RTP来发送和接收流媒体,而开发程序完毕需要搭建一个环境测试,这时候可能你需要一个推流端或接收端。对于推流端,我们可以借助FFmpeg工具轻松完成该功能,只需要敲一条命令后就可以实现发流,并且支持多种网络协议(UDP/RTP/RTSP/RTMP)。而接收端我们可以使用ffplay,这个程序也是在FFmpeg工具包的Bin目录里面。大家可以根据自己需要使用这两个工...
2019-01-31 10:43:56
228889
8
原创 如何发送和接收RTP封包的H264,用FFmpeg解码
这篇文章给大家介绍怎么打包H264分片到RTP包,并且实现一个播放程序演示接收RTP包和用FFmpeg解码。为了让大家更了解H264打包成RTP的细节,有必要罗嗦一下向大家介绍一些相关的基础知识,下面分三节介绍,其中前面两节是基础知识,第三节重点讲解怎么实现RTP包的发送和接收,以及怎么用FFmpeg解码显示。一、H264的组成结构H264以NALU(NALunit)为单位来支持编码数据在...
2019-01-16 18:10:06
11980
3
原创 如何发送和接收RTP包,用FFmpeg分离、解码
RTP是网络上进行流媒体传输的一种常用协议,现在有很多封装RTP协议的开源库,比如:ortp, jrtplib,而其中最有名的要数jrtplib,本文给大家演示怎么用jrtplib开发一个带RTP发送和接收功能的应用程序,但这篇文章不会讲述jrtplib的基本用法知识,如果你要了解更多关于这个库的用法,可以参考这篇文章:http://www.cnblogs.com/yuweifeng/p/755...
2019-01-16 12:07:38
13651
5
原创 如何使用jrtplib进行RTP发送和接收
RTP 协议是目前流媒体实时传输用得最广的一种协议,大家在开发用到RTP协议的程序时,可能会考虑使用一些开放源代码的RTP库,比如大名鼎鼎的JRTPLIB。 JRTPLIB是一个面向对象的RTP库,它完全遵循RFC 1889设计,在很多场合下是一个非常不错的选择,JRTPLIB 是一个用C++语言实现的RTP库,目前已经可以运行在Windows、Linux、FreeBSD、Solaris、Unix...
2019-01-15 18:41:32
3755
1
原创 用FFmpeg实现的RTMP接收类
现在很多直播都用到RTMP来传输,而接收RTMP用FFmpeg比较常见(当然也有用其他库的)。FFmpeg对RTMP接收有比较完善实现了,API使用方法也很简单,大多数流程跟文件流处理一样,但是一些区别的地方。下面大概说一下用FFmpeg怎么实现RTMP接收功能,后面再附上封装类的代码。1. 初始化和打开流。 这是第一步要做的工作,打开了流后才能往下接收数据,打开流需要调用F...
2019-01-10 10:36:23
3712
原创 如何枚举系统的视音频采集设备
用Directshow SDK很容易实现该功能,但是开发者必须了解Directshow SDK的一些基础知识,对于不了解Directshow的开发员就有点头疼了。为了更方便他们开发,我封装了一个动态库,可以枚举系统的视音频采集设备(仅支持Windows系统),动态库使用非常简单,因为只有一个接口://枚举指定类型的所有采集设备的名称ENUMDEVICE_API HRESULT Enu...
2019-01-09 18:34:56
1832
1
原创 Android平台使用MediaCodec压缩摄像头图像时设置码率无效或码率偏差很大的问题解决
Android从4.1系统开始,引进了MediaCodec API,支持对图像进行硬编码,但很多读者刚开始使用这套API遇到很多问题,特别是不知道如何正确设置编码器的参数。设置MediaCodec编码器涉及如下几个重要的参数:码率模式(固定码率、可变码率),码率,帧率、I帧间隔,H264的Profile和Level,下面是一段初始化参数的代码: public AvcEncode(int wi...
2018-07-21 16:43:27
17674
5
原创 Android平台采集摄像头图像和使用MediaCodec硬编码的例子详解
很多Android系统上的应用需要采集摄像头图像,并把图像编码成某种格式(比如H264),保存成文件或发送到网络。虽然有FFmpeg可以实现编码的功能,但是使用软编码一方面比较耗电,另一方面,对于CPU性能不是太强的ARM设备来说,软件编码肯定很占CPU资源,有些旧的机器甚至一编码就卡机。从Android 4.1系统起,引进了MediaCodec API,可以实现硬编码的功能,这解决了广大程序员编...
2018-07-21 16:20:10
4803
转载 ffmpeg,ffplay在windows下的编译
由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似Linux的编译环境,将FFMpeg编译为二进制库以后,再利用其进行进一步开发。 MSVC++并不严格的遵循C标准,所以整个编译过程必须使用MSy...
2018-03-03 12:05:01
3475
转载 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 streaming capability for media. However, it is unlik...
2018-02-26 18:50:23
354
1
转载 rtsp摘要认证协议流程
1. rtsp摘要认证协议流程RTSP协议,全称Real Time Streaming Protocol,是应用层的协议,它主要实现的功能是传输并控制具有实时特性的媒体流,如音频(Audio)和视频(Video)。Rtsp认证主要分为两种:基本认证(basic authentication)和摘要认证( digest authentication )。基本认证是http 1.0提出的认证方案,其消...
2018-02-26 10:41:12
3036
1
转载 RTSP常用命令解释
1. RTSP的常用命令与解释 其中C是客户端,S是服务端。1.1 OPTIONS C->S: OPTION request //询问S有哪些方法可用 S->C: OPTION response //S回应信息中包括提供的所有可用方法 使用举例: 客户端到服务端: OPTIONS rtsp://218.2...
2018-02-26 10:03:09
4007
转载 关于RTP时间戳及多媒体通信同步的问题
原文链接:http://www.rosoo.net/a/201101/10776.html 多媒体通信同步方法,主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,能实现RTP媒体间的同步吗?DirectShow时间戳和RTP时间戳的区别,MPEG...
2018-02-26 09:43:11
1021
原创 如何用Directshow采集摄像头图像
很多人接触Directshow都是从采集摄像头开始的,因为用Directshow做采集是Windows平台上最通用、最成熟的做法。 现在市场上大多数的摄像头和采集卡在Windows系统上的驱动基于WDM架构,微软定义了采集卡设备与上层程序间的通信驱动接口,这已经成为一种标准,因此,控制摄像头和采集图像基本都通过Directshow框架来实现。VLC,FFmpeg等软件支持采集摄像头图像...
2018-02-25 17:50:00
14491
10
原创 一个虚拟摄像头Filter(Virtual Cam Capture Filter)
当我们运行一些多媒体程序或者OpenCV的例子的时候,经常要用摄像头作为输入源,但是并不是每个用户电脑上都装了USB摄像头,那怎么办呢?可以在你系统上安装一个虚拟摄像头的Directshow插件,那么你系统上就多了一个“摄像头”了,但是实际上它不是物理摄像头,只是模拟摄像头设备可以采集图像。我的资源里提供了一个虚拟摄像头的代码,大家可以试用一下,下载地址:http://download.csd...
2018-02-25 14:54:31
28482
12
代码例子:如何用FFmpeg读取内存的PS/TS流,分离出视频和音频
2018-12-08
Android采集摄像头图像--MediaCodec编码
2018-07-21
FFmpeg + Directsound实现的音频播放器,只支持Windows系统
2018-02-25
一个基于FFmpeg实现的音频播放器,只支持Windows系统
2018-02-24
基于Live555的RTSP服务器V1.2,视频源为摄像头
2018-02-18
使用FFmpeg采集摄像头图像和麦克风音频
2018-02-15
VC的虚拟列表控件的用法
2018-02-08
VirtualCamConfig.rar
2019-12-24
Android摄像头获取图像_FFmpeg软编
2019-11-25
OpenCV输出的图像嵌入显示到控件窗口中--TestCVShow(GDI && SDL).zip
2019-11-19
MPEG-PS/TS流实时流播放器例子--PsAndTsPlayer_V1.3.zip
2019-11-12
FFmpeg API读取视音频文件信息的一个工具----MediaFileInfoList.zip
2019-10-27
使用Direct3D技术实现的一个图片浏览器---ImageTex_2.1.zip
2019-10-24
Directshow播放文件封装类---VideoPlayGraph(evr).zip
2019-10-17
SlideShow.zip--实现图片切换特效(如幻灯片效果)
2019-10-12
FFmpeg的加水印滤镜例子(有图形界面) ---ffmpeg_filter_mix_logo
2019-10-12
在视频上叠加OSD文字和Logo图标---SubtitleMixVideo
2019-10-12
在视频上叠加OSD文字和Logo图标--ShowVideoWithOSD
2019-10-12
Directshow渲染器Filter上叠加字幕和Logo--FileStreamDecode(Directshow)
2019-10-12
虚拟摄像头Filter代码--VirtualCamFilter_1.2
2019-06-06
使用jrtplib发送和接收的例子--PlayStream V1.2
2019-01-29
使用jrtplib发送和接收网络流(支持解码、播放)
2019-01-15
使用RTP协议发送和接收H264的例子(支持解码、播放)
2019-01-15
jrtplib-3.11.1 实现RTP收发功能的静态库
2019-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人