电商用户行为数据分析实战(MySQL +PowerBI)

article/2025/10/23 2:10:49

目录

  • 一、项目概况
  • 二、数据源
  • 三、数据清洗
    • 3.1 选择子集导入,匹配适合的数据类型
    • 3.2 列重命名
    • 3.3重复值处理
    • 3.4 缺失值处理
    • 3.5 异常值处理
      • 从timestamps字段中提取日期数据列
      • 查看日期列数据异常情况
  • 四、数据分析
    • 4.1 整体购物情况,基于AARRR模型
      • 4.1.1 各字段的统计数据
      • 4.1.2 基于AARRR模型分析
        • (1)用户获取Acquisition
        • (2)用户激活Activation
          • PV,UV,人均浏览次数
          • 时间维度下的用户行为
          • 跳失率
        • (3)用户留存 Retention
        • (4)用户推荐 Referral
        • (5)用户收益Revenue
    • 4.2 用户价值分析,基于RFM模型
    • 4.3 商品销售分析
  • 五、总结
        • 关注活动前后指标数据,优化推荐策略和搜索功能
        • 针对用户群体特征采取差异化营销
        • 邀请新兴热门品牌入驻,调整商品引流通道
  • 六、MySQL代码

一、项目概况

本项目以淘宝电商用户真实行为数据为数据源,运用Navicat 12 for MySQL对其进行数据清洗,利用AARRR模型和RFM模型对其展开数据分析,利用PowerBI制作可视化图像。

二、数据源

数据来自阿里巴巴天池:UserBehavior.csv
本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购物车、收藏)。数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。

数据集字段如下:

用户ID:字符串类型,用户名ID

商品ID:字符串类型,商品种类ID

商品类目ID:字符串类型,商品所属类目ID

行为类型:字符串类型,用户行为类型,包括pv(点击商品详情页面)、buy(购买商品)、cart(将商品加入购物车)、fav(将商品收藏)

时间戳:行为发生的时间戳

三、数据清洗

3.1 选择子集导入,匹配适合的数据类型

在navicat中将数据集导入MySQL,考虑到原数据集体量较大,此次分析仅导入10万条数据。
导入数据时,如果把timestamps设置成了datetime数据类型,则这一字段回全部显示为0。为了成功导入应将timestamps字段的数据类型选择为varchar,之后再利用MySQL语句修改为日期。

3.2 列重命名

由于导入的数据没有列名,因此为各字段添加英文列名

用户ID——userid、商品ID——itemid、商品类目ID——categoryid、行为类型——behavior、时间戳——timestamps

3.3重复值处理

通过将userid,itemid,timestamps三个字段设置为主键,可知数据中没有重复值。

3.4 缺失值处理

利用count函数统计每一个字段包含的数据行数

SELECT COUNT(userid),COUNT(itemid),COUNT(categoryid),COUNT(behavior),COUNT(timestamps)
FROM UserBehavior;

在这里插入图片描述在这里插入图片描述

3.5 异常值处理

从timestamps字段中提取日期数据列

新增dates日期列和hours时间列

ALTER TABLE UserBehavior ADD dates varchar(255);
UPDATE UserBehavior SET dates=FROM_UNIXTIME(timestamps,'%Y-%m-%d');
ALTER TABLE UserBehavior ADD hours varchar(255);
UPDATE UserBehavior SET hours=FROM_UNIXTIME(timestamps,'%H:%m:%s');

修改后的表格内容▼修改后的表格内容

查看日期列数据异常情况

主要查看日期列是否出现2017-11-25至2017-12-3之外的数据,只需查询日期的最大值和最小值即可。

SELECT min(dates),max(dates) from userbehavior;

运行结果如下▼在这里插入图片描述
可见最小日期为2017年9月11日,早于2017年11月25日。继续查询不符合要求的数据。

SELECT * from userbehavior where dates < '2017-11-25';

运行结果如下▼
在这里插入图片描述
超出日期范围的共有44条,将其删除。

DELETE from userbehavior where dates<'2017-11-25';

在删除数据时一定要再三检查条件内容的正确性,稍有差池都会导致数据的无法恢复,只能重新导入,从头再来。

在这里插入图片描述在这里插入图片描述
再次查看日期范围

SELECT min(dates),max(dates) from userbehavior;

在这里插入图片描述
可见超出日期范围的数据已被清除。

四、数据分析

4.1 整体购物情况,基于AARRR模型

4.1.1 各字段的统计数据

该数据集包含983位用户,64440个商品,3128个商品,4种用户行为。

在这里插入图片描述

4.1.2 基于AARRR模型分析

(1)用户获取Acquisition

模型中的用户获取一般考察渠道曝光率、渠道转换率、日新增用户数DNU、获客成本CAC等指标。
由于字段限制,本篇分析主要考察日新增用户数DNU。由下图可见,仅在11月25日-30日这六天有新增用户,且新增用户数在26日开始出现急剧下跌,虽然在25日当日的新增用户中有很大一部分是此前的活跃用户,而非当日新增,但在30日的新增用户数已下降为个位数。
在这里插入图片描述

(2)用户激活Activation

PV,UV,人均浏览次数

经过清洗后的数据共有99955条,PV为89664,UV为983,人均浏览次数约为91.22。

时间维度下的用户行为

从日期、时段、星期三个时间维度来观察用户行为。
在每日用户行为中,从11月30日开始至12月2日,pv和cart都有较大的增幅,fav也出现明显的增长趋势,但buy依旧处于较小的波动状态。可能是因为临近双十二,用户在收罗商品准备到优惠力度最大的时候才下单。
在这里插入图片描述
从各时段来看,晚间20点-22点是用户活跃的高峰期,下午15点会有一个小高峰。而下午18-19点是用户增长最快的时段。
在这里插入图片描述
从星期来看,周末时的用户更活跃,而工作日期间的活跃度波动较小。
在这里插入图片描述

跳失率

浏览页跳失率=仅有点击行为的用户数 / 总UV,为7.02%。具体是指用户仅仅有pv行为,没有其它的收藏、加购、购买行为。较低的浏览页跳失率表明用户对目标页面和推荐商品有一定兴趣。

在这里插入图片描述

关键页跳失率=有收藏或加购行为但无购买的用户数 / 总UV,为51.88%。结合前面按日期分布的用户行为特征分析,由于临近双十二,较多用户会选择收藏或加购商品,在等待优惠更大的时机再购买。另一方面,可能是由于商品的库存不足、码数颜色缺货等问题。
在这里插入图片描述

(3)用户留存 Retention

由于本数据集的日期只有9天,这里主要考察次日留存率、3日留存率和7日留存。可以看到进入12月后,留存率有所增长,表明双十二的预热起到一定效果。
在这里插入图片描述

(4)用户推荐 Referral

用户的购物路径包含四条,如下所示:
在这里插入图片描述

假设以上步骤只能依次进行或中断,不能跳过中间过程到下个节点。为了更具体考察用户在不同流程中的行为转化率,将拆解各条路径的步骤,得出各步骤的转化率。

  • 从点击到购买的转化率仅为1.45%,点击到加购的转化率为3.63%,说明用户对推荐商品的满意度不够高,推荐系统和搜索功能有待完善。
  • 从点击到收藏的转化率为1.21%,收藏到加购的转化率为8.86%,反映用户的心仪备选商品也较少,可能平台缺乏用户满意的商品。
  • 从三个购买转化率来看,点击-收藏-加购-购买这条路径的购买转化率较高,表明较多的用户是经过比较长的路径才到达购买页面。可在收藏、加购页面增加更多优惠提醒,精准的发放优惠券、满赠券来鼓励加入购物车的访客提交订单付款成功。还可与其他知名平台合作,加大优惠力度,增加免密支付、极速支付、月付等方式提高下单效率。
    在这里插入图片描述

(5)用户收益Revenue

在这九天内的用户购买次数有0-28次,少量用户在九天内完成2次以上的购买,出现8次以上的购买可能是剁手党所为,也可能是刷单行为。整体复购率为65.87%,比较客观,可针对复购用户的喜好和习惯调整平台首页的各栏目显示顺序和展示区域,在提供更便捷的服务的同时鼓励用户尝试其他板块的体验,以便展示更多推荐商品和增加引流。

在这里插入图片描述

4.2 用户价值分析,基于RFM模型

RFM模型是根据客户活跃程度和交易金额的贡献,进行客户价值细分的一种方法。从客户最近一次交易时间间隔(Recency)、客户最近交易次数(Frequency)、客户最近交易金额(Monetary)三个指标来衡量用户价值。

本报告对于RFM指标的定义如下:
在这里插入图片描述

  • 重要价值用户:R高F高。这类用户是平台的高质量用户,他们已为平台做了较多的贡献,应给予优惠回馈性服务和个性化服务,以鼓励他们持续购买的热情。
  • 重要发展用户:R高F低。这类用户最近有购买行为但频率不高,可向其提供忠诚度计划,推荐更符合用户喜好、性价比高的商品,吸引其购买,逐渐提高忠诚度。如果是新客户,则需要建立关系,提供新人优惠券鼓励消费。
  • 重要保持用户:R低F高。活跃度低的用户可通过短信等场外提醒来引导其入场参与优惠活动,并提供更新产品来鼓励他们再次购买。还可以鼓励其对之前购买的商品做评价以提高商品热度和可信度。
  • 重要挽留用户:R低F低。这类用户容易流失,需要重点挽留,必要时可主动联系客户询问流失原因。可通过拼团打折、积分兑换、捆绑销售、热卖热点商品等活动唤起用户注意力,提升用户兴趣。

在这里插入图片描述

4.3 商品销售分析

依据购买次数来考察商品类别和商品种类的销售情况。
成交量>=10的商品类别如下所示▼
在这里插入图片描述
虽然近97%的商品无人购买,但这主要是由于统计时间过短,部分商品的购买具有季节性,所以在该时间段出现低销量的现象。此外,这些低销量的商品的存在虽然仅能满足极少数客户的需求,但其利润可通过长尾效应积累获取,同时还能为平台营造有层次感的购物氛围,部分商品还能烘托出主流商品的优势,让客户更有信心购买。
在这里插入图片描述

五、总结

关注活动前后指标数据,优化推荐策略和搜索功能

  • 新增用户的数据不够理想,应观察各渠道的用户获取情况,以及竞争平台近期是否在举行促销活动。
  • 用户的活跃度应该结合平台的活动时段分析,考察是否符合预设目标值,同比环比等。本篇分析发现周末晚间20点-22点是用户活跃高峰期,应针对高峰期进行有效的营销活动,从而更容易触达用户。
  • 用户对推荐商品的满意度不够高,需要优化推荐策略和搜索匹配度,为用户减少搜索和选择的时间,加速完成购买行为。
  • 较多的用户是经过比较长的路径才到达购买页面。可在收藏、加购页面增加更多优惠提醒,精准的发放优惠券、满赠券来鼓励加入购物车的访客提交订单付款成功。还可与其他知名平台合作,加大优惠力度,增加免密支付、极速支付、月付等方式提高下单效率。

针对用户群体特征采取差异化营销

  • 重要价值用户:通过提供优惠回馈性服务和个性化服务,鼓励持续购买的热情。
  • 重要发展用户:在优化推荐策略的基础上逐渐提高忠诚度。如果是新客户,则需要建立关系,提供新人优惠券鼓励消费。
  • 重要保持用户:活跃度低的用户可通过短信等场外提醒来引导其入场参与优惠活动,并提供更新产品来鼓励他们再次购买。还可以鼓励其对之前购买的商品做评价以提高商品热度和可信度。
  • 重要挽留用户:可主动联系客户询问流失原因。可通过促销热点商品、拼团打折、积分兑换等活动唤起用户注意力,提升用户兴趣。

邀请新兴热门品牌入驻,调整商品引流通道

  • 平台的商品类别的销量有待提高,可能是平台缺乏用户喜爱的商品,也可能是商品类别的划分不够精准。可通过邀请新兴热门品牌的入驻,引进更多用户和促成热销产品的诞生,增强品类口碑。
  • 针对复购用户的喜好和习惯调整平台首页的各栏目的内容规划、显示顺序和展示区域,在提供更便捷的服务的同时鼓励用户尝试其他板块的体验。还可在成交量较高的商品大类后设置引流通道,为其他相关商品、推荐商品增加曝光量。
  • 优化商品详情页的内容和顺序,提炼热销商品的卖点和精简描述,引导用户迅速掌握商品关键信息,做出购买决策。

六、MySQL代码

# 各字段的统计数据
SELECT COUNT(DISTINCT userid) AS 'customer',COUNT(DISTINCT itemid) AS 'item',COUNT(DISTINCT categoryid) AS 'category',COUNT(DISTINCT behavior) AS 'behaviortype'
FROM UserBehavior;# PV,UV,人均浏览次数
select count(distinct userid) as 'UV',sum(case when behavior='pv' then 1 else 0 end) as 'PV',sum(case when behavior='pv' then 1 else 0 end)/count(distinct userid) as '人均浏览次数' 
from userbehavior;# 时间维度下的用户行为# 先新增onlyhours列
alter table userbehavior add onlyhours VARCHAR(255);
update userbehavior set onlyhours=FROM_UNIXTIME(timestamps,'%H');# 每日、小时用户行为
select dates,onlyhours,sum(case when behavior='pv' then 1 else 0 end) as pv,sum(case when behavior='fav' then 1 else 0 end) as fav,sum(case when behavior='cart' then 1 else 0 end) as cart,sum(case when behavior='buy' then 1 else 0 end) as buy,count(behavior) as all_click, count(distinct userid) as all_user
from userbehavior GROUP BY dates,onlyhours ORDER BY dates,onlyhours;# 每星期用户行为
select date_format(dates,'%W') as weeks,sum(case when behavior='pv' then 1 else 0 end) as pv,sum(case when behavior='fav' then 1 else 0 end) as fav,sum(case when behavior='cart' then 1 else 0 end) as cart,sum(case when behavior='buy' then 1 else 0 end) as buy,count(behavior) as all_click,count(distinct userid) as all_user
from userbehavior GROUP BY weeks ORDER BY field(weeks,'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');# 浏览页跳失率
use mysql
creat view bounce_rate as 
select (select count(distinct userid) from userbehavior) as 总用户,count(distinct userid) as 仅pv用户, concat(format(count(distinct userid)/(select count(distinct userid) from userbehavior) * 100,2),'%') as 浏览页跳失率 
from userbehavior
where userid not in(select distinct userid from userbehavior where behavior='fav') 
and userid not in(select distinct userid from userbehavior where behavior='cart') 
and userid not in(select distinct userid from userbehavior where behavior='buy') ;# 关键页跳失率
creat view key_rate as 
select (select count(distinct userid) from userbehavior) as 总用户,count(distinct userid) as 收藏加购用户, concat(format(count(distinct userid)/(select count(distinct userid) from userbehavior)*100,2),'%') as 关键页跳失率
from userbehavior
where userid in (select distinct userid from userbehavior where behavior='fav')
or userid in (select distinct userid from userbehavior where behavior='cart') 
and userid not in (select distinct userid from userbehavior where behavior='buy');# 留存率
create view time_inter as 
select a.*,b.firstday,datediff(a.dates,b.firstday) as day_diff
from (select userid,dates from userbehavior group by userid,dates) as a, 
(select userid,min(dates) as firstday from userbehavior GROUP BY userid) as b 
where a.userid=b.userid ORDER BY userid,dates;create view retention_day as 
select firstday,
sum(case when day_diff=0 then 1 else 0 end) as day_0,
sum(case when day_diff=1 then 1 else 0 end) as day_1,
sum(case when day_diff=2 then 1 else 0 end) as day_2,
sum(case when day_diff=3 then 1 else 0 end) as day_3,
sum(case when day_diff=4 then 1 else 0 end) as day_4,
sum(case when day_diff=5 then 1 else 0 end) as day_5,
sum(case when day_diff=6 then 1 else 0 end) as day_6,
sum(case when day_diff=7 then 1 else 0 end) as day_7,
sum(case when day_diff=8 then 1 else 0 end) as day_8
from time_inter
group by firstday
order by firstday;create view retention_rate as 
select firstday, day_0,
concat(format(day_1/day_0*100, 2), '%') as day_1,
concat(format(day_2/day_0*100, 2), '%') as day_2,
concat(format(day_3/day_0*100, 2), '%') as day_3,
concat(format(day_4/day_0*100, 2), '%') as day_4,
concat(format(day_5/day_0*100, 2), '%') as day_5,
concat(format(day_6/day_0*100, 2), '%') as day_6,
concat(format(day_7/day_0*100, 2), '%') as day_7,
concat(format(day_8/day_0*100, 2), '%') as day_8
from retention_day;# 转化率
create view c as 
Select userid,itemid,sum(case when behavior='pv' then 1 else 0 end) as '点击',sum(case when behavior='fav' then 1 else 0 end) as '收藏',sum(case when behavior='cart' then 1 else 0 end) as '加入购物车',sum(case when behavior='buy' then 1 else 0 end) as '购买' 
from userbehavior GROUP BY userid,itemid;select count(userid) as '点击' from c where 点击>0;select count(userid) as '点击、购买' from c where 点击>0 and 加入购物车=0 and 收藏=0 and 购买>0;select count(userid) as '点击、加入购物车' from c where 点击>0 and 收藏=0 and 加入购物车>0;SELECT count(userid) as '点击、加入购物车、购买' from c where 点击>0 and 加入购物车>0 and 购买>0;select count(userid) as '点击、收藏' from c where 点击>0 and 收藏>0 and 加入购物车=0;SELECT count(userid) as '点击、收藏、购买' from c where 点击>0 and 加入购物车=0 and 购买>0 and 收藏>0;SELECT count(userid) as '点击、收藏、加入购物车' from c where 点击>0 and 加入购物车>0 and 收藏>0;SELECT count(userid) as '点击、收藏、加入购物车、购买' from c where 点击>0 and 加入购物车>0 and 购买>0 and 收藏>0;# 漏斗模型:用户行为漏斗和独立访客漏斗
select behavior,
count(behavior) as behavior_times, count(distinct userid) as user_times
from userbehavior
GROUP BY behavior order by field(behavior,'pv','fav','cart','buy');# 购买率
create view user_behavior_times as
select userid,sum(case when behavior='pv' then 1 else 0 end) as pv_times,sum(case when behavior='fav' then 1 else 0 end) as fav_times,sum(case when behavior='cart' then 1 else 0 end) as cart_times,sum(case when behavior='buy' then 1 else 0 end) as buy_times,concat(format(sum(case when behavior='buy' then 1 else 0 end)/sum(case when behavior='pv' then 1 else 0 end)*100,2),'%') as 购买率, sum(case when behavior='buy' then 1 else 0 end)/sum(case when behavior='pv' then 1 else 0 end) as sort 
from userbehavior GROUP BY userid ORDER BY sort desc;# 复购率
create view repurchase_rate as 
select concat(format((select count(userid) from user_behavior_times where buy_times>1)/(select count(userid) from user_behavior_times where buy_times>0)*100,2),'%') as 复购率;
select * from repurchase_rate;# RFM模型# R
create view R as
select userid,max(dates) as 'recency' from userbehavior where behavior='buy' GROUP BY userid;create view R1 as 
select userid,recency,(case when datediff('2017-12-03',recency) between 0 and 2 then 4when datediff('2017-12-03',recency) between 2 and 4 then 3when datediff('2017-12-03',recency) between 4 and 6 then 2when datediff('2017-12-03',recency) >6 then 1 end) as R1 from R;select avg(R1) as R_avg from R1;# F
create view F as
select distinct userid,count(behavior) as 购买次数 from userbehavior where behavior='buy' group by userid;create view F1 as 
select userid,购买次数,(case when 购买次数<=2 then 1 when 2<购买次数<=4 then 2when 4<购买次数<=8 then 3when 8<购买次数 then 4 end) as F1 from F;select avg(F1) as F_avg from F1;# 用户分类 
create view RFM as
select a.*,b.F1,
(case when a.R1>=3.2846 and b.F1>=1.4352 then '重要价值用户'when a.R1>=3.2846 and b.F1<1.4352 then '重要发展用户'when a.R1<3.2846 and b.F1>=1.4352 then '重要保持用户'when a.R1<3.2846 and b.F1<1.4352 then '重要挽留用户' end) as 用户分类
from R1 as a,F1 as b where a.userid=b.userid;select 用户分类,count(用户分类) as 用户个数 from RFM GROUP BY 用户分类;# 商品销售分析
create view hot_item as 
select categoryid,itemid,sum(case when behavior='pv' then 1 else 0 end) as pv_times,sum(case when behavior='buy' then 1 else 0 end) as buy_times
from userbehavior GROUP BY categoryid,itemid ORDER BY categoryid,itemid,buy_times;

http://chatgpt.dhexx.cn/article/jjgTAD9M.shtml

相关文章

【业务数据分析】——十大常用数据分析方法

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4a…

基于订单的数据分析

目录 项目背景 数据理解 指标维度 指标梳理 维度梳理 导入数据 数据预处理 数据格式整理 规范字段名 增加字段 简化地址 缺失值处理 异常值分析​ 重复值处理 数据分析 描述性统计 总体销售情况 周趋势、日趋势分析 产品价格分析 地区分析 转化率分析 总结…

大数据培训 | 电商用户行为分析之订单支付实时监控

在电商网站中&#xff0c;订单的支付作为直接与营销收入挂钩的一环&#xff0c;在业务流程中非常重要。对于订单而言&#xff0c;为了正确控制业务流程&#xff0c;也为了增加用户的支付意愿&#xff0c;网站一般会设置一个支付失效时间&#xff0c;超过一段时间不支付的订单就…

订单数据分析

订单背景 订单&#xff1a;对订单的预测不仅为了企业更好的制定物料采购计划、控制库存、提升生产效率、控制生产进度&#xff0c;还为了帮助企业更好的把控市场潜在需求&#xff0c;分析目前经营状态和未来发展趋势。 宽厚板材市场价格&#xff08;只能查询到近三个月的&…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理&#xff0c;梳理了一下订单功能的表创建&#xff0c;界面&#xff0c;功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表&#xff1f; 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色&#xff0c;用户与…

订单数据分析-实战

1. 京东订单数据准备 1.1 京东订单数据介绍 2020年5月25日10%抽样数据大家电-家用电器-冰箱70K 1.2 数据清洗 缺失值处理 用户城市和省份信息有部分缺失&#xff0c;部分订单的订单中支付时间为空值数据逻辑错误格式内容一致性 import pandas as pd import numpy as np im…

话单数据完整流程

原始数据__解析_____>>>解析后的数据___入库____>>>汇总的数据 1.原始数据 上游中兴的原始数据&#xff0c;在远程桌面Winscp软件中查看。丢失了下游也没法补充采集。得等上游补充采集后下游才能解析。当原始数据存在&#xff0c;而话单数据显示红点&…

话单分析账单分析行踪分析三合一数据分析

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Office Tool Plus(安装visio)

说明&#xff1a;需要提前卸载原先的Office&#xff08;Word、PPT、Excel等&#xff09; 一、Office Tool Plus官网 https://otp.landian.vip/zh-cn/download.html 二、下载Office Tool Plus 百度网盘链接&#xff08;Office Tool Plus安装包&#xff09; 链接&#xff1a;…

FFmpeg音频解码-音频可视化

最近在做一个音频可视化的业务&#xff0c;网上有Java层的实现方法&#xff0c;但是业务需要用C实现&#xff0c;从原理出发其实很简单&#xff0c;先对音频进行解码&#xff0c;再计算分贝。这比把大象放进冰箱还简单。本文从音频可视化的业务为依托&#xff0c;以FFmpeg为基础…

基于FFmpeg的视频播放器之七:音频解码

一.流程 音频解码的流程和视频解码几乎一样,最大的区别是解码后需要进行重采样。因为解码出的AVSampleFormat格式是AV_SAMPLE_FMT_FLTP(float, planar),该格式无法直接使用SDL进行播放,需要转换成SDL支持的AV_SAMPLE_FMT_S16(signed 16 bits)格式。关于重采样,详见下篇…

2020手机音频解码芯片_2020杰理音频芯片全解析,14款音频产品代表作拆解汇总...

珠海市杰理科技股份有限公司,成立于2010年。杰理科技主要从事射频智能终端、多媒体智能终端等系统级芯片(SoC)的研究、开发和销售。 杰理科技的芯片产品主要应用于AI智能音箱、蓝牙音箱、蓝牙耳机、智能语音玩具等物联网智能终端产品,下游应用产品市场十分广泛和巨大。 杰理科…

音频编解码原理

实例说明 音频编解码常用的实现方案有三 种。 第一种就是采用专用的音频芯片对 语音信号进行采集和处理&#xff0c;音频编解码算法集成在硬件内部&#xff0c;如 MP3 编解码芯片、语音合成 分析芯片等。使用这种方案的优点就是处理速度块&#xff0c;设计周期短&#xff1b;缺…

基于STM32音频解码MP3——vs1053

基于正点原子教程 VS1053简介&#xff1a; 1.该模块采用VS1053B 作为主芯片 2.支持&#xff1a;MP3/WMA/OGG/WAV/FLAC/MIDI/AAC 等音频格式的解码 3.支持&#xff1a;OGG/WAV 音频格式的录音&#xff0c;支持高低音调节以及 EarSpeaker 空间效果设置 模块如图所示正点原子 AL…

ijkplayer音频解码播放架构分析

ijkplayer是一款跨平台播放器&#xff0c;支持Android与iOS播放&#xff0c;音频解码默认使用FFmpeg的avcodec软解。Android端播放音频可以用OpenSL ES和AudioTrack&#xff0c;而iOS端播放音频默认使用AudioQueue。 一、iOS音频解码播放 采用pipeline形式创建音频播放组件&a…

HIFI音频解码芯片ES9023

现在的HiFi播放器、解码耳放设备越来越多&#xff0c;推陈出新的速度也越来越快。各家厂商也都对产品进行了卖点细分&#xff0c;把新款旗舰级解码芯片拎出来宣传。美国ESS公司推出的ES9038Pro芯片大家都早已耳熟能详。 美国ESS系列芯片拥有行业高标准的信噪比 DNR&#xff08;…

DP7398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片

目录 DP7398简介结构框图芯片特性 应用领域 DP7398简介 DP7398是立体声 24 位/192kHz 数模转换芯片。该D/A系统包括数字去加重、半分贝步长音量控制、ATAPI 通道混频、可选择的快速和慢速数字插补滤波器和过采样多位增量 Sigma-Delta 调制器&#xff1b;该调制器采用失调整形技…

ijkplayer 音频解码线程

在ijkplayer 读线程中提到&#xff0c;函数stream_component_open()中的decoder_start()会创建音频解码线程&#xff0c;来看解码线程audio_thread()的主要代码 static int audio_thread(void *arg) {...do {...if ((got_frame decoder_decode_frame(ffp, &is->auddec…

ES9023音频解码芯片原理及应用简介

一般来说&#xff0c;音频解码器分为两类&#xff0c;一类是用于Hi&#xff0d;Fi听音的纯音频解码器&#xff0c;即指把CD机等数字音源器材一分为二后&#xff0c;去掉转盘&#xff08;驱动光碟旋转读盘&#xff09;的部分。 纯音频解码器的主要作用是把读取的数字音频信息转…

iOS的音频解码详解

在iOS平台上,所有的音频框架底层都是基于AudioUnit实现的,较高层次的音频框架包括: Media Player、 AV Foundation、OpenAL和Audio Toolbox,这些框架都封装了AudioUnit,然后提供了更高层次的API(功能更少,职责更单一的接口)。 当开发者在开发音视频相关产品的时候,如果…