作者:林冠宏 / 指尖下的幽灵
腾讯云+社区:https://cloud.tencent.com/developer/user/1148436/activities 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/
为了您的直观体验,请务必看完下面 gif 图,源码 gitHub 链接在其之后。
做这个东西的目的是: 完善毕设: 一个没依赖各种云,而使用C++和Golang做后端的仿微信APP
为了避免大家浪费时间,直接先看下面的 Gif,略大,请耐心点。看完后,若你觉得会需要到,那么就请听我继续。 git显示,略大,请耐心
废话一句:这个显示只是其中一部分,重点是:FFmpeg + Camera 的录制部分,所以,你的星星(star)也是一种更新通知 (我通知你)。
https://github.com/af913337456/WeChatVideoView
如果你看完上面的gif图,你会发现如下几点功能 (Function list):
1,直观的
2,隐藏的
直观的功能点,几乎就是和新版微信
的一样,从朋友圈点击一个视频,然后进入到一个 Activity 页面进行加载以及播放。
因为采用的是 SurfaceView 而不是 TextureView,图与视频切换的切换延迟也是这个原因。
这样就会以 id 为 activity_main 的 Relativelayout 为父容器装载。 因为要避免内存泄露,所以你还需要做完下面的一些步骤,不会超过6行代码。
自定义 AsyncTask。PS:AsyncTask 比 Thread + handler 重量级却方便(回调进度),但是,如果是 即放即用,结束即销毁,那么,no need to think about this;
surfaceView 用作显示,mediaPlayer 用来解码 两者关系: mediaPlayer 绑定 surfaceView。
自定义 View,3个画笔绘制,一个圆,一个边,一个扇区。