自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BIGBurning

道可道,非常道,名可名,非常名。

  • 博客(62)
  • 资源 (8)
  • 收藏
  • 关注

原创 webrtc初级教程-仝利-专题视频课程

从基础的怎么从网上下载webrtc教程开始,由浅入深讲解webrtc的整个框架。拿webrtc的经典例子peerconnection_client来讲解。从代码细节深入进去

2016-02-25 15:20:08 848 1

原创 ffmpeg+ffserver多媒体服务器开发入门

公司需要为Html5客户端配置多媒体服务器。主要是作为媒体server,,音频是实时来自聊天室,中间需要经过一次转码,Opus->mp3,实时转码。研究了两周,将其中一些心得记录分享下。1.循环播放mp3文件。ffserver提供对外的服务请求的处理,ffmpeg作为转码的工具,即将文件或者流中的数据流转发或者转码到ffserver的磁盘文件/tmp/feed1.ffm中。ffm是ffmpeg中保

2015-11-13 20:17:06 4470 4

原创 WebRtc研究二(WebRtcDemo的使用)

WebRtcDemo的运行效果:1:如果要拨打另一台终端的话再SETTING里面配置好对方的IP地址。然后回到MAIN点击StartCall2: 对面也要设置我的IP,然后也要去MAIN里面点击StartCall这个应该是通过点对点进行连接的。同时支持音频和视频。支持本地显示。该工程的源码的位置是:webrtc/src/webrtc/examples/android/media_demo

2015-10-15 15:56:40 4589 2

原创 webrtc研究一(源码下载和编译)

写在最前面一:写博客的目的1.自己研究的辛苦自己清楚。2.网上的各种资料鱼龙混杂,很多都过时了。3.基于最新的webrtc源码分享自己工作中的一些心得体会。4.如果写的好大家就鼓掌,写的不好勿喷。有钱的捧个钱场,没钱的...二:编译编译还是编译1.自己最好还是准备个vpn,不要想着有谁把代码拷贝下来上传到国内的服务器上。2.下载depot_tools,并且加入到PATH中: git clone h

2015-10-15 14:08:53 3613 2

原创 FEC原理及其实现

视频会议中通常使用的FEC/QOS技术,这方面的资料比较复杂和稀少,根据这么多年的工作经验,做一下分享。一:差错控制技术 1. ARQ  :是一种按需重传的机制,发送者通过接受者的反馈得知有报文在传输过程中有丢失,就重传该报文。 缺点:通信信道的利用率不高,也就是说信道还远远没有被数据流占满,需要接收方发送ACK,这样影响传输效率。可以想象,这种方式发送方肯定需要一个buffer来存储获取到的数

2015-10-13 13:55:49 25200 6

原创 JAVA工具-实现java的String类转换为C中的char*数组

JNI开发中,java与c代码交互的时候通常有String和char*的转换,但是请注意,这两者不是一类。 找了个工具方法,作为备忘。char* Jstring2CStr(JNIEnv* env, jstring jstr){ char* rtn = NULL; jclass clsstring = (*env)->FindClass

2015-03-20 14:19:20 2091

原创 安卓横竖屏切换问题总结

如果不想让软件在横竖屏之间切换:可以通过在AndroidManifest.xml中设置activity中的android:screenOrientation属性值来实现。比如下列设置android:screenOrientation="portrait"则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。android:screenOrientation="landscape",为横

2015-03-19 13:00:27 2087

原创 安卓服务(Service)的两种开启方式以及服务的生命周期

安卓中服务的开启方式一:采用start的方式开启服务调用函数:startService(Intent)->onCreate()->onStart()/onStartCommand()->onDestroy() 特点:服务被开启后不会重复开启,只会调用onStart(),服务只会被停止一次。 二:采用bind的方式开发服务 调用函数:bindService(Intent…)->onCreate(

2015-03-19 11:58:12 4257

原创 安卓短信过滤器小程序

对于安卓的短信广播接受者支持,谷歌应该在安卓4.2以后就开始弱化了,也就是配置起来较麻烦唯一,但是到了5.0的时候就应该完全不支持了。因为谷歌认为这种技术对用户个人隐私造成很大影响,事实上也正是如此,黑客可以很容易的获取到用户的短信。 下面写一个短信过滤的小demo。/**创建一个短信接收器,继承广播接受者*/public class SmsReceiver extends Broadcas

2015-03-18 15:33:54 1926

原创 安卓系统下的多线程断点下载实现2利用开源框架XUtils

使用开源框架可以大大降低开发的难度,减少开发的周期,并且bug也少的多,软件运行起来更稳定。xUtils简介xUtils 包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响… xUitls 最低兼容android 2.2 (api level 8)下载地址:https://gith

2015-03-17 13:02:35 1610

原创 安卓系统下的多线程断点下载实现

最近研究多线程下载,写了个demo,整理下来,也许会对别人有帮助。 多线程下载的话一般开启两到三个线程吧。如果线程太多的话时间会浪费在线程的切换上,倒是浪费了大把的时间。线程多了也不是一件好事。 原理的话看我的另一篇博文,事实上是将代码移植到了安卓系统上。java实现的多线程下载demopublic class MainActivity extends Activity { protec

2015-03-17 12:12:30 1253 3

原创 Java之多线程断点下载的实现

RandomAccessFile类: 此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组,光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当

2015-03-16 17:22:39 1518 1

转载 Live555-基类研究二

TaskSecheduler类是一个任务调度器,它是整个Live555的任务调度中心,程序在任何时刻的任何动作,均由该类完成。其核心函数是SingleStep。Live555的任务主要分为Delayed Event、Socket Event以及Trigger Event。其类层次结构如下图所示: 从类图中可以看到,其类层次结构和第二节中的UsageEnvironment类极其相

2015-02-09 17:12:01 2037

原创 WinSocket的select函数的用法(windows套接字比较研究)

总体上来说select函数的作用:确定一个或多个套接口的状态,本函数用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返回时,这个结构存有满足一定条件的套接口组的子集,并且select()返回满足条件的套接口的数目。简单来说select用来填充一组可用的socket句柄,当满足下列之

2015-02-07 17:08:44 9672 1

原创 H264包解析

在H.264/AVC标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。VCL负责表示视频数据的内容,NAL则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。在VCL数据传输或存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。NAL单元是NAL的基本语法结构,它包含一个字节的头信息和一系列来自VCL的称为原始字节序列载

2015-02-06 13:21:03 6126 1

原创 FFMPEG实现H264的解码(从源代码角度)

农历2014年底了,将前段时间工作中研究的FFMPEG解码H264流程在此做一下整理,也算作年终技术总结了!H264解码原理:H264分为NAL(网络抽象层)和VCL(视频编码层)解码器的总框架:解码器的流程为:将NAL数据位流输入到H264的解码器中,熵解码模块解码后输出量化系数X;系数经过反量化和反变换得到残差数据R;解码器使用从码流中解码的头信息生成预测块Pr

2015-02-06 10:16:26 8156 1

原创 MpegTS流解复用程序实现(解复用得到PES和ES)

MpegTS基础看这几篇博文:MpegTS基础MpegTS之TS,PES,ES结构分析TS流复用和解复用是一个相逆的过程。TS解复用得到的是音视频的PES裸流。一般来讲,每个TS包的长度是188个字节,也有一种204个字节的,就是在每个包后面加上16个字节的RS冗余校验信息。在这里分析188个字节的情况,其余的都类似了。从文件中循环读取188个字节的包,然后对包进行

2015-02-05 15:07:01 6559 2

原创 FFMPEG实现的转码程序

本例子是由FFEMPG的doc/example例子transcode.c修改而来,可以根据需求任意转换音视频的编码。原来的例子的作用更类似于remux,并没有实现转码的功能,只是实现了格式转换,比如ts转avi等。并不能实现音视频编码格式的转换,比如将h264转为mpeg2。FFMPEG转码的实现有多种方式:一种方式是:流解复用->视频+音频流->解码->YUV/PCM

2015-02-04 17:06:34 7368 10

原创 FFMPEG用法整理

1.修改分辨率率将输入为640*480的修改为320*249ffmpeg -i input -vf scale=iw/2:-2 outputiw:输入帧宽,此处为640,640/2=320。-1告诉scale filter保持纵横比,所以scale filter计算出值240.2.改变音视频播放速度1>视频2倍播放速度,音频两倍播放速度。ffmpeg -i in

2015-02-04 14:31:20 26126 5

原创 【整理】FFMPEG相关开源项目

1.FFmpeg build for android random architectures with example jnihttps://github.com/appunite/AndroidFFmpeg2.ijkplayer - Android/iOS 基于FFMPEG库的播放器http://git.oschina.net/bbcallen/ijkplayergit下载

2015-02-02 19:11:07 8423

转载 安卓开源项目整理

一、代码库1、from  代码家整理比较好的源码连接****************************************************************************************************************************************************

2015-02-01 23:47:56 5445 1

原创 FFMPEG-AVFilter研究

FFMPEG中的libswscale是做像素转换的,但是对于一些复杂的操作,比如添加水印等,这个库就不行了,这时候就要说一下另外一个AVFilter。AVFilter完全可以替代libswscale的所有功能,也许有一天,ffmpeg也会这样去做。AVFilter虽然学起来有点复杂,但是为了学好FFMPEG,为了涨工资,我忍了。(*^__^*) 嘻嘻……概念:做个directsho

2015-01-30 11:57:35 6650

原创 Ffmpeg转码研究一

Ffmpeg是一款功能强大的视频处理工具,那么转码肯定不是问题的,因为项目的需求,对转码进行了研究。刚开始首先去看了ffmpeg源代码中的一个例子transcode.c,但是发现该例子更应该称之为remux的一个例子,并没有具体的涉及到转码。所以转而去ffmpeg工具中寻求帮助了。ffmpeg转码流程:举例:输入文件为ts格式,视频编码为H.264,音频编码为AAC,要

2015-01-29 16:14:30 3011

原创 MPEG-TS基础2

MPEG-2传送流系统层为了实现解码同步,在PES中插入PTS和DTS以及相关的系列标志符。由图可以看出,TS由4B的包头,可变长度的调整头和负载构成。包头由同步字节,1B传送数据包差错指示,1B净荷单元起始指示,1B传送优先权,13B的包标识符PID,2B传送加扰控制,2B调整字段控制和4B连续计数器组成。其中的净荷起始指示表示打包的原始流PES数据包字头或包含与节目有关的P

2015-01-21 17:14:47 8486

原创 Ffmpeg源代码解析之av_read_frame

av_read_frame从字面意思上来看,就是从内存中读取一帧,但是具体的实现如何?本文是在参考别人的代码的基础上,结合最新的源代码,进行分析研究!如果有不正确的地方,欢迎指正。

2015-01-19 10:45:24 23848 1

原创 ffmpeg的IO操作

网上类似介绍ffmpeg的文章其实挺多。但是让人看了之后还是一头雾水,并且一些结构已经没有了比如ByteIOContext已经改名为AVIOContext,所以决定根据自己的学习经历重新来介绍下IO。所谓IO就是数据的存取,主要的途径也就是文件或者网络。数据IO是基于文件格式的,与具体的编码标准无关。ffmpeg对各种协议实现了封装,使用同样的接口,完成对不同数据的读取。比较屌

2015-01-16 16:01:31 17832

原创 MPEG2-TS基础

一:基本概念1.ES--Elementary Streams(原始流)是直接从编码器出来的数据流,ES经过PES打包器之后,转换成PES包。ES仅是包含一种数据内容的数据流,如h.264视频或者aac音频数据。打包之后的PES也是只包含一种的ES,如只含视频ES的PES或者只含音频ES的PES。每个ES都由若干个存取单元(AU)组成,每个视频AU或者音频AU都由头部和编码数据两部分组成,一

2015-01-16 09:15:14 21764

原创 ffmpeg转码之TS转PS

写了一个ts转ps的demo。ts数据从文件中读取。ffmpeg怎么从从内存中获取看这篇博文http://blog.csdn.net/rootusers/article/details/42551935然后将ts流转换为ps流,存储在内存中。下面是代码:extern "C"{#include "libavformat/avformat.h"}FILE *file = NUL

2015-01-13 13:45:09 9485

原创 ffmpeg 如何探测网络流格式/如何从内存中获取数据

一般ffmpeg都是直接从文件中读取或者从网络流中读取,比如rtp://xx.xx.xx.xx:xxxx。事实上也支持从内存中获取。函数avio_alloc_context()实现该功能。AVIOContext *avio_alloc_context( unsigned char *buffer, int buffer

2015-01-09 10:39:43 17558 1

原创 Live555学习基础类

Live555主要用到的类介绍:1.UsageEnvironment类:抽象基类class UsageEnvironment {public: void reclaim(); // task scheduler: TaskScheduler& taskScheduler() const {return fScheduler;} // result message ha

2015-01-08 09:53:29 24255

原创 Live555分析2

RtspServer的分析!

2015-01-07 16:54:37 4179 1

原创 Directshow源码分析之推模式

在windowsSDK中有一个推模式的Source Filter例子,位于SDK安装目录samples\C++\Directshow\Ball下。下面做一下简要分析:功能:Live Source不断产生视频帧,演示在封闭围墙内碰撞的弹球的运动轨迹。使用该filter构建Filter Graph及其输出结果如下图:类的继承结构关系为:CBouncingBall继承自C

2015-01-06 15:11:39 4313

转载 Live555源码在vs2010/vs2013中的编译

Ⅰ live555简介  Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555

2015-01-04 16:40:19 5491

原创 创建一个directshow应用程序二2.

事件交互的是实现directshow有一种机制,实现应用程序和Filter Graph的交互控制,该机制叫做事件通知(Event Notification)。当Filter状态转换,运行时遇到错误或者要求重画视频窗口时,都会发出一个特定的事件,由Filger Graph处理或者转发给应用程序。Filter Graph Manager上有三个接口与事件通知有关:IMedi

2014-12-26 10:31:07 8477

原创 创建一个directshow应用程序一

创建dshow应用程序一般有三个步骤:1.创建一个Filter Graph Manager组件。IGraphBuilder * pGraph = NULL;HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph);,

2014-12-26 09:28:00 5586

原创 directshow原理分析之filter到filter的智能连接

先看几个函数:IFilterGraph::AddFilter:参数为一个Filter对象,将其加入到Filter Graph中IFilterGraph::ConnectDirect:参数为一个输出Pin,一个出入Pin以及媒体类型,进行直接的链接IGraphBuilder::AddSourceFilter:参数为源文件名,自动将一个Source Filter加入到Filter Grap

2014-12-25 17:07:08 22324

原创 directshow原理分析之filter到filter的连接

Filter是Directshow中最基本的概念。Directshow使用filter graph来管理filter。filter graph是filter的容器。Filter一般由一个或者几个Pin组成。filter之间通过Pin来连接,组成一条链。PIN也是一种COM组件,每一个PIN都实现了IPin接口。试图链接的两个Pin必须在一个filter graph中。连接过

2014-12-25 14:18:44 6051 1

原创 directx学习之在屏幕上画一个三角形

前一张已经输出了一个背景为紫色的屏幕,这一节的目标是在该屏幕上输出一个三角形。下面将逐一介绍建立一个三角形的过程。一个三角形有三个点,叫做顶点。三个点的不同的集合可以建立不同的三角形。能让GPU创建一个三角形,必须将三个顶点的位置告诉它。下面是一个2D的例子。怎么将三个点的数据传给GPU?在d3d10中,顶点数据被存在一个缓存资源中。但是应该申请多大的缓存,这就是接下来

2014-12-18 14:02:09 8618

原创 (Directx11学习)开天辟地第一式

我们首先创建一个窗口,该窗口带有消息处理:最基本的win32中创建窗口程序://--------------------------------------------------------------------------------------//author:tongli//-------------------------------------------------

2014-12-17 19:01:49 5265

原创 java的字符编码集(UNICODE,utf-8,gbk等)

字符串的序列化:从char序列到byte序列的转化,叫做“编码”。1>java的String本质上是char数组。2>Unicode编码。与ISO-8859-1兼容。包含全世界所有的字符。均占2个字节。3>utf-8:采用变长编码1-N方案。英文1个字节,中文3个字节4>utf-16be编码:将16位的char从中间切开为2个byte。可以支持65535个字符编码5>GBK

2014-12-16 13:10:41 8503

安卓Service学习小程序

安卓Service组件学习的好例子。开启服务的两种方式。

2015-03-19

安卓多线程断点现在的demo

安卓多线程下载的demo,支持断点下载,带进度条,可以直接使用在项目中。

2015-03-17

FFMEPG实现h264解码

FFMPEG实现的h264解码。对于理解ffmpeg的解码流程很有好处。是作为x264的编码器的解码补充

2015-02-06

TS流解复用程序

TS流的解复用工程。具体的请参考我的博文<> http://blog.csdn.net/rootusers/article/details/43528261

2015-02-05

FFMPEG转码程序

FFMPEG实现的转码程序。可以实现大部分的音视频转码,例如mpeg2转h264。具体介绍可以看我的博客http://blog.csdn.net/rootusers/article/details/43488827

2015-02-05

100行左右的视频播放代码

利用sdl实现的100行左右的视频播放代码。可以编译,但是不能运行。需要去ffmpeg官网去下载dll库。将动态库天上就可以直接运行了!

2014-11-12

ffmpeg将视频帧转换为jpg格式的图像

利用ffmpeg将获取到的视频帧转换为jpg格式的图片,jpg格式的图片用到了libjpeg的库。具体的编译过程可以看我的blog

2014-11-12

最简单的利用ffmpeg获取视频的图片

利用ffmpeg库进行视频的解码,将解码获取到的帧进行本地存储为ppm格式的图片文件。ppm格式的图片文件大部分的图片软件都能进行解析。

2014-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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