
ffmpeg
文章平均质量分 61
依然风
为中华之创新而读书
展开
-
ffmpeg优化
不同版本有很大的区别,注意你的版本是不是最新版解码优化:1)对IDCT汇编化,并优化VLD的实现2)根据ARM9 cache & cache line的大小做MB的分组,使得每次可以同时处理多个MB即 对多个MB在一个循环内做VLD--->IDCT-->MC--.......3)优化关键代码段的内存访问(MC)4)不要使用FFmpeg内置的img_convert()做yuv原创 2012-04-12 12:56:03 · 7124 阅读 · 0 评论 -
ffmpeg音视频同步原理
AVStream该结构体描述一个媒体流主要域的释义如下,其中大部分域的值可以由av_open_input_file根据文件头的信息确定,缺少的信息需要通过调用av_find_stream_info读帧及软解码进一步获取:index/id:index对应流的索引,这个数字是自动生成的,根据index可以从AVFormatContext::streams表中索引到该流;而i转载 2012-08-25 10:18:30 · 7520 阅读 · 0 评论 -
桓泽学音频编解码(2):AC3/Dolby Digital 系统算法分析
http://www.cnblogs.com/gaozehua/archive/2012/05/02/2478452.html1 AC3标准概述AC-3技术起源于为高清晰度电视HDTV提供高质量声音。由于电影业对声音技术的要求越来越高,AC-3系统被要求具有5.1声道来替代已经使用了很久的4-2-4矩阵模拟声音系统;同时为了可靠地记录数字声音数据,并且不干扰原有转载 2012-09-04 13:04:14 · 4434 阅读 · 1 评论 -
桓泽学音频编解码(1):MPEG1 MP3 系统算法分析
1 标准分析 1.1 通用部分.. 1.1.1 码流结构.. 1.1.2 码流解析.. 1.2 层1和层2. 1.2.1层1和层2子码流结构.. 1.2.2层1和层2码流解析.. 1.2.2层1和层2算法分析.. 1.2.2.1层1和层2反量化算法.. 1.2.2.2层1和层2 其他算法.. 1.3 层3. 1.3.1 层3子码流结构.. 1.3.转载 2012-09-04 19:32:12 · 3788 阅读 · 0 评论 -
视频容器支持的音视频编码格式
mp4audio:Quicktime/iTunes, Nero, Psytel, FAAC(binary)...(rjamorim的质量比较测评:1 2)和mp3, mp2, mp1, celp(语音), TwinVQ(非常低的码率), SAOL(midi), ALS(无损)video:MPEG-4 SP(Simple Profile/简单类)/ASP(Advanced S原创 2012-08-22 10:58:04 · 1796 阅读 · 0 评论 -
Mp4编码全介绍
1) 什么是MP4?听闻它是一种“容器格式”,那是什么?容器格式允许你将不同种类的多媒体数据流(多为视频流和音频流)合并在一个单一的文件内。多媒体容器格式,就是我们熟知的AVI(.avi), MPEG(.mpg, .mpeg), Matroska(.mkv, .mka), OGM(.ogm), Quicktime(.mov),或Realmedia(.rm, .rmvb).转载 2012-08-22 11:01:45 · 5032 阅读 · 0 评论 -
H.264学习笔记之一(层次结构,NAL,SPS)
一 H.264句法1.1元素分层结构H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构,分别描述各个层次的信息。 图1H.264分层结构由五层组成,分别是序列参数集、图像参数集、片(Slice)、和宏块和子块。参数集是一个独立的数据单位,不依赖于参数集外的其它句法元素。图2描述了参数集与参数集外的句法元素之间的关系。转载 2012-08-31 23:52:05 · 2667 阅读 · 0 评论 -
h.264码流解析_一个SPS的nalu及获取视频的分辨率
00 00 00 01 67 42 00 28 E9 00 A0 0B 77 FE 00 02 00 03 C4 80 00 00 03 00 80 00 00 1A 4D 88 10 94 00 00 00 0100 00 00 01为NALu头,其余码流由十六进制转为二进制 67 0110 011142 0100 001000 0000 000028 0转载 2012-08-31 23:51:08 · 9048 阅读 · 1 评论 -
mpeg4 码流格式及判断关键帧
MPEG4码流视频关键帧头部16个字节,非关键帧8个字节(均包含四字节ID),说明如下:关键帧:字节0123456789ABCDEF值0转载 2012-07-30 16:26:15 · 5258 阅读 · 0 评论 -
lame mp3 wav文件转mp3 单通道
int read, write;FILE *pcm = fopen("/Users/liuchan_xin/Desktop/音视频播放与保存例子/ipcamera.wav", "rb");FILE *mp3 = fopen("/Users/liuchan_xin/Desktop/file.mp3", "wb");int PCM_SIZE = 640;int MP3_SIZE = 8192原创 2012-09-06 09:16:15 · 7501 阅读 · 6 评论 -
通过sps和pps得到视频的width和height
You must run a complex function to extract video dimensions from Sequence Parameter Sets. How to do this? Well first you must write your own Exp-Golomb decoder, or find one online... in live555 source转载 2013-07-01 15:13:48 · 5565 阅读 · 1 评论 -
iOS音频播放参数设置问题(rtsp)
dataFormat.mSampleRate = 8000; //vlc播放器可以查到 dataFormat.mFormatID = kAudioFormatULaw;//vlc播放器可以查到 dataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger原创 2012-12-19 14:30:35 · 4312 阅读 · 1 评论 -
使用mp4v2将H264+AAC合成mp4文件
http://www.cnblogs.com/chutianyao/archive/2012/04/13/2446140.html 录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是:(1)接收并解析RTP包,分离出H264和AAC数据流;(2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查转载 2012-06-08 09:44:44 · 13281 阅读 · 6 评论 -
H264关键帧和丢帧策略研究
p帧是根据前面的I帧和P帧预测而来首先,你看开头是000001还是00000001,然后看到后面一般是41,6767可能代表的就是关键帧,41为非关键帧然后与0x1F做与运算,观察结果的不同,来判断是否为关键帧int type = packet.data[4]&0x1F; if (type == 0) { NSLog(@"%d",type);原创 2012-04-25 10:25:32 · 12855 阅读 · 1 评论 -
ffmpeg深入研究
1.获取音频格式支持的采样率 if (codec->supported_samplerates) { for (int i = 0; codec->supported_samplerates[i] != 0; i++) NSLog(@"supported_samplerates %d",codec->supported_samplerates[原创 2012-08-24 11:25:10 · 12841 阅读 · 2 评论 -
获取mp4文件的帧率fps
1.帧率 = 电影的总时间/电影的总帧数2.电影的总时间duration获取:mvhd Box00 00 00 6C: size,mvhd Box的大小为108个字节6D 76 68 64: mvhd00 00 00 00: version,flagsBE EE 87 C5: creation-time创建文件的时间,是距离1904年1月1日0点的秒数BE EE原创 2013-09-04 12:00:14 · 11300 阅读 · 0 评论 -
MP4文件格式的解析,以及MP4文件的分割算法
mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime。以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的“媒体头”。当然,流媒体点播也可以采用flv格式来做,flv也可以封装H.264视频数据的,不过Adobe却不推荐这么做,人家说毕竟mp4才是H.264最佳的存储格式嘛。 这几天整理并重构了一下mp4文件的解转载 2013-07-01 17:52:42 · 2294 阅读 · 1 评论 -
如何区分mp4格式里面mdat中的音频和视频数据
首先在minf里面有个vmhd和smhd,那么vmhd代表视频,smhd代表音频然后在stsz中stsz Box00 00 73 D8 size of stsz,2073 74 73 7A: stsz00 00 00 00: version00 00 00 00: sample-size00 00 1C F1: sample-count00 0原创 2013-07-01 17:18:39 · 9906 阅读 · 1 评论 -
mp4格式解析
每个box的具体格式:http://blog.youkuaiyun.com/szu030606/article/details/5943279每个box的作用:http://blog.sina.com.cn/s/blog_48f93b530100jz5f.html原创 2013-07-02 10:00:20 · 1555 阅读 · 0 评论 -
H264基本概念之 宏块、片和片组
这几个概念对比音频信号处理可是全新的,下面简要介绍一下定义和作用: 1、宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧转载 2012-08-05 10:14:21 · 1537 阅读 · 0 评论 -
H264 码流结构
以下内容转自Peter Lee H264 码流结构. H.264的码流结构和H.263的有很大的区别,它采用的不再是严格的分级结构。 下面这个图片来自网络,从另一个角度表示了H264 码流结构:转载 2012-08-05 10:41:40 · 1311 阅读 · 0 评论 -
H264 编解码框架简介
阅读完H264/AVC 编解码器的介绍,脑海中只是留下以下三条:1、H264并没有明确规定一个编解码器如何实现,只是规定了一个编码后的视频比特流的句法,和该比特流的解码方法,这个与MPEG 相似。2、H264和以前的标准(如H261、H263、MPEG-1、MPEG-4)的编解码器实现流程没有太大区别,主要的不同在于各功能块的细节。3、H264就是利用实现的复杂性获得压缩性能的明显改善转载 2012-08-05 10:33:54 · 1425 阅读 · 0 评论 -
ffmpeg 从mp4上提取H264的nalu
1.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字节,所以可以肯定这不是标准的nalu。其实,前4个字0x000032ce表示的是na转载 2012-04-25 10:26:59 · 1246 阅读 · 0 评论 -
ffmpeg 参数初始化详解
m_fmt->video_codec = CODEC_ID_H264;/* 添加视频流 */m_video_st = av_new_stream(m_oc, 0);if (!m_video_st) {return 0;}m_videoc=avcodec_alloc_context();m_videoc = m_video_st->codec;/* 视频相关参转载 2012-05-14 22:33:19 · 1496 阅读 · 0 评论 -
【整理】视频中IBP帧的介绍和判定方法
mpeg4视频中,I帧、p帧、B帧的判定mpeg4的每一帧开头是固定的:00 00 01 b6,那么我们如何判断当前帧属于什么帧呢?在接下来的2bit,将会告诉我们答案。注意:是2bit,不是byte,下面是各类型帧与2bit的对应关系: 00: I Frame 01: P Frame 10: B Frame 为了更好地说明,我们举几个例子,以下是16进制显示的视频编转载 2012-05-16 09:49:48 · 1022 阅读 · 0 评论 -
自译的ffmpeg ./configure参数
[root@web ffmpeg]# ./configure --helpUsage: configure [options]Options: [defaults in brackets after descriptions]Standard options: 基本选项参数 --help 显示此帮助信息|print this message转载 2012-04-12 20:25:51 · 3164 阅读 · 0 评论 -
ffmpeg中关于sws_sacale函数的研究
1. sws_scale函数进行YUV420转RGB32的时候效率很低,不知是不是ffmpeg程序实现的问题2. 进行.mp4文件封装存储的时候,加在视频帧和音频帧后面的时间戳不起作用,还会导致程序异常,让ffmpeg自己来管理时间戳的话程序就是正常的,但是视频和音频总是存在不同步的情况3. h264转码的效果不好,在windows平台下的vlc播转载 2012-04-13 15:54:52 · 2735 阅读 · 0 评论 -
ffmpeg 编译指令的理解
./configure指定你要编译的一些配置信息,比如是否需要h264解码器,指定iphone sdk版本,指定cpu结构是arm还是i386make运行gcc命令用来编译make install相当于安装文件,windows下面的安装exe,或者安装静态库如果编译的时候出现警告warning可能没事,如果出现错误,你可以查看configure.log查找错误信原创 2012-06-11 16:18:43 · 709 阅读 · 0 评论 -
【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
http://www.cnblogs.com/skyseraph/archive/2012/04/01/2429384.html一、MP4格式基本概念MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二、MP4封装格式核心概念1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式转载 2012-06-09 09:57:23 · 1786 阅读 · 0 评论 -
h.264視頻編碼加生成QT7可播放的mp4文件
實際上只是一個頭文件h264_util.h。h264_util.h封裝了x264庫。我做的工作就是使用模板封裝了一下,保證使用任何mp4 container庫都可以方便地輸出mp4文件。使用模板的目的是爲了避免任何回調的開銷。h264_util.h依賴于x264庫。main.cpp依賴于h264_util.h和libmp42(可選)和libmp4av(可選),後兩者都是mpeg4ip的一部转载 2012-06-08 09:25:31 · 2339 阅读 · 0 评论 -
mepg4 编码原理
基本上来说,如果在计算机的世界中没有压缩编码这个概念..那么我们今天接触到的多媒体技术几乎是不可能实现的.因为纯粹的多媒体数据包含的信息量是很大的,以现行的存储容量跟本不可能承载如此大的信息量.编解码这个概念在多媒体的应用中很直观.它的目的在于最大限度的降低多媒体数据的体积,同时尽可能的保存更多的信息量.编解码这个概念并非旦生于多媒体技术中.事实上,很早以前,人们就经常采用编解码的思想来解决实转载 2012-05-15 21:39:04 · 1749 阅读 · 0 评论 -
mov格式解析
QuickTime文件格式解析Peter Lee 2008-06-14 一、简介QuickTime是Apple公司开发的一套完整的多媒体平台架构,可以用来进行多种媒体的创建,生产,和分发,并为这一过程提供端到端的支持:包括媒体的实时捕捉,以编程的方式合成媒体,导入和导出现有的媒体,还有编辑和制作,压缩,分发,以及用户回放等多个环节。QuickTime文件格式是QuickTime整个转载 2012-05-09 22:04:28 · 8828 阅读 · 0 评论 -
H264基本概念之 预测编码、变换编码和熵编码
1、预测编码 压缩算法的本质就是去除信号间的冗余,什么是信号的冗余呢?信号之间的相关性就是冗余,人类听觉或视觉系统感觉不到的或者掩蔽的也可以当做冗余成分。今天谈谈预测编码的概念,这是一种非常直观和简单易行的方法。说它直观,以图像为例,前后两帧或者同一图像的相邻像素都存在着相似性、相关性,我们完全可以通过当前帧和一组预测系数,推测出下一帧图像,当然也可以从当前像素推测出周围转载 2012-08-05 10:30:54 · 1240 阅读 · 0 评论 -
H264基本概念之 色彩空间(RGB vs YUV)
很早以前就知道RGB,三基色原理,即任何色彩都可以由红、绿、蓝混合而成,后来上了图像处理这门课才知道YUV(YCbCr)也是一种表示色彩的方式,只不过它是通过亮度和色度表示的。我猜想,如果色彩空间可以用三个独立的变量去表示,类似三维空间,那么通过建立不同的正交基,是完全可以对这个三维空间进行描述的,只是映射的方式不同而已,最重要的是找到有实际意义的物理表示。当对RGB进行压缩时,显然利用不上人类视转载 2012-08-05 10:17:46 · 1416 阅读 · 0 评论 -
判断网络传输h264视频流是否丢包
用RTP可以很方便的判断是否丢包,丢了那些包。而用UDP如何判断丢包,这个问题不成立。首先,NAL必须根据网络环境的MTU值再做一次分包或者并包,独立的一个NAL一个包只是一种情况。为了程序简便,通常是做当NAL大于MTU时做分包,NAL小于MTU时独立一个包这两种情况。为了在一个NAL被分包后,仍然可以标识出一个完整的NAL,H264在独立传输NAL时必须要用RTP,利用RTP的包头转载 2012-08-03 21:17:11 · 7381 阅读 · 0 评论 -
ffmpeg解码流程 turorial5详解
FFMPEG解码流程1. 注册所有容器格式和CODEC:av_register_all()2. 打开文件:av_open_input_file()3. 从文件中提取流信息:av_find_stream_info()4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO5. 查找对应的解码器:avcodec_find_decoder()6. 打开编解码器:转载 2012-05-14 22:52:35 · 1733 阅读 · 0 评论 -
什么是音频比特率、视频比特率、音频采样率?
简单来讲,采样率和比特率就像是坐标轴上的横纵坐标。 横坐标的采样率表示了每秒钟的采样次数。 纵坐标的比特率表示了用数字量来量化模拟量的时候的精度(在计算机里面占几个字节)。 采样率类似于动态影像的帧数,比如电影的采样率是24赫兹,PAL制式的采样率是25赫兹,NTSC制式的采样率是30赫兹。当我们把采样到的一个个静止画面再以采样率同样的速度回放时,看到的就是连续的画面。同样的道理,把以转载 2012-07-01 11:32:07 · 21349 阅读 · 1 评论 -
NSTimer 对解码与显示的影响
[NSTimer scheduledTimerWithTimeInterval:-1 target:self selector:@selector(showImage) userInfo:nil repeats:YES];NSTimer是定时器,每隔一定的时间就运行指定的函数,如果在一个时间周期里面,函数没有执行完,那么下一个时间周期函数将不会执行直到这个函数运行结束,并且等到下一个定时器原创 2012-04-26 10:10:39 · 706 阅读 · 0 评论 -
ffmpeg 从mp4上提取H264的nalu
http://blog.youkuaiyun.com/gavinr/article/details/71834991.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68转载 2012-04-15 09:36:25 · 1843 阅读 · 0 评论 -
简述PCM,DPCM,ADPCM的区别。
PCM(Pulse Code Modulation——脉冲编码调制)脉冲调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输.个人认为上面这句话概括的相当经典脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程. 所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号.该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能转载 2012-05-03 07:36:46 · 24690 阅读 · 3 评论