采样频率

ffmpeg相关时间概念

半腔热情 提交于 2020-03-22 15:36:51
v_rescale_q用于计算Packet的PTS。av_rescale_q的返回值是一个很大的整数,且每次计算的结果间隔很大。 不同于avcodec_encode_video改变AVCodecContext *avctx的pts(小整数,且间隔小)。 av_rescale_q(a,b,c)是用来把时间戳从一个时基调整到另外一个时基时候用的函数。它基本的动作是计算a*b/c,但是这个函数还是必需的,因为直接计算会有溢出的情况发生。AV_TIME_BASE_Q是AV_TIME_BASE作为分母后的版本。它们是很不相同的:AV_TIME_BASE * time_in_seconds = avcodec_timestamp而AV_TIME_BASE_Q * avcodec_timestamp = time_in_seconds(注意AV_TIME_BASE_Q实际上是一个AVRational对象,所以你必需使用avcodec中特定的q函数来处理它)。 H264/90000,代表时钟频率必须是90000 背景知识: (一个AAC原始帧包含一段时间内1024个采样及相关数据) 1. 视频时间戳 pts = inc++ *(1000/fps); 其中inc是一个静态的,初始值为0,每次打完时间戳inc加1. 在ffmpeg,中的代码为 pkt.pts= m_nVideoTimeStamp++

谈谈RTP传输中的负载类型和时间戳

耗尽温柔 提交于 2020-02-19 18:49:43
最近被RTP的负载类型和时间戳搞郁闷了,一个问题调试了近一周,终于圆满解决,回头看看,发现其实主要原因还是自己没有真正地搞清楚RTP协议中负载类型和时间戳的含义。虽然做RTP传输,有着Jrtplib和Ortp这两个强大的库支持,一个是c++接口,一个是c语言接口,各有各的特点,各有各的应用环境,但是仅仅有库就能解决一切问题吗?可能仿照着一些例子程序,你能够完成主要的功能,但一旦问题发生了,不清楚原理你是很难定位和解决问题的,所以在此,用我的经验劝劝大家,磨刀不误砍柴工,做应用还是先把原理搞清楚再动手吧…… 看这篇文章之前,首先你应该知道什么是RTP协议,可以去看RTP协议原文(RFC3550协议),也可以看一些网友对RTP协议的讲解的文章,很多,这里我提供一篇我个人觉得写得还不错的:http://blog.csdn.net/bripengandre/archive/2008/04/01/2238818.aspx 。 下面言归正传,首先谈谈RTP传输中的负载类型吧 。 首先,看RTP协议包头的格式: 10~16 Bit为PT域,指的就是负载类型(PayLoad),负载类型定义了RTP负载的格式,协议原文说该域由具体应用决定其解释。 目前,负载类型主要用来告诉接收端(或者播放器)传输的是哪种类型的媒体(例如G.729,H.264,MPEG-4等),这样接收端(或者播放器

RT600 I2S外设介绍及应用

穿精又带淫゛_ 提交于 2020-02-14 14:48:50
恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作。不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核与高性能Cadence Tensilica HiFi 4 音频DSP内核相结合,适用于32位沉浸式音频播放和视频用户界面应用。i.MX RT600旨在通过安全、功率优化的嵌入式处理器充分挖掘语音辅助终端节点的潜力,因此针对音频数据的采集、传输和处理,i.MX RT600都有丰富的硬件资源进行支持。其中,针对RT600的I2S外设,本文详细地进行了介绍,并基于i.MX RT600 EVK开发板,在RT600的DSP端(HiFi4)实现了一个音频数字回环的demo。 一、I2S介绍 1.1 I2S 接口 I2S总线为数字音频流的传输提供了标准的通信接口,由飞利浦制定。I2S总线规范定义了一种3线串行总线,分别是: 1、串行时钟SCK(也称位时钟BCLK),这是SDA线上数据的位时钟。对应SDA的每一个数据位,SCLK都有产生一个脉冲。 2、帧时钟WS(也称LRCK,或FSYNC),以大多数单一立体声格式的PDM数据来说,WS用于切换左右声道的数据;在DSP或TDM模式下用作帧定界符。此外,I2S的采样频率是由WS频率决定的。 3、串行数据(SDA),就是用二进制表示的音频数据流

基于matlab的fft变换中参数的设置

≡放荡痞女 提交于 2020-02-14 14:00:52
https://wenku.baidu.com/view/9eacc76bb84ae45c3b358cba.html 此网址可让fft变换中相关的参数讲解的透彻; 简单总结:N为采样点数,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。 假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的 幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。 而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点 N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被 N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:(1) 。由上面的公式可以看出,Fn所能分辨到频率为 Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz

I2S 总线学习:1-有关概念

ⅰ亾dé卋堺 提交于 2020-02-13 23:41:22
背景 I2S总线 是一种常见的总线,也是需要掌握的。 概念 I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。 I2S的总线规范 I2S有4根线,包括:IISDI(串行数据输入),IISDO(串行数据输出),IISLRCK(左右通道选择),和SCLK(串行位时钟)。 产生 IISLRCK 和 IISCLK 的设备是主设备。 I2S有3个主要信号: 1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。 帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK的频率等于采样频率。 3.串行数据SDATA,即用二进制补码表示的音频数据。(MSB ---> LSB:数据由高位到低位依次传输) 4、一般还有MCLK,主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。 有时为了使系统间能够更好地同步

速度采样频率

安稳与你 提交于 2020-02-02 02:01:31
卓老师 ,我有一个信号与系统的问题想请教。按照时域采样定理,采样频率≥2倍的信号频率,才能得到信号全部信息。 而以智能车中的编码器测速为例。我们知道测速周期在可接受范围内越小越利于控速,比如2ms。但2ms采样一次速度,究竟能不能得到速度信号的全部信息我们却不得而知,归根结底是因为不知道速度信号的频率是多少。 那么智能车速度信号的频率要如何得知呢? 速度光电编码盘 (回复) 提问 中的问题包括有三个子问题: (1)根据采样定理,如何采集速度信号? (2)使用光电码盘测量速度信号主要误差来源是什么? (3)根据车模速度控制需要究竟需要按照什么周期采集速度信号? 同学们学习信号采样定理,最容易犯的错误就是机械的照搬定理的结论,却没有注意到定理的使用条件。 信号采样定理的应用条件有两个:一是信号是一个频带受限信号,即信号有一个最高频率;二是除了知道信号频谱的最高频率之外,不再知道其它信号的额外信息了。在此条件下,信号的奈奎斯特频率,即信号的采样频率就是信号的最高频率的两倍。 如果额外还知道信号的其它条件,比如信号是一个窄带信号,除了最高频率之外,还有最低频率;此时就可以使用低得多频率完成信号的采样。这一点可以参照郑君里教授《信号与系统》第三章的最后一个习题。 举一个极端的例子,如果已知信号是一个正弦波,即信号的频谱是一个线谱,此时实际上只需要任意对信号采样三个不同时间的数据

RTP时间戳

时光毁灭记忆、已成空白 提交于 2019-12-27 01:39:19
http://xingyunbaijunwei.blog.163.com/blog/static/7653806720126121014111/ —————————————————————————————————————————————————————————— 基本概念: 时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000。 时间戳增量 :相邻两个RTP包之间的时间差(以时间戳单位为基准)。 采样频率 : 每秒钟抽取样本的次数,例如音频的采样率一般为8000Hz 帧率 : 每秒传输或者显示帧数,例如25f/s RTP时间戳课本中的定义: RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位。 时间戳反映了RTP分组中的数据的第一个字节的采样时刻 。在 一次会话开始时的时间戳初值也是随机选择的 。即使是没有信号发送时,时间戳的数值也要随时间不断的增加。 接收端使用时间戳可准确知道应当在什么时间还原哪一个数据块,从而消除传输中的抖动 。 时间戳还可用来使视频应用中声音和图像同步 。 在RTP协议中并没有规定时间戳的粒度,这取决于有效载荷的类型。因此RTP的时间戳又称为媒体时间戳

PCM音量控制

≡放荡痞女 提交于 2019-12-22 02:23:37
http://blog.jianchihu.net/pcm-volume-control.html 一.声音的相关概念 声音是介质振动在听觉系统中产生的反应。声音总可以被分解为不同频率不同强度正弦波的叠加(傅里叶变换)。 声音有两个基本的物理属性: 频率 与 振幅 。声音的振幅就是音量,频率的高低就是指音调,频率用赫兹(Hz)作单位。人耳只能听到20Hz到20khz范围的声音。 模拟音频 (Analogous Audio),用连续的电流或电压表示的音频信号,在时间和振幅上是连续。在过去记录声音记录的都是模拟音频,比如机械录音(以留声机、机械唱片为代表)、光学录音(以电影胶片为代表)、磁性录音(以磁带录音为代表)等模拟录音方式。 数字音频 (Digital Audio),通过采样和量化技术获得的离散性(数字化)音频数据。计算机内部处理的是二进制数据,处理的都是数字音频,所以需要将模拟音频通过采样、量化转换成有限个数字表示的离散序列(即实现音频数字化)。 采样频率 (Sampling Rate),单位时间内采集的样本数,是采样周期的倒数,指两个采样之间的时间间隔。采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号,这其实就是著名的香农采样定理。CD音质采样率为 44.1 kHz,其他常用采样率:22.05KHz,11.025KHz

音频信号混叠

本小妞迷上赌 提交于 2019-12-18 08:18:59
奈奎斯特定理:采样率必须是被采样数据的2倍以上. 1.什么是混叠? 需要被采样的数字信号频率高于采样频率1/2的频率,高出来的频率将被重采样成低于采样率的1/2频 率的信号,高频信号被低频信号代替,两种波形完全重叠在一起,形成严重失真,这种频谱的重叠导致 的失真称为混叠. 2.如何消除混叠?两种方式:  <1>.提高采样频率 提高到被采样频率的2倍以上,但不可能将采样频率提高到无限大, 通过提高采样频率避免混叠是有限 制的. <2>.采用抗混叠滤波器. 在采样频率一定的,通过低通滤波器滤掉高于1/2的频率成分,低通滤波器的信号则可避免出现频率混叠. 若不能确保信号的最高频率小于采样频率的1/2,就必须通过低通滤波器限制输入信号的频率,过滤掉高 于采样率1/2的频率。 3.注意 低通滤波器:通低频,阻高频. 高通滤波器:通高频,阻低频. Reference 来源: CSDN 作者: 慢慢的燃烧 链接: https://blog.csdn.net/u010164190/article/details/103584246

python读取.edf文件

微笑、不失礼 提交于 2019-12-06 19:41:25
目录 MNE-python读取.edf文件 案例 第一步:导入工具包 第二步:加载本地edf文件 第三步:获取原始数据中事件 第四步:根据事件ID获取对应事件 第五步:绘制事件图 本教程为脑机学习者Rose原创(转载请联系作者授权)发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:903290195 MNE-python读取.edf文件 EDF,全称是 European Data Format,是一种标准文件格式,用于交换和存储医疗时间序列。 该格式文件能够存储多通道的数据,允许每个信号拥有不同的采样频率。 在内部,它包括标题和一个或多个数据记录。标题包含一些一般信息(患者标识,开始时间......等等)以及每个信号的技术规格(校准,采样率,过滤,......等等),编码为 ASCII 字符。数据记录包含小端 16 位整数的样本。因此,EDF 也是多导睡眠图(PSG)录音的流行格式。 案例 python读取edf文件,可以通过mne实现 方法原型: 方法原型: mne.io.read_raw_edf(input_fname, montage='deprecated', eog=None, misc=None, stim_channel='auto', exclude=(), preload=False, verbose=None) """ input