Author: admin

iOS音乐播放器

http://www.code4app.com/plugin.php?id=threed_pan:downld&url=MHxodHRwczovL3Bhbi5iYWlkdS5jb20vcy8xUkpNamp6SXpkS09yN3Vhb3pDTXJPQQ==&tid=30309&name=vdcf&formhash=a8a7aae7   项目介绍: 1.当前播放的歌曲为高亮状态 2.自动播放下一首 3.播放详情页可以上一首下一首单曲循环 4.支持锁屏播放、锁屏支持上一首下一首 暂停播放 5.锁屏状态和未锁屏歌曲播放同步

Continue reading iOS音乐播放器

機器學習

# coding: utf-8 # In[30]: import numpy as np def sigmoid(x,deriv = False): if (deriv == True): return x*(1-x) return 1/(1+np.exp(-x)) # In[31]: x = np.array([[0,0,1], [0,1,1], [1,0,0], [1,1,1], [0,0,1]] ) print (x.shape) # In[32]: y= np.array([[0], [1], [1], [0], [0]] ) print (y.shape) # In[33]: np.random.seed(1) # In[34]: w0 = 2*np.random.random((3,4)) w1 = 2*np.random.random((4,1))…

Continue reading 機器學習

【如何快速的开发一个完整的iOS直播app】(美颜篇)

【如何快速的开发一个完整的iOS直播app】(美颜篇) 袁峥 关注 2016.09.25 17:58* 字数 1391 阅读 22154评论 38喜欢 230赞赏 2 前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲解直播中美颜功能的实现原理,并且实现美颜功能。 如果喜欢我的文章,可以关注我微博:袁峥Seemygo 利用GPUImage处理直播过程中美颜的流程 采集视频 => 获取每一帧图片 => 滤镜处理 => GPUImageView展示 美颜原理.png 美颜基本概念 GPU:(Graphic Processor Unit图形处理单元)手机或者电脑用于图像处理和渲染的硬件 GPU工作原理:采集数据-> 存入主内存(RAM) -> CPU(计算处理) -> 存入显存(VRAM) -> GPU(完成图像渲染) -> 帧缓冲区 -> 显示器 GPU工作原理.jpg OpenGL ES:(Open Graphics Library For Embedded(嵌入的) Systems 开源嵌入式系统图形处理框架),一套图形与硬件接口,用于把处理好的图片显示到屏幕上。 GPUImage:是一个基于OpenGL ES 2.0图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜,内置120多种滤镜效果,并且能够自定义图像滤镜。 滤镜处理的原理:就是把静态图片或者视频的每一帧进行图形变换再显示出来。它的本质就是像素点的坐标和颜色变化 GPUImage处理画面原理 GPUImage采用链式方式来处理画面,通过addTarget:方法为链条添加每个环节的对象,处理完一个target,就会把上一个环节处理好的图像数据传递下一个target去处理,称为GPUImage处理链。 比如:墨镜原理,从外界传来光线,会经过墨镜过滤,在传给我们的眼睛,就能感受到大白天也是乌黑一片,哈哈。 一般的target可分为两类 中间环节的target,…

Continue reading 【如何快速的开发一个完整的iOS直播app】(美颜篇)

【如何快速的开发一个完整的iOS直播app】(采集篇)

【如何快速的开发一个完整的iOS直播app】(采集篇) 袁峥 关注 2016.09.07 20:25* 字数 1425 阅读 24496评论 79喜欢 213赞赏 1 前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采集主播的视频和音频,当前可以切换前置后置摄像头和焦点光标,但是美颜功能还没做,可以看见素颜的你,后续还会有直播的其他功能文章陆续发布。 如果喜欢我的文章,可以关注我微博:袁峥Seemygo 效果 为了采集效果图,我也是豁出去了,请忽略人物,关注技术。 忽略本人.png 基本知识介绍 AVFoundation: 音视频数据采集需要用AVFoundation框架. AVCaptureDevice:硬件设备,包括麦克风、摄像头,通过该对象可以设置物理设备的一些属性(例如相机聚焦、白平衡等) AVCaptureDeviceInput:硬件输入对象,可以根据AVCaptureDevice创建对应的AVCaptureDeviceInput对象,用于管理硬件输入数据。 AVCaptureOutput:硬件输出对象,用于接收各类输出数据,通常使用对应的子类AVCaptureAudioDataOutput(声音数据输出对象)、AVCaptureVideoDataOutput(视频数据输出对象) AVCaptionConnection:当把一个输入和输出添加到AVCaptureSession之后,AVCaptureSession就会在输入、输出设备之间建立连接,而且通过AVCaptureOutput可以获取这个连接对象。 AVCaptureVideoPreviewLayer:相机拍摄预览图层,能实时查看拍照或视频录制效果,创建该对象需要指定对应的AVCaptureSession对象,因为AVCaptureSession包含视频输入数据,有视频数据才能展示。 AVCaptureSession: 协调输入与输出之间传输数据 系统作用:可以操作硬件设备 工作原理:让App与系统之间产生一个捕获会话,相当于App与硬件设备有联系了, 我们只需要把硬件输入对象和输出对象添加到会话中,会话就会自动把硬件输入对象和输出产生连接,这样硬件输入与输出设备就能传输音视频数据。 现实生活场景:租客(输入钱),中介(会话),房东(输出房),租客和房东都在中介登记,中介就会让租客与房东之间产生联系,以后租客就能直接和房东联系了。 捕获音视频步骤:官方文档 1.创建AVCaptureSession对象 2.获取AVCaptureDevicel录像设备(摄像头),录音设备(麦克风),注意不具备输入数据功能,只是用来调节硬件设备的配置。 3.根据音频/视频硬件设备(AVCaptureDevice)创建音频/视频硬件输入数据对象(AVCaptureDeviceInput),专门管理数据输入。 4.创建视频输出数据管理对象(AVCaptureVideoDataOutput),并且设置样品缓存代理(setSampleBufferDelegate)就可以通过它拿到采集到的视频数据 5.创建音频输出数据管理对象(AVCaptureAudioDataOutput),并且设置样品缓存代理(setSampleBufferDelegate)就可以通过它拿到采集到的音频数据 6.将数据输入对象AVCaptureDeviceInput、数据输出对象AVCaptureOutput添加到媒体会话管理对象AVCaptureSession中,就会自动让音频输入与输出和视频输入与输出产生连接. 7.创建视频预览图层AVCaptureVideoPreviewLayer并指定媒体会话,添加图层到显示容器layer中 8.启动AVCaptureSession,只有开启,才会开始输入到输出数据流传输。 // 捕获音视频 – (void)setupCaputureVideo { // 1.创建捕获会话,必须要强引用,否则会被释放 AVCaptureSession *captureSession = [[AVCaptureSession alloc] init]; _captureSession = captureSession; //…

Continue reading 【如何快速的开发一个完整的iOS直播app】(采集篇)

【如何快速的开发一个完整的iOS直播app】(播放篇)

【如何快速的开发一个完整的iOS直播app】(播放篇) 袁峥 关注 2016.08.30 19:50* 字数 2369 阅读 57257评论 176喜欢 447赞赏 2 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦 本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成【ijkplayer】遇见的各种坑。 很多文章,可能讲解的是如何做,我比较注重讲解为什么这样做,大家有什么不明白,还可以多多提出来。 如果喜欢我的文章,可以关注我微博:袁峥Seemygo 效果 直播.gif 一、基本知识 README.md文件:框架的描述文件,描述这个框架怎么使用 编译语言:程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要翻译,所以编译型语言的程序执行效率高,比如OC,C,C++ 解释性语言:解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低 解释性语言执行和编译语言执行的区别: 解释性语言一行一行的解析,如果有错误,就不会执行,直接执行下一行。 编译语言,只要有错,就不能编译,一行都不能执行。 脚本语言:属于解析语言,必须通过解释器解析,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。 python:脚本语言,适合网络应用程序的开发,有利于开发效率,现在显得越来越强大 PHP:服务器端脚本语言,适合做动态网站 JS:作为客户端的脚本语言,在浏览中解释执行, shell:操作系统脚本语言,一般指Unix/Linux中使用的命令行 编译语言,执行文件是二进制。脚本语言是解释执行的,执行文件是文本 shell解释器:shell是一个命令行解释器,相当于windows的cmd,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户. 默认Unix都有shell,OS基于Unix,因此OS自带shell。 bash: bash是一种shell解释器版本,shell有很多种版本,就像人,也分不同国家的人。 牛程序员看到不爽的Shell解释器,就会自己重新写一套,慢慢形成了一些标准,常用的Shell解释器有这么几种,sh、bash、csh等 shell:通常我们说的shell,指的是shell脚本语言,而不是shell解释器。 在编写shell时,第一行一定要指明系统需要哪种shell解释器解释你的shell脚本,如:#! /bin/bash,使用bash解析脚本语言 什么时候使用shell命令,比如有些系统命令经常需要用到,可以把命令封装到一个脚本文件,以后就不用再敲一遍了,直接执行脚本语言。 比如ijkplayer,就用脚本文件下载ffmpeg,因为下载ffmpeg需要执行很多命令,全部封装到脚本文件中。 在导入一些第三方框架的时候,经常需要用到一些命令,所以一般都会封装到一个脚本文件中,以后只要执行脚本,就会自动执行集成第三方框架的命令。 sh:sheel脚本文件后缀名 二、下载ijkPlayer 去到B站得github主页,找到ijkplayer项目,下载源码 ijkplayer下载地址 打开Demo,查看用法,一般学习第三方库,都是先查看Demo Snip20160825_4.png 三、编译ijkPlayer的步骤 1、找到ijkPlayerMediaDemo并运行 提示’libavformat/avformat.h’ file not found bug1.png 原因:因为libavformat是ffmpeg中的库,而ijkplayer是基于ffmpeg这个库的,因此需要导入ffmpeg 解决:查看ijkplayer的README.md,一般都会有说明。…

Continue reading 【如何快速的开发一个完整的iOS直播app】(播放篇)