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

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

原创 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
2017

原创 《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
14263
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
1329

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

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

原创 Android开发笔记(序)写在前面的目录
知识点分类一方面写写自己走过的弯路掉进去的坑,避免以后再犯;另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平。因此博主就想,入门的东西咱就不写了,人不能老停留在入门上;其次是想拾缺补漏,写写虽然小众却又用得着的东西;另外就是想以实用为主,不求大而全,但求小而精;还有就是有的知识点是java的,只是Android开发也会经常遇上,所以蛮记下来。个人的经验......
2015-11-24 14:36:06
80441
66
原创 鸿蒙NEXT开发笔记(二十五)仿抖音快手App的获取视频缩略图
上一节我们利用系统相机实现了录像功能,那么为了直观地浏览视频列表,就要给每个视频配上封面,这个封面图的来源之一便是视频里的某帧画面。接下来就介绍如何从视频文件中根据时间点提取帧图像,具体的提取过程分为以下四个步骤。
2024-12-23 08:00:00
222
原创 鸿蒙NEXT开发笔记(二十四)仿抖音快手App的相机录制视频
上一节我们使用Refresh组件实现了下拉刷新功能。除了浏览别人发布的短视频,用户也能在抖音App上发布自己的作品,当然首先得有一段录制好的视频,那么在鸿蒙系统录像用到了系统相机。
2024-12-16 08:00:00
481
原创 鸿蒙NEXT开发笔记(二十三)仿抖音快手App的下拉刷新组件
同时将refreshing参数绑定的变量设为false,此时系统监控到refreshing值变为false,就自动让App界面往顶部回弹,结束下拉刷新操作。上一节我们通过网络请求库实现了简单的HTTP接口调用,那么除了在首次加载App界面时的接口调用,用户还会通过下拉刷新动作实时获取最新的接口内容。鸿蒙系统提供了专门的下拉刷新组件Refresh,方便开发者处理下拉刷新事件。(1)单个手指按住屏幕开始下拉,下拉过程中,整个App界面会跟着往下挪动,此时屏幕顶部的拉出区域会显示promptText设置的文本。
2024-12-09 08:00:00
385
原创 鸿蒙NEXT开发笔记(二十二)仿抖音快手App的网络接口调用
上一节我们通过添加权限配置成功申请了应用的网络访问权限,这样App才能访问网络接口,才能加载网络图片。
2024-12-06 08:00:00
283
原创 鸿蒙NEXT开发笔记(二十一)仿抖音快手App的网络动态授权
上一节我们利用滑块组件实现了多张图片的左右轮播特效,在此基础上可以实现多个短视频的上下轮播特效。那么要想正常播放网络视频,还得让App提前获得网络授权才行。鸿蒙系统提供了一种允许应用访问系统资源(例如通讯录)和系统能力(例如访问摄像头、麦克风等)的通用权限访问方式,以此避免系统数据和系统功能被不当使用。根据授权方式的不同,鸿蒙App的权限类型可分为system_grant(系统授权)和user_grant(用户授权)。
2024-12-04 08:00:00
939
原创 鸿蒙NEXT开发笔记(二十)仿抖音快手App的轮播特效
上一节我们利用相对布局实现了短视频播放界面的交互图标叠加效果,那么除了在空间上的叠加特效之外,还有另一种在时间上的轮播特效,允许同一类型的媒体列表随着时间流逝而切换。这种轮播特效便用到了滑块组件Swiper,它支持输入一组图片或者一组视频,通过滑动手势来切换前后的媒体内容。Swiper又是一种容器,里面放着同类型的子组件,那么首先得提供一个媒体内容数组,用于依次填充子组件列表。cachedCount:预加载子组件个数, 以当前页面为基准,加载当前显示页面的前后个数。index:当前显示的子组件索引值。
2024-12-02 08:00:00
350
原创 鸿蒙NEXT开发笔记(十九)仿抖音快手App的相对布局
除了以上级容器作为锚点,还能以平级组件作为锚点,注意锚点组件要提前分配id标识,然后目标组件在alignRules方法的anchor属性设置锚点的id,表示参考该id的锚点组件来决定自身位置。所谓相对布局,指的是内部组件相对于其他组件来决定自身的位置。这个锚点既可能是子组件的上级容器也就是相对布局,也可能是子组件的平级组件。鸿蒙SDK提供的相对布局叫做RelativeContainer组件,相对布局内部的各个子组件按照指定位置排列,如果两个子组件同时覆盖了某块区域,后来的子组件画面将覆盖先来的子组件画面。
2024-11-29 08:00:00
342
原创 鸿蒙NEXT开发笔记(十八)仿抖音快手App的选择相册视频
从PhotoViewPicker返回的相片选择器,可调用select方法拉起相册,供用户挑选相册视频。select方法的输入参数就是前面得到的PhotoSelectOptions对象,select方法的视频选择结果通过异步方式返回,返回结果为PhotoSelectResult类型,结果对象的photoUris字段保存着用户选中的一个或者多个视频的文件路径。这里说是相片,实际可同时访问图片和视频。暂且不提网络视频,因为访问网络需要申请授权,只说从系统相册挑选一个视频文件,那就简单多了。
2024-11-27 08:00:00
532
原创 鸿蒙NEXT开发笔记(十七)仿抖音快手App的视频播放组件
仿抖音快手”的App项目在Android系统中有成熟的实战案例,具体参见《Android Studio开发实战:从零基础到App上线(第3版)》第14章的“14.4 实战项目:仿抖音的短视频分享”,该项目的前后端通讯方式采用HTTP接口实现,既支持向服务端上传短视频,也支持从服务端拉取短视频观看,并且在多部Android真机上测试通过,具备很高的学习研究价值。待播放的视频路径要在Video组件的构造方法中传入,除此以外,构造方法还支持传入其他参数,以实现更丰富的播控功能。reset:重置内部播放器。
2024-11-25 08:00:00
425
原创 鸿蒙NEXT开发笔记(十六)仿微信聊天App的群聊功能
上一节我们通过自定义图片分段结构实现了从SocketIO服务器接收图片的功能,至此可以在单聊中发送文本和图片了。不过若想在群聊中发送文本和图片,还得构建一套群聊机制,把群成员发送的消息转发给其他的群成员。具体的群聊构建过程分为下列几个事件处理。
2024-11-18 08:00:00
507
原创 鸿蒙NEXT开发笔记(十五)仿微信聊天App的接收图片
上一节我们通过自定义图片分段结构实现了向SocketIO服务器发送图片的功能,那么还需实现从SocketIO服务器接收图片的功能,才叫完成图片消息收发的闭环操作。接下来以BASE64串作为图片数据的载体,在接收完所有图片分段数据后,将其解码并重新拼接为原始的图片。具体的接收过程分为下列两个步骤。
2024-11-15 08:00:00
377
原创 鸿蒙NEXT开发笔记(十四)仿微信聊天App的发送图片
因为图片可能会分段编码为BASE64串传输,所以每次传输的数据包都要携带序号、长度、内容等信息,这样既方便发送端有序地切分图片数据,也方便接收端按顺序重新组装完整的图片。// 分段序号// 分段名称// 分段数据// 分段长度。
2024-11-13 08:00:00
253
原创 鸿蒙NEXT开发笔记(十三)仿微信聊天App的BASE64转像素图
上一节我们综合使用fileIo、image、buffer等工具库,把图片文件的二进制数据成功编码为BASE64字符串。那么为了能够正常收发图片消息,还需从BASE64字符串解码得到原始的图片数据,这样一来一去的无损逆向操作,方能实现准确无误的图片传输功能。对于鸿蒙App来说,由于Image组件可直接显示PixelMap像素图,因此BASE64串无需转成图片文件,只需转到PixelMap这步即可。由BASE64串转像素图的具体过程包含以下三个步骤。
2024-11-11 08:00:00
619
原创 鸿蒙NEXT开发笔记(十二)仿微信聊天App的图片转BASE64串
上一节我们利用photoAccessHelper实现了从相册挑选图片的功能,但是SocketIO不支持传输二进制数据,只允许传输文本字符串,那么得想办法把图片数据转成字符串才行。由于图片数据转字符串的操作要求可逆,也就是图片转成字符串之后,还能把字符串恢复成原图片,因此这种转换必须是无损操作。基于以上考虑,可把图片内容的二进制数据通过BASE64算法重新编码成十六进制的字符串,对应的反向操作就是,把十六进制的BASE64字符串解码成为二进制的图片数据。
2024-11-08 08:00:00
546
原创 鸿蒙NEXT开发笔记(十一)仿微信聊天App的选择相册图片
从PhotoViewPicker返回的相片选择器,可调用select方法拉起相册,供用户挑选相册图片。select方法的输入参数就是前面提到的PhotoSelectOptions对象,select方法的图片选择结果通过异步方式返回,返回结果为PhotoSelectResult类型,结果对象的photoUris字段保存着用户选中的一张或者多张图片的文件路径。鸿蒙提供了photoAccessHelper工具,无需申请相册或存储权限,即可从相册中选择几张图片。如果只需选择一张图片,填1即可。
2024-11-06 08:00:00
471
原创 鸿蒙NEXT开发笔记(十)仿微信聊天App的解析JSON串
首先自己定义一个数据结构,比如下面定义的UserInfo结构,用来存放用户信息。id: number。
2024-11-04 08:00:00
486
原创 鸿蒙NEXT开发笔记(九)仿微信聊天App的收发文本消息
上一节我们把SocketIO库导入App工程,那么怎样通过SocketIO库来传递聊天消息呢?接下来就以文本消息为例,介绍如何利用SocketIO库在鸿蒙真机与服务器之间收发文本消息。由于SocketIO库属于外部的第三方库,因此以源码方式导入SocketIO库的时候,还要补充相应的依赖配置。也就是打开App模块的的oh-package.json5,在dependencies节点内部添加库名、版本号或者库路径。
2024-11-01 08:00:00
506
原创 鸿蒙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
484
1
原创 鸿蒙NEXT开发笔记(七)仿微信聊天App的气泡背景
上一节我们实现了仿微信聊天页面的消息左右对齐方式,那么聊天消息的气泡背景也是很有必要的,不管聊天消息有多长有多高,气泡背景都能自动跟着拉长拉高,恰当地把消息内容都包裹在气泡中,如下图所示。在安卓系统中,气泡背景通过点九图(也叫九宫格图片)实现,利用Android Studio特制的.9.png图片,安卓App能够根据实际宽高自动拉伸点九图的指定区域。但在鸿蒙系统中,不存在特制的点九图片格式,而是通过与点九图相同功能的API设置实现,详细说明如下。
2024-10-28 08:00:00
430
原创 鸿蒙NEXT开发笔记(六)仿微信聊天App的聊天消息对齐
上一节我们实现了仿微信聊天页面的软键盘避让方式,那么聊天时候的对方消息和我方消息有着不同的对齐方式,对方消息靠左靠上对齐,而我方消息靠右靠下对齐,如下图所示。对于组件内外的对齐规则,鸿蒙App与安卓App拥有不同的处理方式。安卓App通过layout_gravity属性控制自身相对上级容器的对齐方式,通过gravity属性控制下级组件相对自身的对齐方式。而对鸿蒙App而言,情况又有所不同,下面将一一阐述鸿蒙App对于各种场景的对齐规则。
2024-10-25 08:00:00
919
原创 鸿蒙NEXT开发笔记(五)仿微信聊天App的避让软键盘
上一节我们实现了仿微信的昵称修改弹窗,那么在微信的聊天页面,看起来是对方和自己一左一右的对话交互。别看这个对话界面没什么技术含量,实际上打磨一个既方便又美观的交互效果可不容易了,仅仅对话界面就有软键盘避让、组件内外对齐、背景图拉伸三个难点需要一一攻克。下面详细介绍如何在聊天界面有效避让输入法的软键盘。
2024-10-23 08:00:00
535
原创 鸿蒙NEXT开发笔记(四)仿微信聊天App的自定义弹窗
因为对话框属于独立的控件,允许被多个页面引用,所以可在单独的ETS文件中定义。自定义对话框以“@CustomDialog”前缀开头,并且内部必须声明CustomDialogController类型的控制器属性,这样外部页面才能通过控制器对象操纵对话框的交互动作。对于多数对话框来说,一般要提供取消和确定两个按钮,那么自定义对话框内部还需声明取消接口和确定接口,由具体引用的页面去实现真正的取消操作和确定操作。// @CustomDialog组件必须声明CustomDialogController属性。
2024-10-21 08:00:00
534
原创 鸿蒙NEXT开发笔记(三)仿微信聊天App的底部页签栏
ArkUI默认的单个页签风格很单调,仅仅提供页签文字罢了,缺少微信底部页签的丰富样式。为了给页签增加包含图标和文字在内的高亮效果,需要自己定义单个页签的布局内容。自定义的页签布局以“@Builder”打头,其后就像编写普通的方法代码那样,包括方法名称、方法参数、方法代码等等。常见的页签高亮特效会区分背景、图标、文字颜色和字号样式,可以采用Stack容器作为单个页签的根布局,先放入一张背景图片,再放入Column容器包裹的前景图标和前景文字。
2024-10-18 08:00:00
603
原创 鸿蒙NEXT开发笔记(二)仿微信聊天App的好友列表
上一节我们实现了仿微信的登录界面,那么登录成功打开微信主界面,首先就会看到好友列表页面。列表是一组具有相似风格的组件元素集合,可以从上往下顺序排列,也可以从左往右顺序排列。鸿蒙App采用List组件用作列表,所有基于列表的界面布局能够通过List实现。下面详细介绍如何使用List组件实现仿微信的好友列表界面。
2024-10-16 08:00:00
1676
原创 鸿蒙NEXT开发笔记(一)仿微信聊天App的登录页面
仿微信聊天”的App项目在Android系统中有成熟的实战案例,具体参见《Android Studio开发实战:从零基础到App上线(第3版)》第13章的“13.5 实战项目:仿微信的私聊和群聊”,该项目的前后端通讯方式采用SocketIO实现,同时支持一对一的私聊和多对多的群聊,聊天内容也同时支持文本消息和图片消息,并且在多部Android真机上测试通过,具备很高的学习研究价值。
2024-10-14 08:00:00
1241
原创 FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是Bilibili公司(简称B站)基于FFmpeg3.4研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。之前的文章《Linux编译ijkplayer的Android平台so库》介绍了如何编译获得App工程所需ijkplayer的so文件,接下来还要把官方的案例工程导入到新版的Android Studio,才能开展后续的App调试和开发工作。
2024-10-11 08:00:00
690
原创 FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统。ijkplayer的源码托管地址为https://github.com/bilibili/ijkplayer,截止2024年9月15日,ijkplayer获得3.24万星标数,以及0.81万个分支数,而这还是ijkplayer停止更新6年之后的数据,可想而知当年的ijkplayer是多么火爆。
2024-10-08 08:00:00
350
原创 FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
FFmpeg开发实战:从零基础到短视频上线》一书的“5.1.2 把音频流保存为PCM文件”介绍了如何把媒体文件中的音频流转存为原始的PCM音频,在样例代码的转存过程中,解码后的PCM数据未经任何加工处理,就直接保存到二进制文件。原汁原味保存的PCM文件本来也没什么问题,可是在实际应用中,有的业务场景需要特定规格的PCM音频。比如某厂家的语音识别引擎,要求只能输入16位的PCM数据,然而标准的MP3音频都采用32位采样,如此一来,得想办法把32位的MP3音频转换为16位的PCM音频才行。
2024-09-26 08:00:00
365
原创 FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
继音视频播放器ExoPlayer之后,谷歌又推出了音视频转换器Transformer,要在音视频加工领域施展拳脚。根据Android开发者官网介绍:Jetpack Media3是Android媒体库的新家,可让App呈现丰富的视听体验。Media3提供了一个简单的架构,能够基于设备功能开展自定义与可靠性优化,可以解决媒体部分的碎片化问题。
2024-09-23 08:00:00
429
原创 FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
Android早期的MediaPlayer控件对于网络视频的兼容性很差,所以后来单独推出了Exoplayer库增强支持网络视频,在《Android Studio开发实战:从零基础到App上线(第3版)》一书第14章的“14.3.3 新型播放器ExoPlayer”就详细介绍了Exoplayer库的详细用法。现在Android官方再次升级Exoplayer,并将其纳入了Jetpack的Media3第三代媒体库,作为音视频相关操作的统一处理引擎。
2024-09-18 08:00:00
1802
原创 FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
喊了多年的互联网寒冬,今年的寒风格外凛冽,还在坚守安卓开发的朋友着实不容易。因为能转行的早就转了,能转岗的也早就转了,那么安卓程序员比较迷茫的就是,我该学什么安卓技术才好呢?还是直接扔了安卓再去搞别的技术吗?下面探讨下安卓程序员还能在哪些方面进阶修炼,主要有以下三个方向。
2024-09-09 08:00:00
1355
Android使用更多更好看图像控件的代码例子
2016-09-06
Android使用列表弹窗的代码例子
2016-09-05
Android操作工具栏Toolbar的代码例子
2016-09-05
Android对图片进行特效处理的代码例子
2016-09-01
Android自定义Drawable的代码例子
2016-08-31
Android对多语言支持的代码例子
2016-08-30
Android兼容5.0水波动画的代码例子
2016-08-30
Android对屏幕规格适配的代码例子
2016-08-30
Android对资源和权限进行校验的代码例子
2016-08-29
Android上传文件的代码例子
2016-08-29
Android对运行时状态检查的代码例子
2016-08-29
Android使用任务调度JobScheduler的代码例子
2017-05-11
Android浏览书籍的层叠翻页动画效果
2017-05-04
Android读取ppt和pdf文件的代码例子
2017-04-16
Android读取并显示word文件的代码例子
2017-04-09
Android实现可定制可滑动的标签栏的代码例子
2017-04-09
Android使用截图和录屏功能的代码例子
2017-03-24
Android使用文本输入布局TextInputLayout的代码例子
2017-03-15
Android自定义行为Behavior的代码例子
2017-03-08
Android使用协调布局CoordinatorLayout的代码例子
2017-02-27
Android使用可折叠工具栏布局CollapsingToolbarLayout的代码例子
2017-02-24
Android使用应用栏布局AppBarLayout的代码例子
2017-02-24
Android使用导航视图NavigationView的代码例子
2017-02-24
Android使用水波图形和矢量图形的代码例子
2017-02-09
Android使用提示窗Snackbar的代码例子
2017-02-09
Android校验手机制式适配的代码例子
2017-02-09
Android使用变换图形的代码例子
2017-02-09
Android自定义音乐播放器的代码例子
2016-09-20
Android自定义视频播放器的代码例子
2016-09-12
Android自带的循环器视图RecyclerView的代码例子
2016-09-02
Android自带的两个侧滑布局的代码例子
2016-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人