
音视频开发进阶
文章平均质量分 84
程序员老舅
十年开发老哥
展开
-
通过UDP广播实现Android局域网Peer Discovering
本文将介绍以下知识点:1、TCP与UDP的区别;2、单播、多播、广播;3、Java中实现UDP的重要的类;4、Peer Discovering方案一、TCP vs UDPTCP:Transmission Control Protocol(传输控制协议)TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。TCP建立连接之后,通信双方都同时可以进行数据的传输,是全双工的。在原创 2022-05-24 20:09:55 · 796 阅读 · 0 评论 -
音视频直播系统之 WebRTC 实现1对1直播系统实战
一、搭建 Web 服务器前面我们已经实现过,但是没有详细说HTTPS服务 首先需要引入了 express 库,它的功能非常强大,用它来实现 Web 服务器非常方便 同时还需要引入 HTTPS 服务,并让 Web 服务运行于 HTTPS 之上即可var https = require('https');var express = require('express');var serveIndex = require('serve-index');// 使用 express 实现 WEB 服原创 2022-05-24 18:00:41 · 513 阅读 · 0 评论 -
WebRTC-Android硬编码流程详解
1.硬编解码的一些问题1.1.方块效应在我们视频电话时,快速移动摄像头时,会发现画面变出现很多方块。这就是方块效应。无论是要发送的TCP数据包,还是要编码的图像,都会出现在短时间内出现较大的数据量。TCP面对尖峰,可以选择不为所动,但如果视频编码也对尖峰不为所动,那图像质量就会大打折扣了。因为如果有几帧数据量特别大,但我们仍要把码率控制在原来的水平,那么就会损失比较多的图像信息,图像就会失真。通常的表现是画面出现很多小方块,看上去像是打了马赛克一样,也就是方块效应。1.2.开关硬编解码在原创 2022-05-24 17:36:06 · 2017 阅读 · 0 评论 -
WAV和PCM的关系和区别
一、什么是WAV和PCM?WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。PCM:PCM(Pulse Code Modulation----脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1原创 2022-05-23 20:38:26 · 7146 阅读 · 0 评论 -
RTSP协议详解
RTSP协议以客户服务器方式工作它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。1. 实时流协议RTSPRTSP[3]协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。1.1. RTSP协议简介要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体原创 2022-05-23 19:51:31 · 7346 阅读 · 0 评论 -
FFmpeg技术进行HTTP串流转RTMP的介绍
这个应用主要是将HTTP的串流转换成RTMP协议传送到Adobe Flash Media Server或Wowza Media Server的媒体服务器。RTMP的协议有以下的参数:RTMP: 其原始采用TCP port 1935 RTMPS: 将RTMP加载到SSL的安全机制,就类似HTTPS。 RTMPE: 采用Adobe所提供给RTMP所发展的加密版本。 RTMPT: 在RTMP上加挂he RTMP protocol 封裝在HTTP請求中,可以穿越防火牆。這是一個很不错的協議,使用TCP原创 2022-05-23 17:31:21 · 1038 阅读 · 0 评论 -
音视频面试题:什么是秒开视频? 如何去秒开视频?
给大家带来一些音视频的面试题,或者说是一些开发思路吧,不希望它成为以后你面试的八股文...这次主要是视频秒开方面。秒开是指用户点击播放到看到画面的时间非常短,在 1 秒之内。为什么需要秒开?目前主流的直播协议是 RTMP,HTTP-FLV 和 HLS,都是基于 TCP 的长连接。在播放的过程中,若播放端所处的网络环境在一个较佳的状态,此时播放会很流畅。若网络环境不是很稳定,经常会发生抖动,如果播放端没有特殊处理,可能会经常发生卡顿,严重的甚至会出现黑屏。而移动直播由于其便捷性,用户可原创 2022-05-23 16:11:45 · 643 阅读 · 0 评论 -
TCP/UDP/HTTP的区别和联系
一、TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传.原创 2022-05-21 21:56:43 · 730 阅读 · 0 评论 -
最全的WebRTC服务器技术选型分析
前言这里我也想给大家说一定,用了开源的解决方案,快速的搭建起业务,但是无疑也欠下了技术债,因为开源的解决方案肯定没有自己实现的要熟悉,因为不熟悉很多时候出现了问题,并不能马上解决,甚至解决不了,导致业务受到影响。而且熟悉开源解决方案都是需要一个时间和过程的,而一般领导会不会给你这个时间就两说了。但如果你要快速的搭建起音视频系统的话,无疑使用开源技术解决方案是最快,最能节省人力成本的。下面我们就来分析下常见的SFU开源解决方案的优缺点,以便你选择合适的开源解决方案。一、Yangwebrtc原创 2022-05-21 21:17:29 · 1592 阅读 · 0 评论 -
基于iOS11的HEVC(H.265)硬编码/硬解码功能开发指南
本文我们会着重介绍如果在iOS11上使用系统API进行265硬编硬解功能,读者需要有使用VideoToolBox进行H.264硬编/解码的相关经验。一、什么是HEVC(H.265)HEVC全称High Efficiency Video Coding(高效率视频编码),是比H.264更加优秀的一种视频压缩标准(也称为H.265)。HEVC在低码率视频压缩上,提升质量、减少容量和节省带宽方面都有突出表现,因此除了拍摄占用的容量减少外,在视频通话时也能更加流畅清晰。据9to5Mac的测试结果,原来的H.2原创 2022-05-21 17:07:27 · 2261 阅读 · 0 评论 -
ijkplayer框架深入剖析
随着互联网技术的飞速发展,移动端播放视频的需求如日中天,由此也催生了一批开源/闭源的播放器,但是无论这个播放器功能是否强大、兼容性是否优秀,它的基本模块通常都是由以下部分组成:事务处理、数据的接收和解复用、音视频解码以及渲染,其基本框架如下图所示:针对各种铺天盖地的播放器项目,我们选取了比较出众的ijkplayer进行源码剖析。它是一个基于FFPlay的轻量级Android/iOS视频播放器,实现了跨平台的功能,API易于集成;编译配置可裁剪,方便控制安装包大小。本文基于k0.7.6版本的ijk原创 2022-05-21 16:18:30 · 714 阅读 · 0 评论 -
Android 音视频 SDK 转场特效的音视频同步分析
在短视频的应用场景中,经常存在用户拍摄的两个或者多个视频生成一个视频的需求,为了达到两个视频平滑过渡,就需要在两个视频中间添加转场效果。由于导入视频的帧率、码率等参数都不一致,如何保证在添加完转场效果后音视频同步?本文主要介绍转场效果的实现及如何保证最终合成视频的音视频同步,同时简单介绍一下转场滤镜。一. 转场功能介绍市面上的转场基本分为三类: 片头片尾转场:即只作用在一个视频上。 此种和普通的时间滤镜添加区别不大,并不复杂,本文不再赘述 非重叠转场:转场接替作用在第一个视频原创 2022-05-21 13:52:57 · 309 阅读 · 0 评论 -
基于FFmpeg将pcm+rgb编码并封装MP4
FFmpeg是非常强大好用的音视频处理库,功能强大,首先我们先说说如何配置使用FFmpeg。首先,从官网上下载:FFmpegFFmpeg官提供了3个版本:Static,Shared,Dev。介绍如下:前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe原创 2022-05-20 21:31:10 · 872 阅读 · 0 评论 -
实现H.265的RTP的封装及传输
一、RTP协议概述RTP(Real-time Transport Protocol)实时传输协议,由IETF的多媒体传输工作小组发布的网络传输协议,标准为RFC3550/3551。RTP协议支持TCP和UDP两种传输方式,RTP协议负责对流媒体数据进行封包并实现媒体流的实时传输,但并不能为按顺序传送的数据包提供可靠的传送机制,也不提供流量和拥塞控制,这些是依靠RTCP协议来完成的,两者配合使用。本文主要从数据处理的角度实现对H.265的RTP封装进行详细介绍。二、RTP协议解析RTP协议是由原创 2022-05-20 19:54:29 · 1560 阅读 · 0 评论 -
H264/H265码流的编码码率设置
一、什么是视频码率?视频码率是视频数据(视频色彩量、亮度量、像素量)每秒输出的位数。一般用的单位是kbps。二、设置视频码率的必要性在视频会议应用中,视频质量和网络带宽占用是矛盾的,通常情况下视频流占用的带宽越高则视频质量也越高;如要求高质量的视频效果,那么需要的网络带宽也越大;解决这一矛盾的钥匙当然是视频编解码技术。评判一种视频编解码技术的优劣,是比较在相同的带宽条件下,哪个视频质量更好;在相同的视频质量条件下,哪个占用的网络带宽更少。 是不是视频码率越高,质量越好呢?理论上是这样的,然而原创 2022-05-20 14:03:06 · 6521 阅读 · 0 评论 -
音视频流媒体基础知识之PCM数据
1.什么是PCM音频数据PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。2.PCM音频数据是如何存储的如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按照LRLRLR的方式存储,存储的时候还和机器的大小端有关。大端模式如下图所示3.PCM音频数据中常用的专业术语原创 2022-05-19 21:17:06 · 2172 阅读 · 0 评论 -
H264编码基础概念+格式分析
一、编码基础概念1、为什么要进行视频编码?视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成。一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧画面(一般是30帧),假如该视频是一个1280x720分辨率的视频,那么不经过编码一秒钟的大小:结果:1280x720x60≈843.75M所以不经过编码的视频根本没法保存,更不用说传输了。2、视频压缩编码标准视频中存在很多冗余信息,比如图像相邻像素之间有较强的相关性,视频序列的相邻图像原创 2022-05-19 20:57:28 · 14326 阅读 · 6 评论 -
用FFmpeg把H264数据流解码成YUV420P
在FFmpeg中,H264在编码前必须要转换成YUV420P,本文就分享一下怎么将h264转成YUV420P。以下就是yuv420:八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3][Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]码流为:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7][Y原创 2022-05-19 19:45:25 · 4939 阅读 · 0 评论 -
在linux下实现用FFmpeg把YUV420帧保存成图片
本案例可以保存成bmp或者jpeg格式的图片。下面的结构是保存bmp图片是用到的结构://把内存对齐定义为2个字节, //这个可以避免BITMAPFILEHEADER //出现4字节的对齐而使bmp位图的头出错 #pragma pack(2) //下面两个结构是位图的结构 typedef struct BITMAPFILEHEADER { u_int16_t bfType; u_int32_t bfSize; u_int16_原创 2022-05-19 16:55:06 · 1066 阅读 · 0 评论 -
PCM音频重采样思路及注意事项
本文主要讲述其中的音频重采样和音频降噪的问题和记录如何解决的思路。本文主要讲述重采样部分,降噪部分在下一篇文章讲述。一、重采样和降噪的关系之所以降噪过程中需要借助重采样的力量来实现,原因是一般情况下我们从电脑端采集到的音频数据是44.1Khz或者48Khz的16位或者8位双通道的PCM数据,而对于目前一些通用开源的降噪库例如speex或者webrtc来说一般都是有对送入降噪音频频率特定的要求的,其中speex开源库的降噪模块可以对44.1Khz和48Khz等音频PCM数据进行降噪;webrtc则原创 2022-05-19 16:35:02 · 3585 阅读 · 0 评论 -
浅聊WebRTC视频通话
WebRTC 提供了一套标准 API,使 Web 应用可以直接提供实时音视频通信功能。大部分浏览器及操作系统都支持 WebRTC,直接可以在浏览器端发起实时音视频通话,本文以 WebRTC 初学者的视角去完成一个 1V1 网页版实时音视频通话。完成音视频通话需要了解四个模块:音视频采集、STUN/TURN 服务器、信令服务器、端与端之间 P2P 连接。使用 WebRTC 的 API 完成音视频采集,配合信令服务器和 WebRTC 的RTCPeerConnection方法能实现 1V1 通话,简易流程.原创 2022-05-18 21:57:51 · 2181 阅读 · 1 评论 -
音视频开发大厂面试题(快手、百度、字节)
目录1.快手面试2.百度面试3.字节面试一、快手面试总结面试岗位:音视频优化体验岗一面:开场自我介绍问我们视频封装格式是什么?我答hls ts 和 fmp4都有之后问了ts的结构是什么样子的又问了hls是什么,介绍一下基本原理,直播和点播hls有什么不同问hls 怎么实现自适应码率,考什么去探测网络带宽hls的优化方式有哪些通过我不断的引导,终于让我介绍音视频优化方案了,之后我就按照目标,瓶颈,优化方法三部曲等逻辑长篇大论给她说了我们的优化手段挑着原创 2022-05-18 21:19:23 · 1809 阅读 · 0 评论 -
FFmpeg - Android 直播推拉流
FFmpeg - Android 直播推拉流原创 2022-05-18 20:53:00 · 3117 阅读 · 0 评论 -
音视频协议-RTP协议打包
目录 H264打包RTP的方法 RTP打包AAC 1. H264打包RTP的方法RTP的特点不仅仅支持承载在UDP上,这样利于低延迟音视频数据的传输,另外一个特点是它允许通过其它协议接收端和发送端协商音视频数据的封装和编解码格式,这样固定头的playload type字段就比较灵活。H.264标准协议定义了两种不同的类型:一种是VCL即Video Coding Layer , 一 种 是 NAL 即Network Abstraction Layer。其中前者就是编码器吐出来的原创 2022-05-18 20:28:55 · 3132 阅读 · 0 评论 -
音视频开发面试题集锦
下面是 2022.04 月音视频面试题集锦内容的节选:1)RTMP 消息分优先级的设计有什么好处?RTMP 的消息优先级是:控制消息 > 音频消息 > 视频消息。当网络传输能力受限时,优先传输高优先级消息的数据。要使优先级能够有效执行,分块也很关键:将大消息切割成小块,可以避免大的低优先级的消息(如视频消息)堵塞了发送缓冲从而阻塞了小的高优先级的消息(如音频消息或控制消息)。2)什么是 DTS 和 PTS?它们有什么区别?DTS 是解码时间戳;PTS 是显示时间戳。原创 2022-05-18 15:43:37 · 1633 阅读 · 0 评论 -
iOS音视频开发十三:视频渲染,用 Metal 渲染
本系列文章通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第十三篇:iOS 视频渲染 Demo。这个 Demo 里包含以下内容: 1)实现一个视频采集装模块; 2)实现一个视频渲染模块; 3)串联视频采集和渲染模块,将采集的视频数据输入给渲染模块进行渲染; 4)详尽的代码注释,帮你理解代码逻辑和原理。 1、视频采集模块在这个 Demo 中,视频采集模块.原创 2022-05-17 21:48:41 · 1933 阅读 · 0 评论 -
iOS音视频开发十二:视频解码,MP4 → H.264/H.265 → YUV 的源码
本系列文章通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第十二篇:iOS 视频解码 Demo。这个 Demo 里包含以下内容: 1)实现一个视频解封装模块; 2)实现一个视频解码模块; 3)串联视频解封装和解码模块,将解封装的 H.264/H.265 数据输入给解码模块进行解码,并存储解码后的 YUV 数据; 4)详尽的代码注释,帮你理解代码逻辑和原理。原创 2022-05-17 20:29:42 · 839 阅读 · 0 评论 -
iOS音视频开发十一:音视频解封装模块,从 MP4 到 MP4
本系列文章将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第十一篇:iOS 视频转封装 Demo。这个 Demo 里包含以下内容: 1)实现一个音视频解封装模块; 2)实现一个音视频封装模块; 3)实现对 MP4 文件中音视频的解封装逻辑,将解封装后的音视频编码数据重新封装存储为一个新的 MP4 文件; 4)详尽的代码注释,帮你理解代码逻辑和原理。 1、音原创 2022-05-17 17:28:11 · 443 阅读 · 0 评论 -
iOS音视频开发十:视频解封装,从 MP4 解出 H.264/H.265
本系列文章将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第十篇:iOS 视频解封装 Demo。这个 Demo 里包含以下内容: 1)实现一个视频解封装模块; 2)实现对 MP4 文件中视频部分的解封装逻辑并将解封装后的编码数据存储为 H.264/H.265 文件; 3)详尽的代码注释,帮你理解代码逻辑和原理。 1、视频解封装模块视频解封装模块即 KFMP4De原创 2022-05-17 15:45:34 · 968 阅读 · 0 评论 -
iOS音视频开发九:视频封装,采集编码 H.264/H.265 并封装 MP4
将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第九篇:iOS 视频封装 Demo。这个 Demo 里包含以下内容: 1)实现一个视频采集模块; 2)实现一个视频编码模块,支持 H.264/H.265; 3)实现一个视频封装模块; 4)串联视频采集、编码、封装模块,将采集到的视频数据输入给编码模块进行编码,再将编码后的数据输入给 MP4 封装模块封装和存储;原创 2022-05-16 22:20:40 · 725 阅读 · 0 评论 -
iOS音视频开发八:视频编码,H.264 和 H.265 都支持
我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第八篇:iOS 视频编码 Demo。这个 Demo 里包含以下内容: 1)实现一个视频采集模块; 2)实现一个视频编码模块,支持 H.264/H.265; 3)串联视频采集和编码模块,将采集到的视频数据输入给编码模块进行编码,并存储为文件; 4)详尽的代码注释,帮你理解代码逻辑和原理。 前七篇:iOS原创 2022-05-16 19:30:48 · 2666 阅读 · 1 评论 -
iOS音视频开发七:视频采集
将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第七篇:iOS 视频采集 Demo。这个 Demo 里包含以下内容: 1)实现一个视频采集模块; 2)实现视频采集逻辑并将采集的视频图像渲染进行预览,同时支持将数据转换为图片存储到相册; 3)详尽的代码注释,帮你理解代码逻辑和原理。 前六篇:iOS要开发,采集音频并存储为 PCM 文件iOS音视频开原创 2022-05-16 17:27:02 · 1050 阅读 · 0 评论 -
iOS音视频开发六:音频渲染
我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。这里是第六篇:iOS 音频渲染 Demo。这个 Demo 里包含以下内容: 1)实现一个音频解封装模块; 2)实现一个音频解码模块; 3)实现一个音频渲染模块; 4)实现对 MP4 文件中音频部分的解封装和解码逻辑,并将解封装、解码后的数据送给渲染模块播放; 5)详尽的代码注释,帮你理解代码逻辑和原理。原创 2022-05-16 16:23:51 · 862 阅读 · 0 评论 -
iOS音视频开发五:音频解码
这里是第五篇:iOS 音频解码 Demo。这个 Demo 里包含以下内容: 1)实现一个音频解封装模块; 2)实现一个音频解码模块; 3)实现对 MP4 文件中音频部分的解封装和解码逻辑,并将解封装、解码后的数据存储为 PCM 文件; 4)详尽的代码注释,帮你理解代码逻辑和原理。 前四篇:iOS要开发,采集音频并存储为 PCM 文件iOS音视频开发二:音频编码,采集 PCM 数据编码为 AACiOS音视频开发三:音频封装,采集编码并封装为 M4AiOS原创 2022-05-14 20:54:30 · 1415 阅读 · 0 评论 -
iOS音视频开发四:音频解封装,从 MP4 中解封装出 AAC
这里是第四篇:iOS 音频解封装 Demo。这个 Demo 里包含以下内容: 1)实现一个音频解封装模块; 2)实现对 MP4 文件中音频部分的解封装逻辑并将解封装后的编码数据存储为 AAC 文件; 3)详尽的代码注释,帮你理解代码逻辑和原理。 前三篇:iOS要开发,采集音频并存储为 PCM 文件iOS音视频开发二:音频编码,采集 PCM 数据编码为 AACiOS音视频开发三:音频封装,采集编码并封装为 M4A1、音频解封装模块首先,实现一个KFDem.原创 2022-05-14 17:11:21 · 634 阅读 · 0 评论 -
iOS音视频开发三:音频封装,采集编码并封装为 M4A
这里是第三篇:iOS 音频封装 Demo。这个 Demo 里包含以下内容: 1)实现一个音频采集模块; 2)实现一个音频编码模块; 3)实现一个音频封装模块; 4)串联音频采集、编码、封装模块,将采集到的音频数据输入给 AAC 编码模块进行编码,再将编码后的数据输入给 M4A 封装模块封装和存储; 5)详尽的代码注释,帮你理解代码逻辑和原理。 前两篇:iOS要开发,采集音频并存储为 PCM 文件iOS音视频开发二:音频编码,采集 PCM 数据编码为原创 2022-05-14 16:20:59 · 1455 阅读 · 0 评论 -
iOS音视频开发二:音频编码,采集 PCM 数据编码为 AAC
这里是第二篇:iOS 音频编码 Demo。这个 Demo 里包含以下内容: 1)实现一个音频采集模块; 2)实现一个音频编码模块; 3)串联音频采集和编码模块,将采集到的音频数据输入给 AAC 编码模块进行编码和存储; 4)详尽的代码注释,帮你理解代码逻辑和原理。 1、音频采集模块在这个 Demo 中,音频采集模块 KFAudioCapture 的实现与 《iOS 音频采集 Demo》 中一样,这里就不再重复介绍了,其接口如下:KFAudioCapture原创 2022-05-14 15:33:28 · 1822 阅读 · 0 评论 -
iOS要开发,采集音频并存储为 PCM 文件
这里是第一篇:iOS 音频采集 Demo。这个 Demo 里包含以下内容: 1)实现一个音频采集模块; 2)实现音频采集逻辑并将采集的音频存储为 PCM 数据; 3)详尽的代码注释,帮你理解代码逻辑和原理。 1、音频采集模块首先,实现一个 KFAudioConfig 类用于定义音频采集参数的配置。这里包括了:采样率、量化位深、声道数这几个参数。KFAudioConfig.h#import <Foundation/Foundation.h>NS_原创 2022-05-14 15:03:44 · 2472 阅读 · 0 评论 -
WebRTC中RTP/RTCP协议实现分析
一 、前言RTP/RTCP协议是流媒体通信的基石。RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输、流量控制和拥塞控制等服务质量保证。在WebRTC项目中,RTP/RTCP模块作为传输模块的一部分,负责对发送端采集到的媒体数据进行进行封包,然后交给上层网络模块发送;在接收端RTP/RTCP模块收到上层模块的数据包后,进行解包操作,最后把负载发送到解码模块。因此,RTP/RTCP 模块在WebRTC通信中发挥非常重要的作用。本文在深入研究WebRTC源代码的基础上,以V原创 2022-05-13 20:58:21 · 625 阅读 · 0 评论 -
国内市场主流音视频产品的区别与对比分析
目前音视频开发市场琳琅满目,市场占有率最大的当属于RTX,视高等大公司。但是随着科技的日新月异,一些新型的公司逐渐崭露头角,市场上用户群体的多样化,,也将使用户的选择变得多样性,同时带来的是音视频厂商之间进一步的激烈竞争。音视频的开发区域涵盖了多个领域,如可以开发具有企业特色的即时通讯系统、视频游戏系统、视频会议系统、网络教学系统、语音视频聊天系统、专家咨询平台以及政府应急指挥平台等。原创 2022-05-13 20:24:03 · 1106 阅读 · 1 评论