opencv mp4格式3 怎么打开mp4 ffdshow

67866人阅读
libRTMP(25)
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:RTMP是非常重要的。使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。目前使用RTMP技术的电视台有如下几个:CNTV部分点播内容中国教育电视台1直播(rtmp:///live/newcetv1)[失效]中国教育电视台3直播(rtmp:///live/newcetv3)[失效]香港电视台直播(rtmp://live.hkstv./live/hks)北广传媒移动电视直播(rtmp://www.:8000/live/live1)中石化网络电视台直播(rtmp://:1935/live/sinopec)[暂时无法访问]东莞电视台(rtmp:///dgrtv1/mp4:b1)绍兴新闻综合(rtmp:///live/new)使用RTMP技术社交直播平台:六间房9158新浪秀场可以这样概括一下:凡是想实现“无插件直播”的流媒体系统,都会使用RTMP。1.RTMP在Flash流媒体系统中的使用RTMP被Adobe开发出来,就是用于在其Flash平台的流媒体系统之间传递数据的。因此想要了解RTMP,需要首先了解Flash流媒体系统。最简单的Flash流媒体系统由两部分组成:客户端:Flash Player(一般只有这一种)注:支持RTMP的基于Flash的播放器除了可以自己开发之外,还有现成的,比如说,等等。服务器端:1.Flash Media Server(FMS):Adobe官方的流媒体服务器。毕竟是商业服务器,其性能应该是最强的,配置是最简单的,但是价格不菲,推荐作为入门学习使用。个人下载使用是不用花钱的。服务器端编程使用ActionScript语言。官网:可参考教程:1.。这个教程讲的是FMS开发技术,是网友翻译的中文版,学习起来比较方便。这里有英文原版,内容更全:注:FMS开发技术方面使用到了ActionScript,可以先找相关教程做一个初步的了解。主要使用Flash CSx进行开发。2.。这个教程主要是讲述FMS配置的,第2部分涉及到集群,负载均衡等内容,挺高端的。2.Red5:开源流媒体服务器,基于Java的。曾经使用过,感觉也还算比较方便,如果商业应用,又买不起昂贵的FMS的话,使用也不错。服务器端编程使用Java语言。官网:3.还有其他服务器,但目前我还没接触过2.RTMPdump(libRTMP)的使用这一章就要开始学习RTMP协议的处理了。可以使用RTMPdump(libRTMP)进行学习。这是一个C++的开源工程。主要作用是下载RTMP流媒体。首先可以了解一下其使用方法:官网:3.RTMPdump(libRTMP)源代码分析这一章开始学习RTMPdump(libRTMP)的源代码。学习它之前需要有Socket编程的基础。首先学习《》中文翻译版:英文原版:我对其部分内容做的简单分析:其次从协议规范中,总结出RTMP协议建立连接的流程:然后,下载一个windows下可以编译通过的RTMPdump工程(这个工程是很难得!):(当然,linux下会方便很多,因为RTMPdump就是在linux下开发完成的)最后,通过调试工程,就可以基本掌握RTMP协议了,我写了一些分析RTMPdump(libRTMP)源代码的文章:4.相关示例代码下面的工程包含了和RTMP相关的示例代码。(1)libRTMP单独进行流媒体处理的例子simplest libRTMP example最简单的基于librtmp的示例简介本工程包含了LibRTMP的使用示例,包含如下子工程:simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。simplest_librtmp_send_flv: 将FLV格式的视音频文件使用RTMP推送至RTMP流媒体服务器。simplest_librtmp_send264: 将内存中的H.264数据推送至RTMP流媒体服务器。&文章项目主页SourceForge:Github:开源中国:(2)FFmpeg和libRTMP结合进行流媒体处理的例子simplest ffmpeg streamer最简单的基于FFmpeg的推流器(推送RTMP)简介本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。是使用FFmpeg进行流媒体推送最简单的教程。文章项目主页SourceForge:Github:开源中国:(3)使用Adobe Flash中的ActionScript(而非C/C++)处理的例子Simplest flashmedia example&最简单的基于Flash的流媒体示例简介本程序是一个Flash流媒体示例的合集。其中包含了使用Actionscript编写的推流器和播放器,以及网页播放器。本工程包含如下基于Flash技术的流媒体的例子:simplest_as3_rtmp_player: &最简单的RTMP播放器(基于ActionScript)simplest_as3_rtmp_streamer:最简单的RTMP推流器(基于ActionScript)rtmp_sample_player_adobe: 从Adobe Flash Media Sever提取出来的测试播放器rtmp_sample_player_wowza: 从Wowza服务器中提取出来的测试播放器rtmp_sample_player_flowplayer: 基于FlowPlayer的RTMP/HTTP播放器(添加RTMP plugin)rtmp_sample_player_videojs: 基于VideoJS的RTMP/HTTP播放器rtmp_sample_player_jwplayer: 基于JWplayer的RTMP/HTTP播放器hls_sample_player_flowplayer: 基于FlowPlayer的HLS播放器(添加HLS plugin)hls_video_player_html5: 基于HTML5的HLS/HTTP播放器activex_vlc_player: &基于VLC的ActiveX控件的播放器文章项目主页SourceForge:Github:开源中国:5.相关应用libRTMP作用还是很大的,除了可以保存RTMP流媒体之外,还可以发送RTMP流媒体等等。它可以整合到FFMPEG中,下面几篇文章简述了它的应用:(以后更新其他方面......)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7813253次
积分:57427
积分:57427
排名:第45名
原创:373篇
转载:157篇
译文:28篇
评论:6606条
姓名:雷霄骅
网名:leixiaohua1020
中国传媒大学-广播电视工程
中国传媒大学-数字电视技术
中国传媒大学-数字视频技术
[注1:QQ消息较多,难以一一回复,见谅]
[注2:CSDN私信功能使用很少,有问题可以直接在博客评论处留言]
主要从事与广播电视有关的视音频技术的研究。包括视音频质量评价,视音频编解码,流媒体,媒资检索等。
【SourceForge】【主】
【Github】
【开源中国】
欢迎转载本博客原创或翻译文章,但请声明出处,谢谢!
本QQ群旨在为视音频技术同行方便交流提供一个平台。无论是实验室,电视台,互联网视频,安防,播放器,媒体中心等等都可以加入讨论。欢迎新手和大牛,多交流可以更快的进步~1号群【2000人】:2号群【1000人】:通知:1号群成员容量为2000人,目前已经接近上限,为了给新成员入群讨论的机会,会定期清理不发言的用户,希望大家理解,谢谢支持! 2号群为新创建的群,欢迎加入~ 针对近期出现的各种问题,为保障本群和谐发展制定了《群规》,新成员入群后请阅读位于群公告中的《群规》了解本群的规则
文章:135篇
阅读:3597852
文章:91篇
阅读:921305
文章:41篇
阅读:339928使用ffdshow解码的步骤
一,ffdshow介绍
fdshow是一套免费的编解码,可支持、、、、以及等格式视频档。ffdshow本身并不包含,但各种媒体播放器都可以使用ffdshow进行解码。
FFDShow是一款全能的解码、编码器,可以常见的和几乎所有的,
它还提供了丰富的加工处理选项,可以锐化画面,调节画面的亮度,它还支持诸多字幕格式.它能让音频和视频播放更流畅。
二,创建source filter的方法
1,创建filterGraph
IGraphBuilder
*pGB;&&&//Graph
Manager对象
&IVideoWindow&
*pVW;&&&//设置视频显示窗口对象
&IMediaControl
*pMC;&&&//视频播放控制对象
&IBasicAudio&&
*pBA;&&&//音频控制对象
&IBasicVideo&&
*pBV;&&&//视频控制对象
&IMediaEvent&&
*pME;&&&//Dshow事件交互对象
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC, IID_IFilterGraph, (void
2,加入source filter
CMediaSource m_source = new CMediaSource(NULL,
m_source-&AddRef();
&hr = pGB-&AddFilter(m_source,
L"Source");
3,设置media 控制,音频,视频,事件
pGB-&QueryInterface(IID_IMediaControl, (void
pGB-&QueryInterface(IID_IBasicAudio, (void
pGB-&QueryInterface(IID_IBasicVideo, (void
pGB-&QueryInterface(IID_IMediaEvent, (void
三,ffdshow调用方法
1,首先在directshow中GraphEdit查看一下找到对应filter的ID号,在对应使用的代码中加入
DEFINE_GUID(CLSID_ffdshowaudec,&&&0x0F40E1E5,
0x4F79, 0x, 0xA9, 0xCC, 0x98, 0x79, 0x4E, 0x6B,
DEFINE_GUID(CLSID_ffdshowmp4dec,&&&0x04fe9017,
0xf873, 0x410e, 0x87, 0x1e, 0xab, 0x91, 0x66, 0x1a, 0x4e,
2,找到ffdshow的video解码器,
AddFilterByCLSID(pGB, CLSID_ffdshowmp4dec, L"ffdshow
Video Decoder", m_VideoDecoder);
3,链接pGB和解码器
ConnectFilters(pGB,
m_source-&p_stream[1], m_VideoDecoder);
4,找到render的video解码器
AddFilterByCLSID(pGB, CLSID_VideoRendererDefault,
L"video render", &m_VideoRenderer);
5,找到decoder未用的pOut
GetUnconnectedPin(m_VideoDecoder, PINDIR_OUTPUT,
6,找到render未用的pIn
GetUnconnectedPin(m_VideoRenderer, PINDIR_INPUT,
7,对pin和pOut进行链接
pGB-&ConnectDirect(pout, pin,
8,如果要对mediatype进行设置,则调用下面的函数
pout-&ConnectionMediaType(&mt_t);
9,若要对视频窗体进行设置,获得pvw后,进行设置
pGB-&QueryInterface(IID_IVideoWindow,
(void **)&pVW);
四,加载音频解码器
1,找到mp的解码器
DEFINE_GUID(CLSID_elcardmp2dec,
&&&0xf6c4c97d,
0xfbff, 0x433f, 0xb0, 0x99, 0xb9, 0x6a, 0x12, 0xd3, 0x23,
AddFilterByCLSID(pGB, CLSID_elcardmp2dec, L"mpadecoder
", &m_AudioDecoder);
2,连接mp的解码器到sourcefiter
ConnectFilters(pGB,
m_source-&p_stream[0], m_AudioDecoder);
3,找到mp解码器的未使用out
GetUnconnectedPin(m_AudioDecoder, PINDIR_OUTPUT,
4,连接pout
pGB-&Render(pout);
五,调用pMC-&Run();就可以正常播放了
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。OpenCV 2.2.0 正式版发布
OpenCV是Intel&开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。
目前官方网站尚无此版本的发布消息,但可从下载站获取,下载地址:
OpenCV 的详细介绍:
OpenCV 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:OpenCV 2.2.0 正式版发布
本文地址:8130人阅读
ffdshow(9)
=====================================================ffdshow源代码分析系列文章列表:=====================================================ffdshow是一个非常强大的DirectShow解码器,封装了ffmpeg,libmpeg2等解码库。它也提供了丰富的加工处理选项,可以锐化画面,调节画面的亮度等等。不止是视频,FFDShow现在同样可以解码音频,AC3、MP3等音频格式都可支持。并且可以外挂winamp 的DSP插件,来改善听觉效果。一个词形容:强大。因为项目的要求,需要对ffdshow进行二次开发,正好有这个机会,分析研究一下ffdshow的源代码。ffdshow项目的资源可以从sourceforge下载。包括编译好的程序,以及原代码等,下载地址:注意:sourceforge上有两个版本的ffdshow:ffdshow以及ffdshow-tryout。其中前一个版本很早之前已经停止开发了,因此我们需要选择后一个(ffdshow-tryout)。下载源代码的方法不再赘述,下面直接进入正题。源代码下载后,需要进行编译,推荐使用源代码根目录下的bat脚本一次性完成所有的资源编译。编译完成后我们就可以打开源代码根目录里的工程了。我自己的开发环境是VC2010,打开后工程如下图所示(解决方案的名字被我修改了= =):由图可见,ffdshow由一大堆工程组成,乍一看给人一种杂论无章的感觉,其实大部分工程我们不用去理会,我们重点研究最重要的工程就是那个名字叫“ffdshow”的工程。下面我介绍几个最重要的文件夹里包含的代码的功能:audiofilters:音频滤镜都在这里面(例如EQ,调节高低频等)baseclasses:微软自带directshow的sdk里面就有,主要是微软为了方便DirectShow开发而提供的一些基本的类codecs:支持的解码器都在这里(例如libavcodec,libmpeg2等)convert:色彩转换的一些功能(没太用过)decss:解除版权加密的一些功能(没太用过)dialog:音频视频滤镜的配置页面doc:文档,不是程序ffvfw:VFW相关(目前没太用过)Header Files:核心代码的头文件imgfilters:视频滤镜都在这里(显示QP/MV,加LOGO,显示视频信息等)Resource Files:资源文件settings:音频视频滤镜的配置信息Source Files:核心代码的源文件subtitles:字幕相关的功能以上用红色标出的,是我们二次开发中最有可能会涉及到的三个部分。掌握了这三个部分,就可以往ffdhow中添加自己写的滤镜(注意:这里说的是视频滤镜,音频的方法是一样的)黄色背景标出的部分,虽然我们可能不需要做出什么改变,但是为了了解ffdshow的架构,我们需要分析其中的代码。打了好多字啊。。。休息休息先
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7813256次
积分:57427
积分:57427
排名:第45名
原创:373篇
转载:157篇
译文:28篇
评论:6606条
姓名:雷霄骅
网名:leixiaohua1020
中国传媒大学-广播电视工程
中国传媒大学-数字电视技术
中国传媒大学-数字视频技术
[注1:QQ消息较多,难以一一回复,见谅]
[注2:CSDN私信功能使用很少,有问题可以直接在博客评论处留言]
主要从事与广播电视有关的视音频技术的研究。包括视音频质量评价,视音频编解码,流媒体,媒资检索等。
【SourceForge】【主】
【Github】
【开源中国】
欢迎转载本博客原创或翻译文章,但请声明出处,谢谢!
本QQ群旨在为视音频技术同行方便交流提供一个平台。无论是实验室,电视台,互联网视频,安防,播放器,媒体中心等等都可以加入讨论。欢迎新手和大牛,多交流可以更快的进步~1号群【2000人】:2号群【1000人】:通知:1号群成员容量为2000人,目前已经接近上限,为了给新成员入群讨论的机会,会定期清理不发言的用户,希望大家理解,谢谢支持! 2号群为新创建的群,欢迎加入~ 针对近期出现的各种问题,为保障本群和谐发展制定了《群规》,新成员入群后请阅读位于群公告中的《群规》了解本群的规则
文章:135篇
阅读:3597852
文章:91篇
阅读:921305
文章:41篇
阅读:3399283228人阅读
OpenCV and Visual Studio
Reference:
2)A book named “OpenCV2 Computer Vision Application Programming Cookbook”, Page 11-18;
1.下载visual studio 2013软件和OpenCV2.4.9
1)visual studio 2013下载免费版:
/Product/Product.aspx?productid=72
在这个网址下,先注册一个账户,再用学校的邮箱验证,就可以免费下载、使用了vs2013了。如下图所示:
2)下载OpenCV2.4.9:goto the website:
地址如下:
配置环境变量(environment variables):
新建一个用户或者系统变量(二者任选一个即可):
我选的是to build a user variable。变量名:OPENCV2_DIR,变量值:D:\OpenCV249\opencv\build。这是因为我将OpenCV2.4.9解压库到D:\OpenCV249这个目录下了,所以变量值相应的设成这个了。
2)添加系统路径
Now you are going to edit a systemvariable.
i) click&'Path'or 'PATH'&inside the list of System variables and then&click&'Edit'&buttonat
the bottom of the window.
ii) Then add asemicolon(即:分号“;”)&to
the endof the line and add the following&%OPENCV2_DIR%\x86\vc12\bin&&after the semicolon.&X86&isyour system architecture and&vc12&is
the compiler type. How to find your systemarchitecture and compiler type is explained at the beginning of the post.(Don't delete&anything. Just append it at the end of the line.)
注:后面的图片中显示的路径是“x64”,那是因为我理解我的操作系统是64bits的,就用了x64,结果发现程序调试时会有错误,如下:
可以理解这段话:
其实配置选择什么跟64位还是32位操作系统没有直接的关系,而是在于编译你的程序时候,是使用那个编译器。
编译器选的是win32,就用x86。编译器选的是X64,就用X64。不过一般情况下,都是用的win32的X86编译器。所以,无论32还是64位操作系统,配置文件最好都选择x86版的。另外,这里的vc10表示vs2010,如果是其他版本的visual
studio,稍微调整一下即可。
3. Configure Visual Studio2013
1)创建一个简单的visual studio 2013的win32Console
Application:
File|New Project| Project …
2) Create a Property Sheet
Tobe able to compile and run your future OpenCV application, you need to tellVisual C++ where to find the OpenCV libraries and include files. Since you willprobably create several OpenCV projects in the future, the best option
is tocreate a Property Sheet that you will be able to reuse from project to project.This is done through thePropertyManager. 如果Property Manager未显示在IDE中,可以通过View 菜单调出该项。
3)先做Debug | win 32
A)Edit the
Directories textfieldand add the path to the include files of your OpenCV library.
B)Do the samething with theLibrary Directories. See the followingpicture.
the next step is to specify the OpenCVlibrary files which need to be linked with your code in order to produce anexecutable application. 索性就把所有的modules都添加进来。Note: 这些文件是以字母d结尾的,d 代表
4)再做Release | win 32
参考步骤“3)先做Debug | win 32”Note:
这些文件不是以字母d结尾的,对应代表release模式。
n&&&Summary:
UserVariable:
OPENCV2_DIR= D:\OpenCV249\opencv\
$(OPENCV2_DIR)\include
%OPENCV2_DIR%\x86\vc12\bin
$(OPENCV2_DIR)\x86\vc12\lib
一个小例子测试一下:
#include&iostream&&
#include&opencv2/core/core.hpp&&
#include&opencv2/highgui/highgui.hpp&&
usingnamespace
usingnamespace
int main()
读入一张图片
Mat img = imread(&D:\\tiger.jpg&);
&&& if (!img.data)
&&&&&&& cout &&
&No image hasnot been created!&&&
创建一个名为 &Fig1&窗口&
&&& cvNamedWindow(&Fig1&);
在窗口中显示改图&
&&& imshow(&Fig1&, img);&
&&& waitKey();
&&& return 0;
附录OPENCV2.4.9 – x86 lib文件名:
1) release版
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
opencv_nonfree249.lib
opencv_objdetect249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_videostab249.lib
2) debug版
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
6. 一些编译、运行时的错误(详见Reference 3)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:14970次
排名:千里之外
原创:12篇
(2)(6)(1)(3)

我要回帖

更多关于 opencv读取mp4视频 的文章

 

随机推荐