- 博客(367)
- 资源 (85)
- 收藏
- 关注

原创 《FFmpeg开发实战:从零基础到短视频上线》资源下载和内容勘误
下面是《FFmpeg开发实战:从零基础到短视频上线》一书用到的工具和代码资源:1、本书使用的FFmpeg版本为,也可在FFmpeg的github主页上下载。2、本书第12章使用的Android Studio版本为。3、本书提供所有示例源码的demo工程下载,扫描前言末尾的二维码即可下载完整的随书源码。最新的源码也可访问我的gitee获取,gitee地址是。4、本书提供配套的ppt课件下载,扫描前言末尾的二维码即可下载完整的随书ppt。
2024-06-23 13:00:55
1885

原创 FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)
下面是补充的FFmpeg开发笔记内容目录,主要是对《FFmpeg开发实战:从零基础到短视频上线》的进阶增补。记录下FFmpeg的学习笔记目录,完整的FFmpeg开发实战内容详见。下面是《FFmpeg开发实战:从零基础到短视频上线》一书的目录概要。第七章 Windows环境给FFmpeg集成第三方库。第二章 Windows环境编译FFmpeg。8.1 Windows环境编译FFmpeg。第一章 Linux环境编译FFmpeg。第 12 章 FFmpeg的移动开发。
2024-05-18 16:36:52
2499
1

原创 《Android Studio开发实战 从零基础到App上线(第3版)》资源下载和内容勘误
下面是《Android Studio开发实战 从零基础到App上线(第3版)》一书用到的工具和代码资源:1、本书使用的Android Studio版本为Android Studio Dolphin(小海豚版本),最新的安装包可前往。2、本书使用的Android NDK版本为r23b,最新的安装包可前往。3、本书提供所有示例源码的demo工程下载,源码(适配Android5.0到Android12)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。
2023-04-05 08:00:00
15390
39

原创 《Android App开发进阶与项目实战》资源下载和内容勘误
下面是《Android App开发进阶与项目实战》一书用到的工具和代码资源:1、本书使用的Android Studio版本为4.2,最新的安装包可前往。2、本书提供所有示例源码的demo工程下载,源码(适配Android4.4到Android11)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。最新的源码也可访问我的github获取,github地址是,服务端的github地址是。
2022-12-10 09:00:00
1394

原创 《Android App开发入门与项目实战》资源下载和内容勘误
下面是《Android App开发入门与项目实战》一书用到的工具和代码资源:1、本书使用的Android Studio版本为4.1,最新的安装包可前往。2、本书提供所有示例源码的demo工程下载,源码(适配Android4.4到Android11)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。最新的源码也可访问我的gitee获取。
2021-06-07 14:42:29
3633
13

原创 《好好学Java 从零基础到项目实战》姗姗而来
梦里寻她千百度,千呼万唤始出来。从决定开始写这本书,到最终出版上市,数数已经是第三个夏天了。今年疫情有点紧,各行各业都受到影响,多亏出版社各位老师东奔西走,总算排除了万般艰难险阻,这才有了《好好学Java 从零基础到项目实战》的顺利上市。又是一本600页的编程书籍,拿在手中沉甸甸的,感觉两年的辛劳和等待终于没有白费。感谢这个伟大的时代给人激情澎湃,感谢清华社的老师在芸芸众生中发掘人才,让程序员也有机会成为技术作家,感谢我的家人始终如一的支持和关怀,使我能够集中精力写完本书。先来看看《好好学Java 从零基
2020-07-03 13:17:31
2657
2

原创 《Android Studio开发实战 从零基础到App上线(第2版)》资源下载和内容勘误
资源下载下面是《Android Studio开发实战 从零基础到App上线(第2版)》一书用到的工具和代码资源:1、本书使用的Android Studio版本为3.2,最新的安装包可前往Android官网页面下载。2、本书使用的Android NDK版本为r17,最新的安装包可前往Android官网页面下载。3、本书提供所有示例源码的demo工程下载,源码(适配Android4.1到9....
2020-04-06 16:58:31
49110
182

原创 Kotlin入门教程——目录索引
Kotlin是谷歌官方认可的Android开发语言,即将发布的Android Studio 3.0版本也会开始内置Kotlin,所以未来在App开发中Kotlin取代Java是大势所趋,就像当初Android Studio取代Eclipse成为App开发工具一样。下面分章节列出各篇Kotlin教程的索引地址,方便大家查阅。Kotlin入门教程目录第一章 环境搭建Kotlin入门(1)...
2017-07-18 11:04:12
13427
1

原创 Android开发笔记(序)写在前面的目录
知识点分类一方面写写自己走过的弯路掉进去的坑,避免以后再犯;另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平。因此博主就想,入门的东西咱就不写了,人不能老停留在入门上;其次是想拾缺补漏,写写虽然小众却又用得着的东西;另外就是想以实用为主,不求大而全,但求小而精;还有就是有的知识点是java的,只是Android开发也会经常遇上,所以蛮记下来。个人的经验......
2015-11-24 14:36:06
81276
66
原创 FFmpeg开发笔记(六十九)Windows给FFmpeg集成AV1编码器libaom
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了大约27%。由于AV1具有性能优势,并且还是免费授权,因此各大流媒体平台更倾向使用AV1而非HEVC标准。
2025-06-09 08:00:00
524
原创 FFmpeg开发笔记(六十八)Windows给FFmpeg集成AV1解码器libdav1d
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了大约27%。由于AV1具有性能优势,并且还是免费授权,因此各大流媒体平台更倾向使用AV1而非HEVC标准。
2025-06-06 08:00:00
939
原创 FFmpeg开发笔记(六十七)Windows给FFmpeg集成支持RIST协议的librist
FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。其中SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。RIST全称为Reliable Internet Stream Transport,中文叫做可靠的互联网流传输协议。SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。
2025-06-03 08:00:00
875
原创 2025年Android开发者的学习路线指南
首先入门Android开发推荐这本《Android Studio开发实战:从零基础到App上线(第3版)》,该书于2022年10月出版,基于Android Studio Dolphin(小海豚版本)和 Android 12 编写,适合初学者入门Android应用开发。如今是AI时代,Android开发也要与时俱进搭上大模型。又如Android的车机开发推荐这本《Android智能座舱开发:从源码到实践》,该书于2024年10月出版,专注于Android车机系统开发与优化,适合初学者入门车载系统开发技术。
2025-06-01 08:00:00
378
原创 FFmpeg开发笔记(六十六)Windows给FFmpeg集成LC3音频的编码器liblc3
FFmpeg开发实战:从零基础到短视频上线》一书的第五章介绍了FFmpeg如何处理常见的MP3音频和AAC音频,其中MP3格式常用于音乐文件,而AAC格式常用于视频文件。除此以外,近年又出现了专用于蓝牙音频的LC3格式,其全称是低复杂度通信编解码器(Low Complexity Communications Codec)。2020年9月15日,蓝牙技术联盟正式发布LC3技术规范,所有的蓝牙音频规范将强制使用LC3音频编解码器。
2025-05-30 08:00:00
535
原创 FFmpeg开发笔记(六十五)Linux给FFmpeg集成LC3音频的编码器liblc3
FFmpeg开发实战:从零基础到短视频上线》一书的第五章介绍了FFmpeg如何处理常见的MP3音频和AAC音频,其中MP3格式常用于音乐文件,而AAC格式常用于视频文件。除此以外,近年又出现了专用于蓝牙音频的LC3格式,其全称是低复杂度通信编解码器(Low Complexity Communications Codec)。2020年9月15日,蓝牙技术联盟正式发布LC3技术规范,所有的蓝牙音频规范将强制使用LC3音频编解码器。
2025-05-27 08:00:00
1208
原创 FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频
RedPlayer是小红书基于FFmpeg4.3研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。有关FFmpeg在Android平台的集成说明参见《FFmpeg开发实战:从零基础到短视频上线》一书的“第12章 FFmpeg的移动开发”。之前的文章《使用国产的ijkplayer播放器观看网络视频》介绍了另一款由B站研发的国产播放器ijkplayer,可惜ijkplayer已经多年未更新源码,使得应用在App项目中颇为不便。
2025-05-24 08:00:00
805
原创 FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
由以上视频信息可见,采取H.264格式的视频大小约640K,采取H.265格式的视频大小约306K,采取H.266格式的视频大小约278K,可见hevc和vvc编码的视频大小都比h264编码的视频大为减小,其中vvc视频比起hevc视频又缩小了少许。前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放。本系列的FFmpeg进阶文章目录为。
2025-05-22 08:00:00
310
原创 FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
FFmpeg开发实战:从零基础到短视频上线》该书的第八章介绍了如何在Windows环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码),H.266的视频编码标准为VVC(Versatile Video Coding,多功能视频编码)。
2025-05-19 08:00:00
589
原创 FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc
FFmpeg开发实战:从零基础到短视频上线》该书的第一章介绍了如何在Linux环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码),H.266的视频编码标准为VVC(Versatile Video Coding,多功能视频编码)。
2025-05-15 08:00:00
793
原创 鸿蒙NEXT开发笔记(三十四)仿华为阅读App的浏览MOBI电子书
Reader Kit是HarmonyOS NEXT从5.0.4版本(对应API 16)开始提供的阅读服务,它支持txt、epub、mobi、azw、azw3等多种格式的电子书籍,具备电子书的解析、排版、阅读交互能力,能够帮助开发者快速构建书籍阅读能力。
2025-04-27 08:00:00
595
原创 鸿蒙NEXT开发笔记(三十三)仿华为阅读App的逐页浏览PDF
上一篇文章虽然使用PdfView组件及其控制器实现了PDF文档的加载功能,但实际的渲染结果会把PDF的所有页面都显示出来,而非由用户控制的一页一页浏览。那么若想实现更加精细的浏览操作,就要引入PDF服务模块pdfService了。pdfService模块不仅支持文档加载、翻页、转存图片等常见功能,还为应用提供统一的管理PDF页面的页眉页脚、水印和背景、文档的多种批注风格和书签便捷的PDF能力。pdfService的常用方法说明如下:loadDocument:加载指定路径的PDF文件。
2025-04-24 08:00:00
594
原创 鸿蒙NEXT开发笔记(三十二)仿华为阅读App的浏览PDF文档
HarmonyOS NEXT自带的PDF Kit提供了PDF文档浏览和修改服务,不但支持预览PDF文档内容,还支持对PDF文档添加文本内容、图片、批注、页眉页脚、水印、背景图片、书签等。使用PDF服务之前,要先在ETS代码开头添加以下的导包语句,表示引入PDF服务需要的pdfService、pdfViewManager、PdfView等模块
2025-04-21 08:00:00
272
原创 鸿蒙NEXT开发笔记(二十五)仿抖音快手App的获取视频缩略图
上一节我们利用系统相机实现了录像功能,那么为了直观地浏览视频列表,就要给每个视频配上封面,这个封面图的来源之一便是视频里的某帧画面。接下来就介绍如何从视频文件中根据时间点提取帧图像,具体的提取过程分为以下四个步骤。
2024-12-23 08:00:00
378
原创 鸿蒙NEXT开发笔记(二十四)仿抖音快手App的相机录制视频
上一节我们使用Refresh组件实现了下拉刷新功能。除了浏览别人发布的短视频,用户也能在抖音App上发布自己的作品,当然首先得有一段录制好的视频,那么在鸿蒙系统录像用到了系统相机。
2024-12-16 08:00:00
636
原创 鸿蒙NEXT开发笔记(二十三)仿抖音快手App的下拉刷新组件
同时将refreshing参数绑定的变量设为false,此时系统监控到refreshing值变为false,就自动让App界面往顶部回弹,结束下拉刷新操作。上一节我们通过网络请求库实现了简单的HTTP接口调用,那么除了在首次加载App界面时的接口调用,用户还会通过下拉刷新动作实时获取最新的接口内容。鸿蒙系统提供了专门的下拉刷新组件Refresh,方便开发者处理下拉刷新事件。(1)单个手指按住屏幕开始下拉,下拉过程中,整个App界面会跟着往下挪动,此时屏幕顶部的拉出区域会显示promptText设置的文本。
2024-12-09 08:00:00
477
原创 鸿蒙NEXT开发笔记(二十二)仿抖音快手App的网络接口调用
上一节我们通过添加权限配置成功申请了应用的网络访问权限,这样App才能访问网络接口,才能加载网络图片。
2024-12-06 08:00:00
334
原创 鸿蒙NEXT开发笔记(二十一)仿抖音快手App的网络动态授权
上一节我们利用滑块组件实现了多张图片的左右轮播特效,在此基础上可以实现多个短视频的上下轮播特效。那么要想正常播放网络视频,还得让App提前获得网络授权才行。鸿蒙系统提供了一种允许应用访问系统资源(例如通讯录)和系统能力(例如访问摄像头、麦克风等)的通用权限访问方式,以此避免系统数据和系统功能被不当使用。根据授权方式的不同,鸿蒙App的权限类型可分为system_grant(系统授权)和user_grant(用户授权)。
2024-12-04 08:00:00
1043
原创 鸿蒙NEXT开发笔记(二十)仿抖音快手App的轮播特效
上一节我们利用相对布局实现了短视频播放界面的交互图标叠加效果,那么除了在空间上的叠加特效之外,还有另一种在时间上的轮播特效,允许同一类型的媒体列表随着时间流逝而切换。这种轮播特效便用到了滑块组件Swiper,它支持输入一组图片或者一组视频,通过滑动手势来切换前后的媒体内容。Swiper又是一种容器,里面放着同类型的子组件,那么首先得提供一个媒体内容数组,用于依次填充子组件列表。cachedCount:预加载子组件个数, 以当前页面为基准,加载当前显示页面的前后个数。index:当前显示的子组件索引值。
2024-12-02 08:00:00
438
原创 鸿蒙NEXT开发笔记(十九)仿抖音快手App的相对布局
除了以上级容器作为锚点,还能以平级组件作为锚点,注意锚点组件要提前分配id标识,然后目标组件在alignRules方法的anchor属性设置锚点的id,表示参考该id的锚点组件来决定自身位置。所谓相对布局,指的是内部组件相对于其他组件来决定自身的位置。这个锚点既可能是子组件的上级容器也就是相对布局,也可能是子组件的平级组件。鸿蒙SDK提供的相对布局叫做RelativeContainer组件,相对布局内部的各个子组件按照指定位置排列,如果两个子组件同时覆盖了某块区域,后来的子组件画面将覆盖先来的子组件画面。
2024-11-29 08:00:00
390
原创 鸿蒙NEXT开发笔记(十八)仿抖音快手App的选择相册视频
从PhotoViewPicker返回的相片选择器,可调用select方法拉起相册,供用户挑选相册视频。select方法的输入参数就是前面得到的PhotoSelectOptions对象,select方法的视频选择结果通过异步方式返回,返回结果为PhotoSelectResult类型,结果对象的photoUris字段保存着用户选中的一个或者多个视频的文件路径。这里说是相片,实际可同时访问图片和视频。暂且不提网络视频,因为访问网络需要申请授权,只说从系统相册挑选一个视频文件,那就简单多了。
2024-11-27 08:00:00
596
原创 鸿蒙NEXT开发笔记(十七)仿抖音快手App的视频播放组件
仿抖音快手”的App项目在Android系统中有成熟的实战案例,具体参见《Android Studio开发实战:从零基础到App上线(第3版)》第14章的“14.4 实战项目:仿抖音的短视频分享”,该项目的前后端通讯方式采用HTTP接口实现,既支持向服务端上传短视频,也支持从服务端拉取短视频观看,并且在多部Android真机上测试通过,具备很高的学习研究价值。待播放的视频路径要在Video组件的构造方法中传入,除此以外,构造方法还支持传入其他参数,以实现更丰富的播控功能。reset:重置内部播放器。
2024-11-25 08:00:00
650
原创 鸿蒙NEXT开发笔记(十六)仿微信聊天App的群聊功能
上一节我们通过自定义图片分段结构实现了从SocketIO服务器接收图片的功能,至此可以在单聊中发送文本和图片了。不过若想在群聊中发送文本和图片,还得构建一套群聊机制,把群成员发送的消息转发给其他的群成员。具体的群聊构建过程分为下列几个事件处理。
2024-11-18 08:00:00
621
原创 鸿蒙NEXT开发笔记(十五)仿微信聊天App的接收图片
上一节我们通过自定义图片分段结构实现了向SocketIO服务器发送图片的功能,那么还需实现从SocketIO服务器接收图片的功能,才叫完成图片消息收发的闭环操作。接下来以BASE64串作为图片数据的载体,在接收完所有图片分段数据后,将其解码并重新拼接为原始的图片。具体的接收过程分为下列两个步骤。
2024-11-15 08:00:00
413
原创 鸿蒙NEXT开发笔记(十四)仿微信聊天App的发送图片
因为图片可能会分段编码为BASE64串传输,所以每次传输的数据包都要携带序号、长度、内容等信息,这样既方便发送端有序地切分图片数据,也方便接收端按顺序重新组装完整的图片。// 分段序号// 分段名称// 分段数据// 分段长度。
2024-11-13 08:00:00
310
原创 鸿蒙NEXT开发笔记(十三)仿微信聊天App的BASE64转像素图
上一节我们综合使用fileIo、image、buffer等工具库,把图片文件的二进制数据成功编码为BASE64字符串。那么为了能够正常收发图片消息,还需从BASE64字符串解码得到原始的图片数据,这样一来一去的无损逆向操作,方能实现准确无误的图片传输功能。对于鸿蒙App来说,由于Image组件可直接显示PixelMap像素图,因此BASE64串无需转成图片文件,只需转到PixelMap这步即可。由BASE64串转像素图的具体过程包含以下三个步骤。
2024-11-11 08:00:00
794
原创 鸿蒙NEXT开发笔记(十二)仿微信聊天App的图片转BASE64串
上一节我们利用photoAccessHelper实现了从相册挑选图片的功能,但是SocketIO不支持传输二进制数据,只允许传输文本字符串,那么得想办法把图片数据转成字符串才行。由于图片数据转字符串的操作要求可逆,也就是图片转成字符串之后,还能把字符串恢复成原图片,因此这种转换必须是无损操作。基于以上考虑,可把图片内容的二进制数据通过BASE64算法重新编码成十六进制的字符串,对应的反向操作就是,把十六进制的BASE64字符串解码成为二进制的图片数据。
2024-11-08 08:00:00
695
原创 鸿蒙NEXT开发笔记(十一)仿微信聊天App的选择相册图片
从PhotoViewPicker返回的相片选择器,可调用select方法拉起相册,供用户挑选相册图片。select方法的输入参数就是前面提到的PhotoSelectOptions对象,select方法的图片选择结果通过异步方式返回,返回结果为PhotoSelectResult类型,结果对象的photoUris字段保存着用户选中的一张或者多张图片的文件路径。鸿蒙提供了photoAccessHelper工具,无需申请相册或存储权限,即可从相册中选择几张图片。如果只需选择一张图片,填1即可。
2024-11-06 08:00:00
555
原创 鸿蒙NEXT开发笔记(十)仿微信聊天App的解析JSON串
首先自己定义一个数据结构,比如下面定义的UserInfo结构,用来存放用户信息。id: number。
2024-11-04 08:00:00
538
原创 鸿蒙NEXT开发笔记(九)仿微信聊天App的收发文本消息
上一节我们把SocketIO库导入App工程,那么怎样通过SocketIO库来传递聊天消息呢?接下来就以文本消息为例,介绍如何利用SocketIO库在鸿蒙真机与服务器之间收发文本消息。由于SocketIO库属于外部的第三方库,因此以源码方式导入SocketIO库的时候,还要补充相应的依赖配置。也就是打开App模块的的oh-package.json5,在dependencies节点内部添加库名、版本号或者库路径。
2024-11-01 08:00:00
605
原创 鸿蒙NEXT开发笔记(八)仿微信聊天App的SocketIO库
上一节我们实现了仿微信消息的气泡背景效果,那么聊天消息的传输还要引入第三方的SocketIO库,我方手机的App先把消息内容传给后端的SocketIO服务器,再由SocketIO服务器把消息内容转发给对方手机的App。后端的SocketIO服务器可采用netty-socketio,完整的服务端工程代码参考 https://gitee.com/aqi00/net_server/tree/master/HttpServer。
2024-10-30 08:00:00
601
1
Android自定义Drawable的代码例子
2016-08-31
Android使用更多更好看图像控件的代码例子
2016-09-06
Android上传文件的代码例子
2016-08-29
Android操作工具栏Toolbar的代码例子
2016-09-05
Android对多语言支持的代码例子
2016-08-30
Android对图片进行特效处理的代码例子
2016-09-01
Android对屏幕规格适配的代码例子
2016-08-30
Android使用列表弹窗的代码例子
2016-09-05
Android对运行时状态检查的代码例子
2016-08-29
Android兼容5.0水波动画的代码例子
2016-08-30
Android对资源和权限进行校验的代码例子
2016-08-29
Android使用可折叠工具栏布局CollapsingToolbarLayout的代码例子
2017-02-24
Android读取并显示word文件的代码例子
2017-04-09
Android使用截图和录屏功能的代码例子
2017-03-24
Android自定义行为Behavior的代码例子
2017-03-08
Android使用提示窗Snackbar的代码例子
2017-02-09
Android使用文本输入布局TextInputLayout的代码例子
2017-03-15
Android使用应用栏布局AppBarLayout的代码例子
2017-02-24
Android自定义音乐播放器的代码例子
2016-09-20
Android使用水波图形和矢量图形的代码例子
2017-02-09
Android实现可定制可滑动的标签栏的代码例子
2017-04-09
Android使用变换图形的代码例子
2017-02-09
Android自带的循环器视图RecyclerView的代码例子
2016-09-02
Android使用协调布局CoordinatorLayout的代码例子
2017-02-27
Android读取ppt和pdf文件的代码例子
2017-04-16
Android使用导航视图NavigationView的代码例子
2017-02-24
Android自定义视频播放器的代码例子
2016-09-12
Android自带的两个侧滑布局的代码例子
2016-09-02
Android使用任务调度JobScheduler的代码例子
2017-05-11
Android浏览书籍的层叠翻页动画效果
2017-05-04
Android校验手机制式适配的代码例子
2017-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人