2018年12月24日

主工程引用静态库(framework 或 .a)&动态库

摘要: 1.创建workspace 2.创建 Libs 文件夹,存放 .framework 格式的静态库与动态库 (通过shell脚本,编译完成自动copy到 Libs 文件夹下) 4.添加库到主工程,Targets-General-Linked Frameworks and Libraries,添加依赖的 阅读全文

posted @ 2018-12-24 21:02 马大哈哈 阅读(625) 评论(0) 推荐(1) 编辑

2018年12月2日

Tensorflow 静态库制作(ios)

摘要: 1.环境检查 是否安装xcode 是否安装homebrew 是否通过homebrew 安装 automake 是否通过homebrew安装libtool 是否下载TensorFlow源码(github: https://github.com/tensorflow/tensorflow) 2.开始制作 阅读全文

posted @ 2018-12-02 18:42 马大哈哈 阅读(709) 评论(0) 推荐(1) 编辑

2018年11月18日

Notification 到底怎么玩 ?与线程是怎样的错综复杂关系?

摘要: 区别并发队列串行队列主队列 同步(sync) 没有开启新线程,串行执行任务 没有开启新线程,串行执行任务 主线程调用:死锁卡住不执行其他线程调用:没有开启新线程,串行执行任务 异步(async) 有开启新线程,并发执行任务 有开启新线程(1条),串行执行任务 没有开启新线程,串行执行任务 接收通知, 阅读全文

posted @ 2018-11-18 12:38 马大哈哈 阅读(366) 评论(0) 推荐(1) 编辑

2018年10月25日

ios 黑魔法Swizzling的应用---分解ZFPlayer

摘要: ios黑魔法实际上就是方法之间的调换 Method_Swizzling是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzle代码写到任何地方,但是只有在Method_Swizzling这段Method Swizzle代码执行完毕之后互换才起作用。Meth 阅读全文

posted @ 2018-10-25 16:50 马大哈哈 阅读(467) 评论(0) 推荐(0) 编辑

ios 视频列表处理---分解ZFPlayer

摘要: 1.视频播放器添加到containerView的机制与一个普通播放器页面的不同 普通视频播放页面可以直接添加一个播放器,按照正常逻辑播放、暂停、切换等操作,而视频列表的做法是 用户触发播放动作 当点击一个cell上的播放按钮时,首先判断当前是否有其他cell在播放视频,有则停止播放并移除播放器, 反 阅读全文

posted @ 2018-10-25 15:20 马大哈哈 阅读(3788) 评论(0) 推荐(0) 编辑

2018年10月19日

ios 视频流H264硬编码---分解LFLiveKit

摘要: 请先参考一些概念的解读:https://www.cnblogs.com/madaha/p/9713170.html#import "LFHardwareVideoEncoder.h" #import @interface LFHardwareVideoEncoder (){ VTCompressionSessionRef compressionSession; // 编码器 ... 阅读全文

posted @ 2018-10-19 15:25 马大哈哈 阅读(1016) 评论(0) 推荐(0) 编辑

2018年10月18日

ios 实时影像回调---分解LFLiveKit

摘要: - (void)reloadFilter{ /* 移除所有的下一级滤镜对象 */ [self.filter removeAllTargets]; [self.blendFilter removeAllTargets]; [self.uiElementInput removeAllTargets]; [self.videoCamera remove... 阅读全文

posted @ 2018-10-18 15:15 马大哈哈 阅读(658) 评论(0) 推荐(0) 编辑

2018年10月15日

ios 内联函数 inline ---分解LFLiveKit

摘要: 参考: https://www.jianshu.com/p/d557b0831c6a https://www.cnblogs.com/iosshare/archive/2016/05/11/5483330.html 阅读全文

posted @ 2018-10-15 11:03 马大哈哈 阅读(430) 评论(0) 推荐(0) 编辑

2018年9月27日

ios 视频知识补充---分解LFLiveKit

摘要: 视频:泛指将一系列的静态影像以电信号的方式捕捉、记录、处理、储存、传送、重现的各种技术。连续的静态图像变化每秒超过24帧(frame)以上时,由于视觉残留,人眼无法识别单独的静态图片,此时看上去就是平滑且连续的效果,这种连续的影像画面可以称之为视频。 帧:视频是由一帧一帧的静态图片连续播放形成的,故 阅读全文

posted @ 2018-09-27 15:07 马大哈哈 阅读(375) 评论(0) 推荐(0) 编辑

2018年9月25日

ios 实时音频AAC格式转码---分解LFLiveKit

摘要: 概念/* AAC - Advanced Audio Coding - 高级音频编码,基于 MPEG-2 的音频编码技术 2000年后,MPEG-4标准发布,为了区别于MPEG-2 AAC 特别加入了SBR技术和PS技术,称之 MPEG-4 AAC (kAudioFormatMPEG4AAC) 特点1: 压缩率提升,以更小的文件获得更高的音质 特点2: 支持多通道 特点3: 更高的解... 阅读全文

posted @ 2018-09-25 17:37 马大哈哈 阅读(2639) 评论(0) 推荐(0) 编辑

2018年9月21日

ios 实时音频流获取---分解LFLiveKit

摘要: AVRecorder: 录制成音频文件,无法直接获取实时音频数据; AudioQueue:可以生成音频文件,可直接实时获取音频数据,数据回调有延迟,根据缓冲区大小延迟在20ms~1s AudioUnit:可以生成音频文件,可直接实时获取音频数据,数据回调较低延迟,基本维持在20ms左右 以上数据延迟 阅读全文

posted @ 2018-09-21 17:42 马大哈哈 阅读(1287) 评论(0) 推荐(0) 编辑

ios hitTest及扩展---分解ZFPlayer

摘要: 核心1. 介绍 - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event point : 在接收器的局部坐标系(界)中指定的点。 event : 系统保证调用此方法的事件。 如果从事件处理代码外部调用此方法,则可以指定nil。 retu 阅读全文

posted @ 2018-09-21 10:22 马大哈哈 阅读(150) 评论(0) 推荐(0) 编辑

2018年9月20日

ios 协议中添加属性---分解ZFPlayer

摘要: 场景分析(不限于此项目与此应用场景): 底层:播放器正在播放并展示当前播放进度03:23 上层:控制&更新播放进度,拖动进度条,结束拖动,需要知道进度更新到具体时间,用于执行seekToTime 拖动结束时知道当前拖动的位移,根据位移与视频总时间的比例计算seekToTime的值(而03:23就可以 阅读全文

posted @ 2018-09-20 15:47 马大哈哈 阅读(1291) 评论(0) 推荐(0) 编辑

ios 手势交互控制---分解ZFPlayer

摘要: 核心1. 多种手势嵌套 单击:UITapGestureRecognizer *singleTap; // 一般处理 播放控制页面显示/隐藏 双击:UITapGestureRecognizer *doubleTap; // 一般处理 暂停/播放 滑动:UIPanGestureRecognizer *p 阅读全文

posted @ 2018-09-20 11:20 马大哈哈 阅读(1125) 评论(0) 推荐(0) 编辑

2018年9月18日

ios 按位运算---分解ZFPlayer

摘要: 按位与&(位运算时,相同为1,不同为0) 按位或 |(位运算时,有1为1,全0为0) 按位异或 ^(位运算时,相同为0,不同为1) 按位取反~(0变1,1变0) 左移《 把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方 右移》 把整数a的各二进位全部右移n位,保持符 阅读全文

posted @ 2018-09-18 21:02 马大哈哈 阅读(719) 评论(0) 推荐(0) 编辑

ios 网络视频播放---分解ZFPlayer

摘要: 核心1. AVPlayerLayer 用于显示视频 核心2. 监听播放相关属性 A. status: AVPlayerStatusReadyToPlay 视频就可以播放了 AVPlayerStatusFailed 视频加载失败,这时可以通过self.player.error.description属 阅读全文

posted @ 2018-09-18 20:33 马大哈哈 阅读(2287) 评论(0) 推荐(0) 编辑

2018年9月17日

ios 视频旋转---分解ZFPlayer

摘要: 1.先看一下图层 下:VC.view 中:containerView 上:playerView(button为subview,用于触发旋转操作) 2.真相探究 核心1. rect转换 [superView convertRect:superView.bounds toView:self.fullSc 阅读全文

posted @ 2018-09-17 20:54 马大哈哈 阅读(1125) 评论(1) 推荐(0) 编辑

2018年9月1日

IOS lame库 pcm转mp3 分析(方案二)

摘要: 方案二:使用AudioQueues获取实时PCM音频流数据,调用lame转码,写入mp3文件 1.规定录制音频流相关参数 AudioStreamBasicDescription _format; // 录制音频数据格式 _format.mFormatID = kAudioFormatLinearPC 阅读全文

posted @ 2018-09-01 15:34 马大哈哈 阅读(585) 评论(0) 推荐(0) 编辑

IOS lame库 pcm转mp3 分析(方案一)

摘要: 方案一:使用 AVAudioRecorder 录制pcm数据格式文件,然后启动子线程循环遍历文件,读取pcm数据转码mp3并写入mp3文件(目前网上资料大多是这样) 1.lame初始化 & 打开pcm、mp3文件 获取文件指针 单通道无需设置lame_set_model,因为api已经说明 defa 阅读全文

posted @ 2018-09-01 15:30 马大哈哈 阅读(662) 评论(0) 推荐(0) 编辑

2018年8月19日

ios 动态库合成包(真机&模拟器)脚本

摘要: # Sets the target folders and the final framework product. # 设置目标文件夹和动态库 FMK_NAME=${PROJECT_NAME} # Install dir will be the final output to the framew 阅读全文

posted @ 2018-08-19 14:22 马大哈哈 阅读(438) 评论(0) 推荐(0) 编辑

2018年7月27日

lame 制作ios静态库

摘要: 1.桌面创建lame文件夹 2.lame官方网站下载最新版本 http://lame.sourceforge.net/, 下载到桌面上的lame文件夹,并解压。 3.下载 build-lame.sh 文件同样放到桌面上lame文件夹(shell脚本制作静态库) https://github.com/ 阅读全文

posted @ 2018-07-27 21:06 马大哈哈 阅读(685) 评论(0) 推荐(0) 编辑

2017年10月16日

原生工程嵌入ReactNative

摘要: 阅读全文

posted @ 2017-10-16 20:07 马大哈哈 阅读(238) 评论(0) 推荐(0) 编辑

2017年9月26日

React Native scrollview 循环播放

摘要:  react-native-swiper 解析 1.传递组件给swiper,作为swiper组件的children,2.假如 有 4 张图片需要循环播放,那么传给swiper 4个 <Image /> (1、2、3、4) 事实上swiper组件内会对其进行一次编辑 : 4、1、2、3、4、13.依 阅读全文

posted @ 2017-09-26 19:50 马大哈哈 阅读(2282) 评论(0) 推荐(0) 编辑

2017年9月23日

React Native Image多种加载图片方式

摘要: React-Native Image加载图片方式解析 1.加载当前工程文件夹下图片 <Image style={styles.image} source={require('./TT2.jpg')} /> 2.加载当前应用沙盒文件内图片 分析: 假定图片存储在document文件夹下(documen 阅读全文

posted @ 2017-09-23 11:19 马大哈哈 阅读(5637) 评论(0) 推荐(1) 编辑

2016年12月22日

汉字转拼音(包含多音字)

摘要: 参考:http://blog.csdn.net/toothless_zhou/article/details/49819201 阅读全文

posted @ 2016-12-22 20:41 马大哈哈 阅读(941) 评论(0) 推荐(0) 编辑

2016年10月13日

React Native Alert、ActionSheet

摘要: /** * Created by apple on 2016/10/12. *//** Sample React Native App * https://github.com/facebook/react-native * @flow */"use strict"import React, {Component} from 'react'import { AppRegistry... 阅读全文

posted @ 2016-10-13 10:22 马大哈哈 阅读(1341) 评论(0) 推荐(0) 编辑

2016年10月12日

React Native Picker (城市选择器)

摘要: ****************************** 知识点 ****************************** 1.读取本地json、json解析 ****************************** 效果图 ****************************** 阅读全文

posted @ 2016-10-12 17:00 马大哈哈 阅读(8978) 评论(3) 推荐(1) 编辑

React Native Picker (多列数据)

摘要: /** Sample React Native App * https://github.com/facebook/react-native * @flow */"use strict"import React, {Component} from 'react'import { AppRegistry, View, Text, Picker, StyleS... 阅读全文

posted @ 2016-10-12 11:38 马大哈哈 阅读(761) 评论(0) 推荐(0) 编辑

2016年10月11日

React Native Picker (逐个添加数据、array循环添加数据)

摘要: /** Sample React Native App * https://github.com/facebook/react-native * @flow */"use strict"import React, {Component} from 'react'import { AppRegistry, View, Text, Picker, StyleS... 阅读全文

posted @ 2016-10-11 11:23 马大哈哈 阅读(1077) 评论(0) 推荐(0) 编辑

2016年10月10日

React Native DatePickerIOS (防止滑动后恢复到当前时间)

摘要: "use strict"import React, {Component} from 'react'import { AppRegistry, View, Text, DatePickerIOS, StyleSheet} from 'react-native' let minDate = new D 阅读全文

posted @ 2016-10-10 17:30 马大哈哈 阅读(415) 评论(0) 推荐(0) 编辑

导航