
音视频
文章平均质量分 65
Crazy learner
边学边记录
展开
-
为什么在摄像头领域播放声音需要拉功放?
内置音频系统的功率限制:摄像头通常被设计为低功耗设备,尤其是在电池供电的场景中,设备的功耗控制是极为关键的。音频信号的强弱:摄像头内部生成的音频信号通常是电平很低的模拟信号,无法直接驱动扬声器进行声音的播放。扬声器需要一定功率的信号来有效工作,而摄像头内置的音频输出电路往往不能提供足够的功率来驱动扬声器输出清晰的声音。虽然摄像头内置了拾音器和麦克风,能够实现声音的采集与传输,但当涉及到声音的播放时,功放的重要性就凸显出来了。功放还能够减少信号传输中的失真,提升信号的质量,使最终输出的声音更加清晰和纯净。原创 2024-10-10 18:53:06 · 711 阅读 · 0 评论 -
opus基础简介(github)
在 Opus 1.5 中,我们增加了一个基于深度学习的冗余编码器,通过在每个数据包的填充数据中嵌入一秒钟的恢复数据来增强丢包网络中的音频质量。DRED 由亚马逊网络服务公司 (Amazon Web Services) 最初资助开发,实施已开源,并在 IETF 开始了标准化过程: https://datatracker.ietf.org/doc/draft-ietf-mlcodec-opus-extension/ Opus 1.5 的发布不会改变 Opus 的许可协议或知识产权状态。原创 2024-09-27 16:19:43 · 1062 阅读 · 0 评论 -
视频解码基础讲解
整个流程包括了查找解码器、初始化解析器、分配和打开解码器上下文、读取和解析数据包、发送数据包到解码器、接收解码后的帧并写入文件,以及最后的资源释放。文件读取完毕后冲刷解码器,以读取出缓存在解码器的数据帧 flush decoder。根据指定的解码器ID初始化相应裸流的解析器 av_parser_init。分配解码器上下文 avcodec_alloc_context3。查找指定的解码器 avcodec_find_decoder。打开解码器和关联解码器上下文 avcodec_open2。原创 2024-08-06 20:21:49 · 305 阅读 · 0 评论 -
音频解码基础讲解
通过以上步骤和代码示例,你可以了解如何使用FFmpeg进行音频解码,从而将AAC等格式的音频文件解码为PCM数据。整个流程包括了查找解码器、初始化解析器、分配和打开解码器上下文、读取和解析数据包、发送数据包到解码器、接收解码后的帧并写入文件,以及最后的资源释放。文件读取完毕后冲刷解码器,以读取出缓存在解码器的数据帧 flush decoder。根据指定的解码器ID初始化相应裸流的解析器 av_parser_init。查找指定的解码器 avcodec_find_decoder。通过音频解码器进行解码。原创 2024-08-06 20:20:08 · 338 阅读 · 0 评论 -
FLV(Flash Video)
AVC Packet Type (1 byte, if AVC): 表示AVC视频包类型,0为AVC sequence header,1为AVC NALU,2为AVC end of sequence。Data Offset (4 bytes): 表示FLV头部的长度,通常为9,表示头部之后的数据开始位置。Type (1 byte): 表示Tag的类型,0x08为音频,0x09为视频,0x12为脚本数据。Frame Type (4 bits): 表示帧类型,1为关键帧,2为间隔帧,3为显示帧。原创 2024-08-06 20:19:18 · 922 阅读 · 0 评论 -
H264 NALU
每个NALU包含了一段编码后的视频数据,可以是一个完整的帧,也可以是帧的一部分。NALU的结构设计使得视频数据可以在不同的网络环境下传输,包括有线网络和无线网络。NALU是H.264标准中关键的一部分,通过将编码后的视频数据进行有效的封装和传输,确保了视频数据在各种网络环境下的可靠传输和高效解码。P帧通过参考之前的帧,存储的是当前帧与参考帧之间的差异信息,从而实现压缩。B帧(Bi-predictive frame): 双向预测内插编码帧,参考其前面一个或多个I帧或P帧及其后面的一个P帧来生成完整的图像。原创 2024-08-06 20:18:13 · 766 阅读 · 0 评论 -
字节(byte)与位(bits)
number_of_raw_data_blocks_in_frame (2 bits): 每帧中包含的AAC原始数据块的数量。假设我们有一个ADTS帧头,它由7字节(7 Bytes)组成,且这7字节总共包含56位(7 * 8 = 56 Bits)。在前面的内容中,我们提到了固定头包含了28位(28 Bits)的数据。在数据通信和存储中,数据的大小通常用字节来表示,而在描述数据的详细结构(例如协议头)时,通常使用位。copyright_identification_bit (1 bit): 版权标识位。原创 2024-08-06 20:17:01 · 1018 阅读 · 0 评论 -
AAC ADTC
这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。Advanced Audio Coding(高级音频解码)是一种由MPEG-4标准定义的有损音频压缩格式,由Fraunhofer发展,Dolby,Sony和AT&T是主要的贡献者。ADTS头文件的结构确保了音频数据流的同步和解码器能正确解析每一帧的音频数据。number_of_raw_data_blocks_in_frame (2 bits): 每帧中包含的AAC原始数据块的数量。原创 2024-08-06 20:16:03 · 615 阅读 · 0 评论 -
数据共享(浅拷贝)与数据独立(深拷贝)
深拷贝是指在拷贝对象时,不仅拷贝对象的引用,还会拷贝对象包含的实际数据内容。浅拷贝是指在拷贝对象时,只拷贝对象的引用,而不拷贝实际的数据内容。拷贝生成AVPacket2:分配新的数据缓冲区,将AVPacket1的数据内容拷贝到新的缓冲区中。数据访问和修改:两个Packet共享同一数据缓冲区,对数据的任何修改对两个Packet都可见。修改影响:对数据的修改会影响所有引用该数据的Packet,因为它们共享同一份数据。无需引用计数管理:每个Packet独立持有数据,不需要管理共享数据的引用计数。原创 2024-08-05 20:01:03 · 379 阅读 · 0 评论 -
ffmpeg内存模型
AVFrame与AVPacket类似,也使用引用计数机制来管理内存,确保多次引用同一缓冲空间时不会发生内存泄漏或过早释放的问题。FFmpeg在内存管理方面的策略,通过合理使用数据共享和独立数据以及引用计数机制,FFmpeg能够在性能和内存使用之间取得平衡。数据独立:每个Packet有独立的数据拷贝,避免了共享数据带来的管理复杂性,但会占用更多的内存。两个Packet的buf引用的是不同的数据缓存空间,每个Packet都有数据缓存空间的拷贝。当有新的Packet引用共享的缓冲空间时,将引用计数+1。原创 2024-08-05 20:00:13 · 260 阅读 · 0 评论 -
ffmpeg解码基本流程
这一步可以通过avcodec_find_decoder或avcodec_find_decoder_by_name函数来实现。首先,需要为解码器分配一个上下文,这一步通过avcodec_alloc_context3函数完成。这一步通过avcodec_parameters_to_context函数完成。这一步通过avcodec_close和avcodec_free_context函数完成。avcodec_receive_frame函数会将解码后的帧数据填充到AVFrame结构中。原创 2024-08-05 19:59:32 · 201 阅读 · 0 评论 -
ffmpeg基本结构
FFmpeg 是一个领先的多媒体框架,可以解码、编码、转码、mux、demux、流、过滤和播放几乎任何由人类和机器创造的内容。无论是简单的格式转换,还是复杂的音视频处理,FFmpeg都能胜任。libavutil: 提供了各种有用的工具函数和数据结构,例如内存管理、数据结构、数学运算等,是其他库的基础。libavfilter: 提供各种滤镜功能,可以对音视频数据进行各种处理,例如裁剪、缩放、去噪、加字幕等。ffmpeg: 最常用的命令行工具,用于转换多媒体文件的格式,支持广泛的转换参数和选项。原创 2024-08-05 19:58:55 · 182 阅读 · 0 评论 -
封装格式与音视频同步
封装格式(也称为容器格式)是指将音频、视频、字幕、元数据等多种数据流封装在一个文件中的文件格式。音视频同步是指在播放多媒体内容时,确保音频和视频流按正确的时间关系同步播放,以避免“口型不同步”现象。主从同步: 一般情况下,以视频为主同步,音频为从同步。通过理解封装格式和音视频同步的基础知识,可以更好地处理和优化多媒体内容的存储、传输和播放。不同步问题: 由于音频和视频编码、解码处理时间不同,可能导致音视频不同步。支持高质量视频和音频。日志记录: 记录音视频帧的时间戳、缓冲区状态等信息,分析不同步原因。原创 2024-08-05 19:58:09 · 969 阅读 · 0 评论 -
音频基础学习
交错模式(Interleaved Mode)和非交错模式(Non-Interleaved Mode)是音频数据存储和处理中的两种不同方法。音频基础知识涵盖了音频信号的基本属性、采样和量化、音频格式和编码、音频处理、以及常见的应用场景。一致的时间顺序:交错模式使得音频数据按时间顺序连续存储,便于播放设备和音频处理算法按时间顺序处理多声道数据。交错模式是将多声道音频数据按时间顺序交错存储的方式。简化缓冲区管理:在实时音频处理中,交错模式简化了缓冲区的管理,因为每个缓冲区包含所有声道的样本数据。原创 2024-08-05 19:57:26 · 1384 阅读 · 0 评论 -
视频基础学习
视频分辨率指的是每一帧图像的像素数量,通常以宽度×高度表示,如1920×1080(1080p),3840×2160(4K)。帧率指的是每秒钟显示的帧数,通常以帧每秒(FPS)为单位。每一帧是一个静态的图片,快速播放这些帧就形成了连续的动态视频效果。在不丢失任何数据的情况下压缩视频,常见于某些专业视频编辑和存储中。视频的基础知识涵盖了视频的构成、格式、编码、传输以及显示技术。常见的视频显示设备包括电视、电脑显示器、投影仪、智能手机和平板电脑。包括转场效果、滤镜、动画和其他视觉效果,提升视频的视觉吸引力。原创 2024-08-05 19:56:14 · 607 阅读 · 0 评论 -
图像RGB-YUV
绿色:Y=149.685, U=-74.125, V=-25.905。红色:Y=76.245, U=150.975, V=29.90。蓝色:Y=29.07, U=176.09, V=-100.0。白色:R=255, G=255, B=255。红色:R=255, G=0, B=0。绿色:R=0, G=255, B=0。蓝色:R=0, G=0, B=255。白色:Y=255, U=0, V=0。黑色:R=0, G=0, B=0。黑色:Y=0, U=0, V=0。绿色 (G): 表示绿色强度。原创 2024-08-05 19:54:52 · 464 阅读 · 0 评论 -
音视频录制与播放原理
图片来源于网上学习资料,零声学院!原创 2024-08-05 19:53:41 · 131 阅读 · 0 评论