
流媒体数字音视频开发技术
文章平均质量分 77
本人的工作是多平台流媒体音视频技术开发,希望以此专栏,将我工作中遇到的问题以及解决方案,来与大家分享,期待能达到抛砖引玉的效果,并且能够为大家的学习提供一些经验,如果有问题,欢迎大家指正。
BIGBurning
专注于多媒体视频会议,移动互联网,流媒体技术的开发。PJSIP,WebRtc等。
展开
-
ffmpeg转码之TS转PS
写了一个ts转ps的demo。ts数据从文件中读取。ffmpeg怎么从从内存中获取看这篇博文http://blog.youkuaiyun.com/rootusers/article/details/42551935然后将ts流转换为ps流,存储在内存中。下面是代码:extern "C"{#include "libavformat/avformat.h"}FILE *file = NUL原创 2015-01-13 13:45:09 · 9600 阅读 · 0 评论 -
ffmpeg的IO操作
网上类似介绍ffmpeg的文章其实挺多。但是让人看了之后还是一头雾水,并且一些结构已经没有了比如ByteIOContext已经改名为AVIOContext,所以决定根据自己的学习经历重新来介绍下IO。所谓IO就是数据的存取,主要的途径也就是文件或者网络。数据IO是基于文件格式的,与具体的编码标准无关。ffmpeg对各种协议实现了封装,使用同样的接口,完成对不同数据的读取。比较屌原创 2015-01-16 16:01:31 · 17902 阅读 · 0 评论 -
Ffmpeg源代码解析之av_read_frame
av_read_frame从字面意思上来看,就是从内存中读取一帧,但是具体的实现如何?本文是在参考别人的代码的基础上,结合最新的源代码,进行分析研究!如果有不正确的地方,欢迎指正。原创 2015-01-19 10:45:24 · 23949 阅读 · 1 评论 -
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 · 8625 阅读 · 0 评论 -
【整理】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 · 8561 阅读 · 0 评论 -
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 · 26258 阅读 · 5 评论 -
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 · 6710 阅读 · 2 评论 -
FFMPEG实现H264的解码(从源代码角度)
农历2014年底了,将前段时间工作中研究的FFMPEG解码H264流程在此做一下整理,也算作年终技术总结了!H264解码原理:H264分为NAL(网络抽象层)和VCL(视频编码层)解码器的总框架:解码器的流程为:将NAL数据位流输入到H264的解码器中,熵解码模块解码后输出量化系数X;系数经过反量化和反变换得到残差数据R;解码器使用从码流中解码的头信息生成预测块Pr原创 2015-02-06 10:16:26 · 8288 阅读 · 1 评论 -
H264包解析
在H.264/AVC标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。VCL负责表示视频数据的内容,NAL则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。在VCL数据传输或存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。NAL单元是NAL的基本语法结构,它包含一个字节的头信息和一系列来自VCL的称为原始字节序列载原创 2015-02-06 13:21:03 · 6308 阅读 · 1 评论 -
ffmpeg源代码分析之avformat_open_input
/*int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options){ AVFormatContext *s = *ps; int ret = 0; AVDict原创 2014-10-16 10:54:56 · 17829 阅读 · 0 评论 -
rtp协议分析
OSI七层模型:应用层:文件传输,电邮,文件服务等。HTTP,Telnet,DNS, FTP等协议表示层:数据格式化,代码转换,数据加密等会话层:解除或建立与别的接点的联系传输层:提供端到端的接口 TCP UDP RTP网络层:为数据包选择路由 IP ICMP RIP数据链路层:传输有地址的帧以及错误检测功能 物理层:以二进制数据形式在物理媒体上传输原创 2014-12-11 11:32:56 · 24594 阅读 · 0 评论 -
directx学习之在屏幕上画一个三角形
前一张已经输出了一个背景为紫色的屏幕,这一节的目标是在该屏幕上输出一个三角形。下面将逐一介绍建立一个三角形的过程。一个三角形有三个点,叫做顶点。三个点的不同的集合可以建立不同的三角形。能让GPU创建一个三角形,必须将三个顶点的位置告诉它。下面是一个2D的例子。怎么将三个点的数据传给GPU?在d3d10中,顶点数据被存在一个缓存资源中。但是应该申请多大的缓存,这就是接下来原创 2014-12-18 14:02:09 · 8733 阅读 · 0 评论 -
directshow原理分析之filter到filter的智能连接
先看几个函数:IFilterGraph::AddFilter:参数为一个Filter对象,将其加入到Filter Graph中IFilterGraph::ConnectDirect:参数为一个输出Pin,一个出入Pin以及媒体类型,进行直接的链接IGraphBuilder::AddSourceFilter:参数为源文件名,自动将一个Source Filter加入到Filter Grap原创 2014-12-25 17:07:08 · 22402 阅读 · 0 评论 -
Live555分析2
RtspServer的分析!原创 2015-01-07 16:54:37 · 4250 阅读 · 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 · 24325 阅读 · 0 评论 -
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 · 18144 阅读 · 1 评论