Flutter Plugins
Flutter Plugins
插件类别
Dart packages - dart包, dart通用实现, 主要还是flutter平台上dart编写的库
Plugin packages(Federated plugins) - dart调用本地平台代码, 包含特定平台的实现, 每个平台放一个包里
FFI Plugin packages - dart调用本地库代码, c/c++
Dart Packages
flutter create --template=package hello
Plugin Packages
flutter create --org com.example --template=plugin --platforms=android,i...
Flutter dart:ffi
Flutter dart:ffi
动态与静态链接
本地库可以有动态链接与静态链接, 一个静态库会嵌入到APP执行映像中, 随应用一起启动
静态链接调用DynamicLibrary.executable 和 DynamicLibrary.process
动态链接库是单独文件放在应用中, 在需要时加载. 动态库是.so(ELF)分发, 每个架构一个
动态链接调用DynamicLibrary.open
C/C++注意事项
dart:ffi 只能绑定C语言的符号, 所以C++需要加上
extern “C” attribute((visibility(“default”))) attribute((used))
C/C++源码建议写...
I/O Multiplexing(多路复用)
I/O Multiplexing(多路复用)
当服务器在一个端口上创建监听, 该监听会阻塞当前线程, 当有一个请求时, 会激活当前
线程来处理请求, 处理完成继续阻塞等待下一个请求. 单线程模式, 一次只能处理一个请求.
当有一个请求时, 创建一个新的线程来处理这个请求, 服务器可以继续监听下一个请求.
多线程模式, 可以处理多个请求.
创建线程, 销毁线程和切换线程会有开销, 一般创建线程占用8M栈内存ulimit -a, 3G空余内存可以创建
300左右线程.
变种就是线程池模式, 解决了创建线程和销毁线程问题, 但是如果是需要多次交互的, 线程会
处于闲置状态, 等待可读或可写, 多个这种业务会占用线程数量, 后面的任务只能等待.
把I/O句柄(包括...
视频
视频
分辨率
采样频率
采集格式
传输通道
采集源
摄像头
屏幕录制
文件推流
android:
setPreviewCallback
MediaRecorder
iOS:
AVFoundation
pc:
mjpeg-streamer
滤镜: GPUImage
音频: SoundTouch
图像
视频是由一组图像组成的
图像是由像素组成
像素是由RGB组成: 位深 RGB888(24位), RGBA(32位)
分辨率 横轴 x 纵轴
RGB 发光二极管, 用于屏幕图像的展示
RGB与BGR, 有些数据是BGR, 显示前需要把BGR转换成RGB, BMP是使用BGR
YUV(YCbCr): Y表示明亮度, UV的作用是描述影像色彩及饱和度, 主要的采样格...
453 post articles, 57 pages.