音视频综合
xiaojun11-
勤能补拙,奋发ing
展开
-
windows下CMake fdk-aac
转载:https://blog.csdn.net/KayChanGEEK/article/details/103216139?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.c转载 2020-08-24 11:41:19 · 385 阅读 · 0 评论 -
Wireshark抓取RTP包,还原语音
近在做基于SIP的VoIP通信研究,使用Wireshark软件可以对网络流量进行抓包。VoIP使用RTP协议对语音数据进行传输,语音载荷都封装在RTP包里面。要对传输中的语音进行截获和还原,需要通过Wireshark对RTP包进行分析和解码。该过程如下:1.打开截获的pcapng文件,点击Telephony-->RTP-->Show All Streams.2.根据发送地址...转载 2019-10-24 18:11:04 · 856 阅读 · 0 评论 -
ffmpeg AV_SAMPLE_FMT_FLTP to AV_SAMPLE_FMT_S16
ffmpeg 2.0 音频解码出来的数据格式不符合Android音频格式 问题原因:ffmpeg2.0最新的解码出来的数据是 sample_fmts = AV_SAMPLE_FMT_FLTPandroid需要的音频格式:sample_fmts (AV_SAMPLE_FMT_S8, AV_SAMPLE_FMT_S16) 解决方法:1, 创建转换对象 void audio_...转载 2014-09-25 22:50:17 · 7117 阅读 · 1 评论 -
音频的参数--采样位数、采样频率
采样位数---也就是表示的值的范围也就越大采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样位数,也称为量化精度。从码率的计算公式中可以清楚的看出码率和采样位数...转载 2014-09-25 22:35:18 · 17381 阅读 · 0 评论 -
AAC ADTS格式分析 .
1.ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般的AAC解码器都需要把AAC的ES流打包成ADTS的格式,一般是在AAC ES流前...转载 2014-09-02 14:38:51 · 726 阅读 · 0 评论 -
AAC帧格式及编码介绍
参考资料:AAC以adts格式封装的分析:http://wenku.baidu.com/view/45c755fd910ef12d2af9e74c.htmlaac编码介绍:http://wenku.baidu.com/view/0de48034f111f18583d05a65.htmlAAC音频压缩编码标准的ADTS与LATM的格式分析:http://wenku.baidu.com/v...转载 2014-08-26 06:49:54 · 957 阅读 · 0 评论 -
关于对H264码流的PS的封装的相关代码实现
转载:http://www.cnblogs.com/lidabo/p/6604988.html 1、写在开始之前: 最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的看文档,整理逻辑,也就都顺利解决了,下面把大致的一些流程代码贴出来分享下...转载 2018-06-01 09:53:42 · 296 阅读 · 0 评论 -
FFmpeg 中的一些参数意义(tbr, tbn, tbc)
一、系统打印命令解析在此命令执行过程中,我们可以看到如下数据:1、ffmpeg在运行过程中需要用到的lib库如下 libavutil 52. 47.101 / 52. 47.101 libavcodec 55. 37.102 / 55. 37.102 libavformat 55. 19.103 / 55. 19.103 libavdevic...转载 2018-03-27 11:03:39 · 11967 阅读 · 1 评论 -
ffmpeg里音频 API的 调用 以及 音频数据的排列(是否带p)
摘抄自:https://blog.csdn.net/zhuweigangzwg/article/details/51499123一:关于音频分片的问题 [cpp] view plain copyenum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///&...转载 2018-03-27 10:12:42 · 470 阅读 · 0 评论 -
FFMPEG之AVRational TimeBase成员理解
自己的理解:time_base 含义是 时间 刻度, 类似于标尺 AVStream->AVCodecContex->time_base {1,100}packet的 pts 是 一连串递增的 时间点 0 4 8 12 16 。。。真实的显示时间是 pts * AVStream->AVCodecContex->time_base 换算成秒, 音视...转载 2018-03-26 17:37:55 · 5243 阅读 · 2 评论 -
逐行扫描和隔行扫描的区别,原理
转自:http://blog.sina.com.cn/s/blog_887884050100yeun.html更详细:http://blog.163.com/liukang_0404@126/blog/static/556825812012415115653715/ 隔行扫描(Interlaced)和逐行扫描(Progressive)都是在显示设备表示运动图像的方法,隔行扫描方式是每一...转载 2017-04-20 09:46:55 · 32432 阅读 · 2 评论 -
运动补偿与运动估计
摘抄自:http://www.cnblogs.com/AndyJee/p/3724917.html 谢谢版主 自己注: 帧间编码:根据不同的参考值(前一帧的宏块)获得不同的预测值,找到最优的预测值并找到对应的运动矢量(也就是运动估计),并当前值减去预测值获得运动残差,进而保存 运动矢量和运动残差 运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它...转载 2017-03-28 18:22:10 · 10991 阅读 · 1 评论 -
JPEG图像压缩算法流程详解
转载:http://blog.csdn.net/carson2005/article/details/7753499多谢版主 例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块...转载 2017-03-22 17:54:22 · 1426 阅读 · 0 评论 -
DC系数和AC系数
转载自:http://www.itwendao.com/article/detail/280816.html IT问道 谢谢 DC系数: 直流系数 AC系数:交流系数 1、DC系数的中间格式计算 JPEG中为了更进一步节约空间,并不直接保存数据的具体数值,而是将数据按照位数分为16组,保存在表里面。这也就是所谓的变长整数编码VL...转载 2017-03-23 15:02:16 · 17167 阅读 · 0 评论 -
JPEG的DCT压缩原理,谁能通俗易懂解释一下?
转载自:https://segmentfault.com/q/1010000000510683 多谢看了这篇博文http://blog.csdn.net/jubincn/article/details/6882179,对JPEG的压缩原理还是有点模糊:1.JPEG经过离散余弦处理后为什么就能压缩图片大小?2.JPEG图片到底存储的是什么,压缩后减少的是什么?3.对每个像素点进行离散...转载 2017-03-20 13:48:19 · 6570 阅读 · 1 评论 -
混音算法
转载:http://blog.csdn.net/dancing_night/article/details/53080819 Wav文件直接反映了一个声音在每个时刻的大小值,比如说以下一段波形: 我们按每人0.1秒取一点,得到的wav文件数值就是0,1,1,-1,0,1。因此,假如我们能把许多Wav文件的数据直接相加,你听到的就是所有的声音,这就是混音器的原理。 ...转载 2016-12-16 18:14:56 · 8095 阅读 · 0 评论 -
音频编码参数介绍
摘自:http://baike.so.com/doc/940309.html 百度 自己总结:简单的说 声音是能量值,是按照波形表示的,也就是模拟信号 采样率(一秒采多少次样本), 采样大小(能表示的值,也就是振动的幅度) , 频率是一秒有多少个波形 采样率和频率的关系:一个波形中可以被采几次...转载 2014-12-13 13:31:13 · 3311 阅读 · 0 评论 -
openal的借鉴
因为之前在原公司上班的时候,用过openAL来播放PCM实时数据流.现在换了新公司又要求我用自己的方法写个音频播放器.我就选用这openAL H-,RzL/ 但是这次使用openAL的时候,就没之前那么顺了,哎,说多了都是泪啊~~~附上自己写的部分算是重要的代码,给大家分享一下,也好帮助:J}@*>c 新手少走些误区,或者是能够快速定位究竟是错在哪里。代码如下:pQ Y.MZSA I...转载 2015-03-05 16:47:16 · 1159 阅读 · 0 评论 -
MP4 seek状态 sample读取流程
前面一篇博客详细剖析了正常情况下,按照sample的顺序从前往后读取sample数据的流程,最重要的过程在于对那几张表的充分利用,将前面那篇博客的内容搞明白后,接下来的内容其实也很简单,这篇博客主要跟踪,在seek状态下的,sample内容的读取,即任意时间点对应的sampleIndex的确定,这里还需要确定的是关键帧的sampleIndex,有了sampleIndex之后,一切就和前面的博客流程...转载 2016-08-03 22:27:35 · 1108 阅读 · 0 评论 -
VC直接打开mp4文件
直接执行程序ShellExecute(NULL,L"open",L"d:/video/11.mp4",NULL,NULL,SW_SHOWNORMAL); 系统就会调用默认的执行程序,打开该视频原创 2016-07-01 16:26:44 · 1956 阅读 · 0 评论 -
如何将BGR转成YUV420
摘自:http://www.rosoo.net/a/201102/10948.html写了一个程序可以把openCV的BGR图像格式转换成YUV4:2:0,然后通 过FFmpeg的API把YUV4:2:0的图像编码压缩,最后利用live555把压缩后的buffer打包成RTP包,最后用Unicast将它们发 送出去。简单的说就是 BGR—>YUV4:2:0—>encode to b...转载 2015-03-13 15:13:02 · 4007 阅读 · 0 评论 -
转:最简单的基于 DirectShow 的视频播放器
50行代码实现的一个最简单的基于 DirectShow 的视频播放器本文介绍一个最简单的基于 DirectShow 的视频播放器。该播放器对于初学者来说是十分有用的,它包含了使用 DirectShow 播放视频所有必备的函数。直接贴上代码,具体代码的含义都写在注释中了:/* 雷霄骅 * 中国传媒大学/数字电视技术 * leixiaohua1020@126.com * */...转载 2016-08-09 11:31:25 · 1128 阅读 · 0 评论 -
H.264(层次结构,NAL,SPS) 详细重要参数
一 H.264句法1.1元素分层结构H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构,分别描述各个层次的信息。 图1H.264分层结构由五层组成,分别是序列参数集、图像参数集、片(Slice)、和宏块和子块。参数集是一个独立的数据单位,不依赖于参数集外的其它句法元素。图2描述了参数集与参数集外的句法元素之间的关系。 ...转载 2014-10-15 10:32:01 · 8219 阅读 · 0 评论 -
ts找 H264 I帧的完整性
一个mpeg2 ts流封装的h264视频流,怎么区分这个ts流中i, p, b帧起始位置,以及帧长?能从ts流中提取每个I帧,并且能识别I帧是否完整初步想法:1、找帧起始位置所在的ts包找视频PID包,其中 Packet_start_code_prefix==0x000001 && stream_id==0xE02、判别帧类型在这个PES视频包负载中 找nal起始标志 0x0000...转载 2014-10-15 10:04:09 · 3106 阅读 · 0 评论 -
TS的I帧
1.根据TS包头中的PID找到TS流里的PAT表,其TS的PID为0x00; 2.找到PAT表后,根据其中携带的PMT表的TS包PID找到PMT表; 3.找到PMT表后,根据其中携带视频的TS包PID就可以判断出包含视频数据的TS包; 4.对于mpeg-1和mpeg-2视频,一般在TS复用时一个PES包包含一个picture,对于mpeg-2 video,picture可以...转载 2014-10-13 17:15:32 · 2280 阅读 · 0 评论 -
图像、帧、片、NALU
图像、帧、片、NALU 是学习 H.264的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论:H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR帧的概念。对于 H.264中出现的一些概念从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。这里有几点值得说明:(1)、在 H.264协议中图像是个集合...转载 2014-10-11 16:44:33 · 1211 阅读 · 0 评论 -
H264 帧边界识别简介
H.264 将构成一帧图像所有nalu 的集合称为一个AU,帧边界识别实际上就是识别AU。因为H.264 取消帧级语法,所以无法简单地从码流中获取AU。解码器只有在解码的过程中,通过某些语法元素的组合才能判断一帧图像是否结束。一般来说,解码器必须在完成一帧新图像的第一个slice_header 语法解码之后,才能知道前一帧图像已经结束。因此,最严谨的AU 识别步骤如下:...转载 2014-10-11 10:51:01 · 946 阅读 · 0 评论 -
v4l2,是linux内核中的一种视频采集的API
百度百科 : http://baike.baidu.com/view/5494174.htm?fr=aladdin Vv4L2(video 4 linux 2)编辑V4L2有一段历史了。大约在1998的秋天,它的光芒第一次出现在Bill Dirks 的眼中。经过长足的发展,它于2002年11 月,发布2.5.46 时,融入了内核主干之中。然而直到今天,仍有一部分内核驱动不支持新的...转载 2014-09-26 06:57:24 · 1458 阅读 · 0 评论 -
获得与设置系统默认设备主音量音量大小以及静音控制函数
CoreApi::CoreApi(void){ CoInitializeEx(NULL, COINIT_MULTITHREADED); }CoreApi::~CoreApi(void){ }bool CoreApi::InitDeviceIds(void){ CString str; CString str_temp; IMMDeviceEnumerator* pEnu...转载 2015-05-18 14:27:55 · 1785 阅读 · 0 评论 -
Core Aduio API--Vista中音量控制的新特点(转)
Core Audio APIS : Vista 里面,一组新的用户态的音频组件提供给应用程序来改善应用程序操作音频的能力,包括以下的一些方面:低延时,几乎无故障的音频流。 提高可靠性 ( 很多音频函数从核心态移到了用户态 ) 提高了安全性 (在安全的,低优先级别的线程处理被保护的音频内容) 分配了特定的系统级别的规则 (console, multimedia, communica...转载 2015-05-18 14:23:20 · 564 阅读 · 0 评论 -
系统音频系统底层API[转]
Core Audio APIs 的优势: Windows Vista 、 Windows 7 、 Windows server 2008 等系统 音频系统相比之前的系统有很大的变化,产生了一套新的底层 API 即 Core Audio APIs 。该低层 API 为高层 API( 如 Media Foundation( 将要取代 DirectShow 等高层 A...转载 2015-05-18 11:51:01 · 1250 阅读 · 0 评论 -
openal 简单实用
这是一个快速的入门教程,将教你使用OpenAL播放音乐的最少步骤。OpenAL主要由3个实体构成:听众Listener, 声源Source, 以及缓存Buffer。听众Listener:就是你。Listener的位置是可以移动的。声源Source:类似一个话筒。它发出声音给听众听。和Listener一样,声源的位置也是可以移动的。例如oalTouch中实现了声音远近的控制(近响远轻),就是通过Li...转载 2015-03-06 17:45:18 · 911 阅读 · 0 评论 -
利用ffmpeg的filter混音
转载自:http://blog.csdn.net/dancing_night/article/details/53080385 谢谢版主 概述 流程介绍 流程如下 线程之间数据走向如下 代码 下载地址 概述一个简单的混音demo,把文件a和文件b的音频混为一个音频流输出并存为文件,只处理每个文件的第一个音频流 注:源代码是网友Larry_...转载 2016-12-16 17:45:57 · 1261 阅读 · 0 评论 -
PCM数据格式
转载:https://my.oschina.net/u/589963/blog/167526 1. 8 Bit 单声道: 1. 8 Bit 单声道:采样1 采样2 数据1 数据2 2. 8 Bit 双声道采样1 采样2 声道1数据1 声道2数据1 声道1数据2 声道2数据2 1. 16 Bit 单声道:...转载 2016-12-08 18:35:58 · 1054 阅读 · 0 评论 -
计算机中数据的存储和读取
总的来说就是,计算机中全是二进制数据的 0 1,表示成16进制也就是字节的存储0xFF,这些二进制对于计算机是没有任何意义的,之所以变成了有符号和无符号的各种类型(int char unsigned int) ,只是针对我们人来说的,人存进去整形数据,我们取的时候就得按照4个字节这样取数据( 还需要处理最高地址字节的高位符号位 )所以如何才能取出正确的数据,就得按照之前存储数...原创 2016-03-10 17:27:34 · 3236 阅读 · 0 评论 -
基于Media Foundation获取音频视频输入设备列表
摘自:秦建辉的专栏 个人独立博客:http://www.firstsolver.com/wordpress/开发工具:Visual Studio v2010Windows SDK v7.1版本历史:V1.0 2010年10月09日完成正式版本。功能描述:获取音频视频输入设备列表 接口函数:转载 2015-07-15 10:43:28 · 896 阅读 · 0 评论 -
FFMPEG之TimeBase成员理解
FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的typedef struct AVRational{ int num; ///< numerator int den; ///< denominator} AVRational;AVRational这个结构标识一个分数,num为分数,den为分母。...转载 2015-03-11 15:22:28 · 553 阅读 · 0 评论 -
视频、音频打时间戳的方法
http://blog.csdn.net/wfqxx/article/details/54971381. 视频时间戳 pts = inc++ *(1000/fps); 其中inc是一个静态的,初始值为0,每次打完时间戳inc加1. 在ffmpeg,中的代码为 pkt.pts= m_nVideoTimeStamp++ * (m_VCtx->time_bas...转载 2015-03-11 11:00:07 · 770 阅读 · 0 评论 -
总结TS中的pcr、dts、pts问题
转自楼主的----elva对于PTS_DTS_flags的重设此字段在PES头语法中,标识PTS与DTS在PES分组首部的出现情况,当出于某种需求要对此标志位进行修改,例如由‘3’ 修改为‘2’,即删除DTS,但仅仅修改了这个标志位并没有达到“删除DTS”的目的。虽然VLC等播放器可以正常解码且不报任何错误,在一些严格的解码器上,会无法识别新生成的数据。例如elecard分析软件会报告“无...转载 2014-10-30 17:42:56 · 6036 阅读 · 0 评论 -
MPEG2-TS音视频同步原理(PCR dts pts)
一、引言MPEG2系统用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次中。 在TS 层, TS头信息包含了节目时钟参考PCR(Program Clock Reference), 用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)。 在PES层, 在PES头信息里包含有表示时间戳PTS(Presenta...转载 2014-10-29 10:57:13 · 3736 阅读 · 0 评论