AIRPLAY镜像音频数据的处理

本文详细介绍了AIRPLAY镜像过程中音频数据的处理,包括AES CBC128加密的解密步骤,以及使用openssl、fdk、ffmpeg或MediaCodec进行AAC解码的方法。在某些Android设备上,AAC-ELD解码可能存在问题,推荐使用fdk库。提供了解码器初始化和解码过程的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AIRPLAY镜像投屏过程中,音视频数据都是加密过的,对于接收端来说,需要正确解密后才能对音视频数据进行处理,音频和视频的解密过程还不一样。音频相对简单一点,视频会复杂一些。这一块的解密过程是没有公开的,是苹果自身的Fairplay DRM协议部分。现在市面上的第三方Airplay接收端无非都是通过逆向过程破解了相关部分。

本文针对音频的处理做一个介绍,音频部分的处理相对简单一点。

解密过程:

1 音频采用AES CBC128进行加密,这一部分可以使用开源的openssl库进行处理

2 该算法需要解密的输入参数包括aeskey,aeskiv,通过

ANNOUNCE请求中携带,ANNOUNCE请求同时还会携带音频的编码信息。

 

解码过程:

通过解密过程后,我们会得到AAC编码的音频数据,播放器播放AAC数据还需要对其进行解码。

在我们实现的接收端程序,协商出来的是AAC-ELD编码。对于AAC的解码,可以使用一些开源的库,如fdk,ffmpeg等,也可以使用android提供的MediaCodec进行解码。

但笔者曾经在某些Android手机上发现,解码AAC-ELD有问题。推荐大家用fdk进行解码。

使用fdk对aac进行解码,其实在网上也能找到很多例子,但笔者发现很多例子有一处错误,在低版本的fdk上不会出现错误,但是在高版本的fdk会出现crash这样的问题。话不多说,直接通过部分代码来说明过程。

 

初始化解码器:

 

UCHAR eld_conf[] = { 0xF8, 0xE8
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值