音频编解码
文章平均质量分 95
老衲不出家
寨都码农一枚,平常喜欢关注音视频技术,从事音视频行业小几年,主要是音视频编解码,语音处理,移动端音视频开发,博客是一个自我记录的地方,如果不妥之处,请高人不吝赐教,如有侵权,请联系我删除。tanningzhong@126.com
展开
-
ZLMediakit独家特性介绍
1、先播放后推流痛点:推流成功前不能提前播放场景介绍:有些及时推流的场景,存在推流和播放同时发生的场景,这种场景一般是一对一的,譬如说基于rtmp推流的行车记录仪,用户在调阅车载摄像头视频的,下发推流命令给设备时,同时开始播放视频,如果播放请求先于推流到达流媒体服务器,那么流媒体服务器通常会立即返回流未找到的错误,为了解决这个问题,一般的解决方案是,通过设备确认推流成功再开启播放,但是这样往往会增加视频打开延时,拉低用户体验。zlmediakit针对此场景作出特别优化,可以在流不存在时,先不回原创 2022-01-13 19:17:24 · 2849 阅读 · 1 评论 -
音视频封装:MP4结构概述和分析工具
原文地址:https://mp.weixin.qq.com/s/dlHn_Ki_BwUM2Dgst-hjTw问题背景:前面已经讲了好几种封装格式包括了TS、FLV、RTP等。现在用几篇文章讲解下MP4,这种封装格式设计思路和前面都不太一样,其应用范围最广、灵活性最高、跨平台最好,兼容性最强。带来的负面影响就是格式本身比较复杂,特别是在封装和转封装方面代码实现起来比较长。这个系列会和前面...原创 2019-10-22 14:54:40 · 1075 阅读 · 0 评论 -
视频压缩编码和音频压缩编码的基本原理
原文地址:http://blog.csdn.net/leixiaohua1020/article/details/28114081本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。1.视频编码基本原理(1) 视频信号的冗余信息以记录数字转载 2017-07-28 10:55:40 · 623 阅读 · 0 评论 -
流媒体加密
为什么要加密视频付费观看视频的模式是很多平台的核心业务,如果视频被录制并非法传播,付费业务将受到严重威胁。因此对视频服务进行加密的技术变得尤为重要。本文所指的视频加密是为了让要保护的视频不能轻易被下载,即使下载到了也是加密后的内容,其它人解开加密后的内容需要付出非常大的代价。无法做到严格的让要保护的视频不被录制,原因在于你需要在客户端播放出视频的原内容,解密的流程在客户端的话不法分子就转载 2017-08-04 17:28:57 · 3229 阅读 · 0 评论 -
ffmpeg sws_scale函数详解
1. 介绍如果想在两个AVPixelFormat之间转换,例如将YUV420P 转换到YUV422,亦或者是要改变其大小,放大缩小什么的,就要用到ffmpeg中的swscale函数了,此版本基于ffmpeg 3.3.3版本开发1. AVPixelFormat定义enum AVPixelFormat { AV_PIX_FMT_NONE = -1, AV_PIX_FMT_Y原创 2017-08-11 17:39:19 · 10593 阅读 · 0 评论 -
ffmpeg集成libx264编码错误,提示“Input picture width(xxx) is greater than stride(0)” 问题解决
最近突然萌生了把常用音视频编码集成到ffmpeg库中,这样就不要每次都需要去编译第三方库和集成第三方库了,在调试ffmpeg+x264+fdk-aac的时候,aac成功测试通过,无奈libx264,老提示编码失败,提示如下:[libx264 @ 00de2980] Input picture width (480) is greater than stride (0)经过多放查找,和查看原创 2017-08-11 15:08:13 · 4527 阅读 · 0 评论 -
AAC音频格式简析
1.ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般的AAC解码器都需要把AAC的ES流打包成ADTS的格式,一般是在AAC转载 2017-08-10 17:13:18 · 799 阅读 · 0 评论 -
win10 msys2 vs2015 ffmpeg3.3.3 编译 带x264 aac
本文前半部分环境配置,摘自网友整理,原文出处:http://blog.csdn.net/longji/article/details/54891236 后半部分是自己编译总结和脚本:01 环境win10x64企业版。vs2015update3企业版。Git(git version 2.10.0.windows.1)。02 下载ffmpeg代码git c原创 2017-08-02 17:23:47 · 3007 阅读 · 1 评论 -
使用vs2013或vs2015 编译ffmpeg
本篇原始出处也在 我的有道云笔记 中。参考的资料主要是下面两篇 1、http://www.vcmfc.com/portal.php?mod=view&aid=272、(要翻墙)http://siliconandlithium.blogspot.jp/2014/01/building-ffmpeg-in-visual-studio.html 我的系统是Win10 LTS转载 2017-08-02 14:11:12 · 4439 阅读 · 0 评论 -
PortAudio+webrtc+lame实现采集降噪增益mp3
一、使用PortAudio采集首先你应该下载这个库编出动态库放好头文件和链接库lib,这些都不是重点不赘述。//定义pa的sample类型为int16,这个可以配合webrtc模块#define PA_SAMPLE_TYPE paInt16 //采用双字节,一个sample=sizeof(int)=2字节#define SAMPLE_RATE (32000)转载 2017-07-20 16:33:15 · 1209 阅读 · 0 评论 -
视频学习笔记:Android ffmpeg解码多路h264视频并显示
背景Android设备上使用ffmpeg解码多路h264视频,抽取了一个简单demo方便日后参考,在此记录一下。demo中主要涉及以下功能:1.ffmpeg解码h264视频为yuv帧 2.使用ffmpeg将yuv帧转换为可以在画布上渲染的rgb帧 3.将android的SurfaceView类传入jni层并使用rgb帧进行渲染 4.使用Java类包装c++类,多线程解码转载 2017-07-14 11:22:35 · 2215 阅读 · 1 评论 -
将AAC格式的RTP流存储为可以播放的m4a文件
搜索Mediacodec编码AAC后存储文件,确实能找到类似的解决方案,但都出自stackoverflow.com,并且还有出入,经过调试后确认,通过下面方式保存的AAC文件可以播放。Mediacode编码AAC,是使用audio/mp4a-latm 类型编码,编码出来的AAC帧加上ADTS头后,就可以正常播放,但关键的是下面的几个参数需要给正确:aac的profile, sample rat转载 2017-06-30 16:02:20 · 598 阅读 · 0 评论 -
Android手机H264软编码参数优化
做了一段时间的视频后,最先碰到的是花屏,解码端丢包的花屏,先是通过抓取编码后的BITMAP,发现解码出来就是花屏的,所以考虑优化编码来减少因为丢包产生的花屏;另外调整丢包策略规避解码花屏的问题.1、X264编码参数调整:H264 FF_PROFILE_H264_BASELINE、 FF_PROFILE_H264_MAIN两种编码差异,其中最明显的差异是profile_idc_basel转载 2017-06-30 15:19:34 · 1247 阅读 · 0 评论 -
AAC的ADTS头文件信息介绍
ADTS是Audio Data Transport Stream的简称。博文转自:http://blog.csdn.net/jay100500/article/details/52955232是AAC音频文件常见的传输格式。有的时候当你编码AAC裸流的时候,会遇到写出来的AAC文件并不能在PC和手机上播放,很大的可能就是AAC文件的每一帧里缺少了AD原创 2017-06-20 18:01:11 · 330 阅读 · 0 评论 -
H.264 基础及 RTP 封包详解
http://blog.csdn.NET/perfectpdl/article/details/6633841一. h264基础概念1、NAL、Slice与frame意思及相互关系 1 frame的数据可以分为多个slice.每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice 数据没有依赖关系。 NAL 是用来将转载 2016-12-02 15:20:35 · 478 阅读 · 0 评论 -
利用FFmpeg玩转Android视频录制与压缩(二)
请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362预热时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女票已经分了又合,合了又分,本屌依旧骄傲单身。上一次啊我们大致说了一些简单的FFmpeg命令以及Java层简单的调用方式,然后有很多朋友在github或者csd转载 2017-07-28 10:57:10 · 1391 阅读 · 0 评论 -
利用FFmpeg玩转Android视频录制与压缩(三)
请尊重原创,转载请注明出处http://blog.csdn.net/mabeijianxi/article/details/73011313前言上一回说到啊,这千秋月没是佳人离别,时逢枯枝落旧城,却待新兰满长街,战场上还未至瑞雪,各位看官不好意思,今日帝都又雾霾,来听小老二说书的别忘了加个口罩。在利用FFmpeg玩转Android视频录制与压缩(二)中我们基本编写完了所有模转载 2017-07-28 10:58:38 · 470 阅读 · 1 评论 -
vs2017使用libfdk-aac 链接提示没有“COMDAT 0xF”错误解决
使用migw编译完成libfdk-aac时候,使用vs2017链接,提示如下错误解决:1. 重新编译libfdk-aac 编译脚本为: ./configure --prefix={you path} --disable-static最终生成libfdk-aac.dll.a文件,修改vs配置 链接libfdk-aac.dll.a文件即可解决原创 2017-08-22 11:51:04 · 1136 阅读 · 0 评论 -
PCM音频数据的声音分贝值计算
PCM声音是重采样为无符号16bit的深度的,然后我们需要得到某一时间(一般是零点几毫秒)PCM所在内存的地址和PCM声音的大小,而16bit也就是16bit/8bit=2byte,在c语言中2byte用short int来表示,因此我们可以从PCM所在地址里面按顺序取出2个byte的数据然后转化成short int的值就可以拿到当前采样点的振幅了,获取的方式是用c语言中的memcpy拷贝2个字节...原创 2019-09-18 15:38:04 · 5567 阅读 · 2 评论 -
18个实时音视频开发中会用到开源项目
实时音视频的开发学习有很多可以参考的开源项目。一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。我们今天汇总了一些能帮助到正在学习或进行音视频开发的实时音视频开发者们的开源项目与几个也在为开源...原创 2019-06-27 15:48:19 · 1537 阅读 · 0 评论 -
编解码器:Opus编码器内置FEC功能测试
Opus功能十分强大,内置了FEC和DTX功能,Opus对FEC的使用方式是动态的,也就是说Opus能根据对端反馈的丢包率来动态的使用FEC功能,48k采样率,单声道、16k码率并且帧长度为20ms时,这种情况下只有在丢包率高于20%的时候Opus才会使用FEC,今天主要对Opus在这种条件下的FEC的功能进行了测试,本问是基于Opus接口的那篇文章写的,如果没看过可以链接到编解码器:Opu...原创 2019-06-26 16:14:30 · 1387 阅读 · 0 评论 -
编解码器:Opus编解码器的接口及使用
1.源码下载及编译编解码器版本采用opus-1.3-beta,opus官网:https://www.opus-codec.org/下载完成后解压源码,在VS2015上打开源码 opus-1.3-beta\win32\VS2015\opus.sln,共有5个项目,其中opus项目是opus编解码器的主要实现以及对外部提供接口,实际写程序的时候一定是基于该项目中接口的,opus_demo是基于...转载 2019-06-26 16:10:45 · 2533 阅读 · 0 评论 -
语音质量评价方法-【音频质量专题】
主要内容:1.信噪比(Signal-to-NoiseRatio,SNR)2.分段信噪比(Segment Signal-to-Noise Ratio,SegSNR)3.PESQ(PerceptualEvaluationofSpeechQuality)4.对数似然比测度(LogLikelihoodRatioMeasure,LLR)5.对数谱距离(logspect...转载 2019-03-19 15:41:39 · 5067 阅读 · 0 评论 -
android音视频指南-支持的媒体格式
本文描述了Android平台提供的媒体编解码器、容器和网络协议支持。作为应用程序开发人员,您可以使用任何可以在任何Android设备上使用的媒体编解码器,包括Android平台提供的媒体编解码器和特定于设备的媒体编解码器。然而,使用与设备无关的媒体编码配置文件是一种最佳实践。下表描述了Android平台中内置的媒体格式支持。不保证在所有Android平台版本上都可用的编解码器在括号中注明,...翻译 2018-10-30 10:30:48 · 284 阅读 · 0 评论 -
WebRTC中的Opus编码揭秘
WebRTC中默认是采用Opus编码,Opus编码是由silk编码和celt编码合并在一起,silk编码是由skype公司开源的一种语音编码,特别适合人声,适合于Voip语音通信。celt和mp3,aac类似,适合于传输音乐。Opus编码具备以下特点:6 kb /秒到510 kb / s的比特率采样率从8 kHz(窄带)到48 kHz(全频)帧大小从2.5毫秒到60毫秒支持恒定比特率(CBR)和可...原创 2018-07-11 15:14:17 · 2093 阅读 · 0 评论 -
小窗播放视频的原理和实现(上)
本文对小窗视频播放进行了详细的研究,针对几种实现方案进行了深入的对比分析,进而给出实现小窗视频播放的最优解。其中通过对系统源码的分析,详细探究了如何完美地实现移动、缩放等效果,很有技术深度。文中几种方案的对比,以及SurfaceView、GLSurfaceView和TextureView相关知识点的讲解,非常实用,值得收藏。— 责任编辑 junyihan由于文章篇幅较长,将分为转载 2018-01-05 09:34:45 · 6228 阅读 · 0 评论 -
Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)
在前面Android平台下使用FFmpeg进行RTMP推流(摄像头推流)的文章中,介绍了如何使用FFmpeg进行H264编码和Rtmp推流。接下来讲分几篇文章来介绍如何使用Android系统的MediaCodec进行H264硬编码,然后封装推流。这一块涉及的内容很多,其中涉及一些基础知识也会有单独文章介绍比如flv格式。这篇文章主要介绍如何用MediaCodec进行编码,然后将编码后的数据进行fl转载 2017-12-25 16:11:34 · 5780 阅读 · 1 评论 -
android 音频采集、FLTP重采样与AAC编码推流
相比较视频编码,音频编码要简单很多,主要就是将采集到的音频源数据PCM编码AAC.MediaPlus中FFmpeg使用的是libfdk-aac编码器,这里有个问题需要注意下:FFmpeg已经废弃了AV_SAMPLE_FMT_S16格式PCM编码AAC,也就是说如果使用FFmpeg自带的AAC编码器,必须做音频的重采样(重采样为:AV_SAMPLE_FMT_FLTP),否则AAC编码是失败的。转载 2017-11-30 09:49:24 · 4154 阅读 · 0 评论 -
值得推荐的C/C++框架和库
【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测转载 2017-10-24 15:21:46 · 573 阅读 · 1 评论 -
【网易 MC】音频处理与压缩技术
在视频或者音频通话过程中,一方面为了减小原始声音数据的传输码率,需要进行音频压缩,另一方面为了得到更高质量的音质,需要进行音频处理。如何处理好这两方面,保证声音传播的高真性,是个技术活儿!音频处理的方法主要包括:音频降噪、自动增益控制、回声抑制、静音检测和生成舒适噪声,主要的应用场景是视频或者音频通话领域。音频压缩包括各种音频编码标准,涵盖 ITU 制定的电信领域音频压缩标准(G.7xx 系列转载 2017-09-22 09:53:25 · 525 阅读 · 2 评论 -
FFmpeg学习—android 利用ffmpeg 集成libfdk-aac 录制aac 音频文件
ffmpeg 自带aac 编码器但是 不支持 AV_SAMPLE_FMT_S16 的采样,所以本文采用libfdk-aac 进行aac的编码,其中libfdk-aac编译步凑参考:http://blog.csdn.net/xiaibiancheng/article/details/69676965,ffmpeg 编译步凑参考:http://blog.csdn.net/xiaibianchen转载 2017-08-28 14:10:39 · 784 阅读 · 0 评论 -
H264实时编码及NALU,RTP传输(续)(ZZ)
http://wmnmtm.blog.163.com/blog/static/382457142011920102618122/H264实时编码及NALU,RTP传输(续)(ZZ) 2011-10-20 10:26:18| 分类:RTP |字号 订阅对h.264压缩视频码流中i帧的提取(firstime)2010-06-30 09:1转载 2016-12-02 15:19:06 · 769 阅读 · 1 评论 -
H.264 RTP Streaming
據RFC3984以RTP 封裝H.264 raw data來作video streaming.1.H.264 raw data以00 00 01 或 00 00 00 01作為開頭(Start Code),接著是8 bit NALU NALU的format +---------------+ |0|1|2|3|4|5|6|7| +-+-+-转载 2016-12-02 15:08:18 · 445 阅读 · 0 评论 -
g729源码分析-8-内存更新打包
得到g729和自适应码本增益与固定码本增益后,就可以根据两者解码出当前帧的激励,然后存放在历史激励数组当中即更新自适应激励码本代码片段: for (i = 0; i { /* exc[i] = gain_pit*exc[i] + gain_code*code[i]; */ /* exc[i] in Q0 gain_转载 2015-03-16 14:12:01 · 599 阅读 · 0 评论 -
g729源码分析-6-固定码本搜索
g729自适应激励部分在基音周期中分析了.g729固定码本搜索和g723极其类似,相应的算法可以参考g723的算法.但作为编码的一个重要环节,又不得不提一下.考虑到笔者那已经少得可怜的脑细胞,就一笔带过吧.首先有这么一行: gain_pit = G_pitch(xn, y1, g_coeff, L_SUBFR);gain_pit 其实是自适应码转载 2015-03-16 14:10:18 · 677 阅读 · 0 评论 -
g729源码分析-5-基音周期搜索(下)
前面两节讲完了g729基音周期搜索的基本流程与依据这里结合代码,进一步讲述这一过程整数基音周期搜索比较简单分成三段搜索,每段的权值不同,这在之前分析过了,不详述了分数基音周期搜索是针对每个子帧进行的每个子帧在开环基音周期附近,搜索闭环基音周期首先构造出冲激响应 W(z)/A(z) 即感知加权滤器和综合滤波器串联而成的系统代码片段:转载 2015-03-16 14:09:38 · 734 阅读 · 0 评论 -
g729源码分析-2-共振锋感知加权
不同于g723固定系数的共振峰感知加权g729的共振峰感知加权是自适应的.perc_var 这个函数来对共振峰感加权进行估值我们先看itu的文档 3.3节 的式30,这是一个判断语音频谱是否平坦的一个条件.因为人类语音的频谱有个特点,越高频的共振峰的能量会越弱.而共振峰感知加权要注意这个现象,如果频谱倾斜了(高频共振峰能量弱),要加强加权系数根据转载 2015-03-16 14:05:21 · 623 阅读 · 0 评论 -
g729源码分析-开篇
完成了g723,打算先看看g729.大致扫了一篇编解码框图.都是基于10阶线性预测(10e lpc)看到了熟悉的莱文森德宾递推,基音周期搜索等。感知加权滤波器的设计有所不同。自适应激励与固定码本激励部分基本都差不太多。g729的处理的数据块为10ms,80个采样,相对g723编码时延更低。g729的高通滤波也比较纠结,转载 2015-03-16 14:03:16 · 1413 阅读 · 0 评论 -
g729源码分析-11-后置滤波处理(二)
g729的长时后置滤波,最后还有一些细节处理会再次升抽样,用一个129的样点对激励进行升抽样,并与search_del的升抽样进行比较,哪个相关大选取哪个 /* Filtering with long filter */ compute_ltp_l(ptr_sig_cadr, ltpdel, phase, ptr_sig_pst0,转载 2015-03-16 14:13:48 · 643 阅读 · 0 评论 -
g729源码分析-7-增益量化
现在来分析g729的增益量化,这里包含两个增益,一个是自适应码本的增益gp,一个是固定码本的增益gc由于自适应码本与固定码本已经被搜索出来了,就可以根据这两级码本,与反量化的Az系数进行卷积,得到解码的语音信号(包含未知变量gc与gp)利用这个解码的语音信号与目标语音信号方差最小为准则,在增益码本里做搜索,搜索出最佳增益即itu文档中的3.9节,公式63.转载 2015-03-16 14:11:25 · 559 阅读 · 0 评论