自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (12)
  • 收藏
  • 关注

原创 C++语法课入门 慕课网笔记

https://www.imooc.com/u/1349694/courses?sort=publishC++远征之模板篇C++远征之多态篇C++远征之多态篇C++远征之继承篇C++远征之封装篇(上)C++远征之封装篇(上)C++远征之离港篇C++远征之起航篇C++应用:嵌入式 游戏 网络 系统特点:快 节省资源与C的关系范围:c是++的子集特性:c面向过程 C++ 面向对象、面向过程IDE:Xcode数据类型C的类型基本类型整型 int字符型 char浮点型

2020-10-28 10:56:30 498

原创 ios mp4v2写h264+aac音视频流转mp4

https://github.com/XMSECODE/ESCMp4v2Demo参考这篇代码 可以完成 h264 文件和 aac文件的写入https://github.com/XMSECODE/ESCAACCoderDemo参考这篇代码 可以完成PCM数据流转换为aac的文件注意每次转换的pcm数据位2048大小https://blog.csdn.net/haoyitech/articl...

2020-01-15 13:39:32 935

原创 mac编译android平台ffmpeg4.2.1带openssl(arm armv7 arm64 )

4.2.1版本较为难编译其中关键是arm amrv7 和arm64应该分开编译编译流程如下openssl文件请看上篇文章1.下载ffmpeg gzip文件:http://www.ffmpeg.org/download.html#releases2.解压gzip文件夹得到ffmpeg-4.2.1文件夹用于arm和armv7的编译。再解压一次gzip文件夹得到arm64-ffmpeg-4....

2019-11-07 10:32:17 1070 5

原创 mac编译android环境openssl最新版本

参考文章1:https://blog.csdn.net/zoujin6649/article/details/89891720参考文章2:https://blog.csdn.net/zoujin6649/article/details/899491761.创建一个并进入编译目录touch opensslbuildcd opensslbuild2.下载openssl源码、解压源码(ht...

2019-11-04 16:42:48 1315 4

原创 ios ffmpeg 升级到最新版本

1.下载最新版ffmpeg2.解压缩3.找到ios编译脚本build-ffmpeg.sh 放到同级目录修改脚本,把版本号改成4.2.1#!/bin/sh# directoriesFF_VERSION="4.2.1"if [[ $FFMPEG_VERSION != "" ]]; then FF_VERSION=$FFMPEG_VERSIONfiSOURCE="ffmpe...

2019-10-10 14:45:32 1134

原创 MP4V2排错

使用mp4v2对H264 和aac进行转换成为mp4录像的文件,在安卓的系统播放器出现大概率的无法播放的现象。而在ios系统相册可以播放经过大面积排查 发现h264在写入 特殊的I帧 (sps+pps+I)帧,sps的内容帧会被(c语言函数 用于解析sps的)改写二进制的内容,导致写入mp4v2的sps信息被修改而sps信息是视频分辨率的信息来源,一旦被改写,对于检验严格的播放器,会被拒绝播放...

2019-10-08 13:41:56 303 3

原创 ios openAL 棘手问题解决alBufferData返回AL_INVALID_VALUE

参考文章经过多轮测试,发现iphone的sourceid最多支持创建32个一旦发现超过32个,大概率无法再次创建了,解决方案可以按照上面的参考,如果你不需要同时播放两种以上的声音,可以选择sourceID写成静态全局变量保证整个项目 只调用一次 alGenSources(1, &sourceID);之后都一直使用这个变量作为opeanl的souceid 就可以了...

2019-09-23 11:36:37 579

原创 IOS/Android 跨平台使用OpenGLES 渲染YUV420P调用

总结:安卓4步iOS5步opengl6步

2019-07-03 16:39:20 648

原创 openGLES 步骤图

2019-07-02 09:44:10 446

原创 IPC 直播app流程图 与FFMPEG解码流程图

2019-07-01 14:42:29 527

原创 安卓ios文件读写的存放

1.从bundle中读取文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"outfile.pcm" ofType:nil];2.使用沙盒路径做存储数据 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserD...

2019-06-28 18:25:06 219

原创 iOS (socket+H264+videoToolbox)回放视频内存增长与播放速度控制

iOS (socket+H264+videoToolbox)视频内存增长与播放速度控制录像是存储在某台服务器里面的,服务端一般看客户端要多少数据 ,就会开个while循环,一次读取多少字节的数据。然后几乎没有时间间隔的把数据送出去。这时候在播放端就需要做好播放速度的控制,因为接收速度完全取决于网速,如果没有做这段,那么视频的播放速度就和网速一样,网速快的时候 ,视频呈现快进的效果。网速慢的时候会...

2019-06-15 12:00:06 1132 2

原创 ffmpeg mac下命令

查看设备源ffmpeg -f avfoundation -list_devices true -i ""显示 0 就是录屏源[AVFoundation input device @ 0x7fc6dde00580] AVFoundation video devices:[AVFoundation input device @ 0x7fc6dde00580] [0] Capture scre...

2019-05-13 15:43:25 975

原创 ios .静态库中(unrecognized selector sent to instance)包含了Category(分类

ios .静态库中包含了Category(分类如果静态库中包含了Category,有时候在使用静态库的工程中会报“方法找不到”的错误(unrecognized selector sent to instance)解决方案:在使用静态库的工程中配置Other Linker Flags为-ObjC注意 注意 不是在静态库里面改,是哪个项目用 哪个改...

2019-04-25 14:10:42 711

原创 ios视频传输udp方案分析

基于iOS的网络音视频实时传输系统(H264+pcm+videoToolbox)无第三方实现这篇文章中,视频的传输采用的是tcp 的方案来实现的那么为什么不用udp来实现呢?实际上,一开始采用的udp的方案,但实际在传输的过程中出现了大量的丢包现象,还有乱序的可能性丢包会导致花屏,乱序会导致视频抖动。采用tcp 的好处是tcp不会丢包和乱序,但需要牺牲一定的网络延时。和包大小的不定长度...

2019-04-12 15:12:09 792 7

原创 基于iOS的网络音视频实时传输系统(H264+pcm+videoToolbox)无第三方实现

基于iOS的网络音视频实时传输系统(H264+pcm+videoToolbox)无第三方实现

2019-04-10 19:56:35 1440 6

原创 ios 播放ts流视频思路

我们知道FFmpeg能够处理本地文件或者网络文件只要传入url给avformat_open_input函数就可以了实际上对于音视频的处理中,很少会给一个完整有效的网址很多时候都是传递流信息过来比如h264 和aac的裸流,这些流只需要调用ffmpeg 的解码函数即可。但对于封装格式来说,如何把数据传递给ffmpeg就成了一个很大的问题我参考雷晓华的内存读取,知道了ffmpeg 提供...

2019-04-03 17:42:49 2870 1

原创 ios 录音播放udp数据包传输过来的pcmData流

一般的文章都会写pcm文件的播放以及pcm文件的录音我这里写的是一台手机录音把采集到的pcm数据通过socket 发送给服务端另外一台手机作为服务端把从socket端接收到的pcm数据通过麦克风播放出来就搞定。https://www.jianshu.com/p/5f0b807e5a73这篇文章写了udp的通讯然后我自己添加了录音的部分使用了AudioUnit 这种方案可以做到...

2019-03-08 16:56:25 879 6

原创 opengl示例一

绘制一个颜色绘制正确会显示为红色#import "ViewController.h"#import <GLKit/GLKit.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; GLKView...

2018-12-12 14:46:28 800

原创 在Mac中编译Android平台的FFmpeg( arm和x86 )

看了一下网络上的文章大多都是在windows环境下编译android的ffmpeg的我跟着操作了一遍,发现windows下编译ffmpeg其实就是安装了Ubuntu的linux的虚拟机然后把资源放到虚拟机上进行编译最后把编译好的so库再拷贝回到windows环境下使用这里我就总结一下mac电脑编译ffmpeg的过程,最大的好处是不需要装Ubuntu的虚拟机器 和把文件拷贝来拷贝去1、...

2018-11-06 13:48:17 1993

原创 ios pthead 线程mutex锁 cond条件锁 一个例子就解决

我们在ios的线程使用中很少会使用pthread 的线程因为苹果封装了更加高阶的nsthread opeationqueue还有GCD但pthread 由他独特的跨平台性和简单的api调用而突出ios平台的相关博客很少会讲到pthread 的用法这里用一个简单的例子,来将c 的线程线程锁,条件锁一次性讲清楚题目很简单,就是一个工厂的生产者在生产苹果一个消费者在一直消费苹果,就...

2018-11-05 10:53:19 312

原创 ios 下使用curl openssl 下载http或者https文件

为了保证移动端兼容性的使用不能使用ios的urlsession可以使用C语言的curl库来实现下载操作curl在ios环境下的编译因为之前编译过openssl 就直接拿过来用了openssl 是为了增加https支持来使用的编译通过后使用就非常简单了使用代码//// ViewController.m// libcurlHTTPS//// Created by kai_...

2018-10-30 12:01:56 3877 4

原创 ios urlsession 不用afn 同时下载多个文件缓存到本地

需求是因为ffmpeg 在加载ts数据流的过程中如果是频繁变换的网络流,比如3s一段的视频对微软云的兼容性不好。因为ffmpeg的请求是边下边播 对于不会变换url的网络请求来说可以接受,但对于频繁变换的短时间url,又不是一次性下载下来的,所以需要增加本地缓存策略把所有的视频都下载到本地,然后再做播放策略。1.写出urlsession 下载一个的接口然后写一个for循环让多个下载...

2018-10-23 11:36:21 1272 1

原创 iOS开发 引用第三方库出现duplicate symbol时的处理方法

使用ios 第三方有个不可避免的问题就是某些静态库 使用了afn mbhud 等流行库而公司的项目也用了这些库如果把静态库直接导入,在编译的时候会报错duplicate symbol代表 项目中有两份 了 ,重复导入了这种时候该怎么办呢,看到一篇文章说可以裁剪第三方库文章讲的比较细致,就是裁剪过于繁琐了,在验证了这种方案的可行性之后,我将这段繁琐的内容作了简单的shell脚本化,便...

2018-09-27 15:05:03 811

原创 ios 实时监控每秒请求的网络数据

1.App类的只能取判接收数据2.App外的可以监控网卡因为比较简单就直接贴代码出来使用方法#import "ViewController.h"#import "NSObject+CheckNetWorkBytes.h"@interface ViewController ()@end@implementation ViewController- (void)vi

2018-09-21 17:54:46 4006

原创 ios 命令行打印日志分享

一个app 在未正式发布之前 会有很多问题如果是崩溃问题,则有线上的bugly来查看崩了日志只要集成了bugly 就可以查看日志了但这样存在弊端,一是网络不好的时候 日志没有记录到二是很多时候日志只有崩溃的这一个时刻,没有上下文环境,如果不是一般性错误,很难知道其具体原因而我们在开发的过程中,能够时时刻刻看到打印的消息同时还支持断点的调试功能,因此排错非常快我希望将类似的东西增加到...

2018-09-20 10:12:24 454

原创 ffmpeg ts 网址下载时间过久的问题

ffmpeg 请求ts片段 某些云服务标准请求耗时非常久比如微软云尝试了网上很多方案都不成功偶然看到这篇文章说的是ts为什么需要耗时这么久是因为ts没有时间长度信息,需要反复请求拿到最后一段数据拿到这段数据以后解析出时间戳,来和第一段时间做对比以此来获得时间信息对于m3u8类型的流 ts 片段都是3秒一段的无疑增加了很多网络请求因此去查询源码 修改一处细节保证其不再取得时间...

2018-09-18 18:17:22 4195

原创 iOS 远程登录自动化打包

网上到处都是ios 本地自动化打包的内容但这种方案的弊端是必须在某台固定的电脑上才能实现实际在与h5 的混合开发的过程中经常遇到的打包需求是h5 打包后发给iOS 原生发了消息之后再让ios去打包上架ios 原生端不得不长久的等待h5的结果所以把打包的工作交给h5端变得很重要这里我没用使用jenkins方案,之前我试过这个方案 权限太多了 没成功我们知道有种远程登录ssh ...

2018-09-18 17:58:31 787

原创 私有组件pod 添加支持断点调试的静态库

我们在给外部提供的sdk 通常使用静态库而不暴露内部代码而我们自己在项目中测试的时候,都是将静态库的头文件链接到对应的静态库的.h文件中一般来讲都是一个workspace 然后添加静态库的工程 添加.a库路径 添加头文件路径,再运行就可以将断点打到静态库的project 里面去。而在组件化的工程的pod库中,怎么把断点也能打到对应的project 里面去呢。方式...

2018-08-27 18:05:25 1928

原创 ios平台FFMPEG ts视频文件转码mp4

参考文章1. 最简单的基于的FFmpeg的的封装格式处理:视音频分离器(分路器)2. 最简单的基于FFmpeg的的封装格式处理:视音频复用器(复用器)视音频分离器讲解的是将ts本地文件转换为h264 + aac的过程视音频复用器讲解的是将h264 + aac封装为mp4文件的过程...

2018-08-07 14:55:42 3009 3

原创 ios opengl 渲染yuv 模糊问题

是因为苹果是高分辨率屏幕 需要设置 scale 系数 GLsizei _viewScale; self.contentScaleFactor = [UIScreen mainScreen].scale; _viewScale = [UIScreen mainScreen].scale; CGSize size =...

2018-07-24 11:43:13 1214

原创 Mac nginx ios 推流 rtmp vlc播放 html5播放

这是手机端的推流 后 左边是苹果自带浏览器的播放, 右边是使用vlc 播放的hls 的存储路径说一下整个的实现理论联系实际:实现一个简单地基于HTML5的实时视频直播文章最大的贡献是提供了ios 端的推流代码可以直接运行 ,但文章对ngnix 搭建 hls 播放的相关细节并没有讲所以需要nginx 打搭建相关博客,注意要具有rtmp 功能的 可以搜索...

2018-07-12 14:57:31 1191

原创 ios 编译ffmpeg 支持 x264 fdk-aac openssl 并裁剪库大小

1.音视频开发需要引入x264 和fdk-aac的 库 参考本篇文章进行 ffmpeg 的ios 环境下的编译 我在编译的过程中,遇到了自己打的fdk-aac编译不过的情况, 最后下载了这篇文章的源码,把他的fdk-aac 抠出来,然后 放在自己的ffmpeg脚本同级目录下,就生成.a通过了。2.新建一个xcode 项目使用ffmpeg, 参考了这篇文章的最后一张图片进行修改head...

2018-06-18 23:58:07 1775 3

原创 ios 几十行代码完成原生播放器UIView嵌入WKWebView层级

混合开发已经非常流行了。但是原生的直播播放器涉及到编解码的过程,如果项目是以webview为主的 ,那么原生的播放器只能浮动在webview的上面 会遮挡住导航条和 一些webview的按钮,这样底下的东西都操作不到了。解决方案 1.把播放器放在webview的下面,让webview透明过去,实践显示无法穿透 多层push过后的webview 2.h5 播放H264 ,目前据说效果不好...

2018-04-20 17:50:13 2930

原创 React基础的学习

webpack的使用,请见上一篇,webpack的源码记得下载。二.webpack配置完成以后就可以开始反应的语法学习1.react的语法 就在这套源码里面编写官方的文档2.遇到语言不通的问题,只需要用谷歌浏览器打开,然后用谷歌翻译的插件看即可。...

2018-03-20 16:30:36 149

原创 关于入门Webpack的文章理解

官方给出的react脚手架是不容易进行修改的而在我们开展一个项目中 需要做的是自己搭建所有需要的组件因此需要掌握搭建脚手架的工具webpack 的过程而目前最为完整的文档是简书上面的这篇文章然而webpack 以及相关的插件是处于不断发展的状态的。如果按照文章一步一步的做 肯定会有卡在某处过不去。因为webpack的插件以及相关版本的兼容性造成的不同步。目前我就遇到了w...

2018-03-19 09:11:07 182

原创 React Router学习

2018.3.22更新分割线之后的内容已经不适用了因为router 已经有了最新版本4.x2.react-router 学习的教程是2.x版本的 在4.0以上直接用不了了。为了让你们不要重复我的坑,建议看官方文档 (不要从快速开始开始看,要按照顺序来做)把之前学习到的基础语法 改造成一个一个的路由,点击了以后就显示出来内容。2.1.如果遇到了react-router 无法传递p...

2018-03-12 18:04:00 133

原创 IOS 搭建React.js环境并运行

如果我们要在IOS项目中加载一个本地的网页,就需要把网页写到本地的工程下面,然后引入到IOS工程中,当加载网页流量的时候选择加载本地的路径就好了。项目就会去读取本地的HTML文件并用WebView去显示了。这个就是HTML的在IOS中的显示。那么React又是什么,做了哪些工作呢?React就是一种编写HTML的方式,比如你在某个文件夹下面写了网页。并且加入了Rea...

2018-03-12 14:41:16 1651

原创 ios 通过两个数组抽取一个有效数组的算法

通常来讲 两个数组 中找出一个有效的数组就是两个for循环 外层循环i 内存循环 j 就可以把有效数据取出来了。但是呢 我们公司的数据 有时候第一个数组就几千个 第二个数组也几千个 比如1000 *1000 就10 的6次方的计算次数了。直接让计算机算 会非常耗时。需求是: 我们的第一个数组 是由许多个 3秒一段的视频组成的 第二个数组是一个一个的时间节点,...

2018-02-27 14:48:40 419

原创 ios lldb 的小技巧

如果你想在调试的时候改变一个已有的值,那么你可以使用expression指令,也可以简写为e(lldb) e ((UIButton *)self.cellMotionBtn).backgroundColor = [UIColor redColor](UICachedDeviceRGBColor *) $0 = 0x00000001c147e300(lldb) e (void)[CATra...

2018-02-27 11:35:45 512

iOS (socket+H264+videoToolbox)视频内存增长与播放速度控制

通过对视频流的内存预分配,避免数据传输的多次创建和free操作,从而避免内存的无限攀升问题 参见 https://blog.csdn.net/github_35041937/article/details/92075305 文章采用Videotoolbox对H264文件进行硬解码,同时保持播放速度为40毫秒数值。

2019-06-15

基于iOS的网络音视频实时传输系统(H264+pcm+videoToolbox)无第三方实现

基于iOS的网络音视频实时传输系统(H264+pcm+videoToolbox)无第三方实现 tcp 局域网 编解码 音视频 https://blog.csdn.net/github_35041937/article/details/89192781

2019-04-11

ios 录音播放udp数据包传输过来的pcmData流

https://blog.csdn.net/github_35041937/article/details/88354621 一般的文章都会写pcm文件的播放 以及pcm文件的录音 我这里写的是一台手机录音 把采集到的pcm数据 通过socket 发送给服务端 另外一台手机作为服务端 把从socket端接收到的pcm数据 通过麦克风播放出来就搞定。 https://www.jianshu.com/p/5f0b807e5a73 这篇文章写了udp的通讯 然后我自己添加了录音的部分 使用了AudioUnit 这种方案可以做到低延时 还添加了AudioQueue的方案进行播放 因为udp的不可靠性 我要防止udp的丢包和粘包 于是加上了 协议头 音频标识 音频长度 拼接在最前面 我没处理粘包改怎么做,建议你们自己加,大概思路就是 把两个包合成一个包来处理即可。 写这篇文章的时候还参考了另外一篇文章的思路 https://www.jianshu.com/p/d903d2c8ffd2 说到了遇到网络卡该怎么处理 一点是要缓冲一段再播放, 另外一点就是加上空的静音包, 来保障音频的连续性。

2019-03-08

在Mac中编译Android平台的FFmpeg( arm和x86 )

mac电脑编译ffmpeg的脚本https://blog.csdn.net/github_35041937/article/details/83754270

2018-11-06

ios pthead 线程mutex锁 cond条件锁 一个例子就解决

ios平台的相关博客 很少会讲到pthread 的用法 这里用一个简单的例子,来将c 的线程 线程锁,条件锁一次性讲清楚 题目很简单,就是一个工厂的生产者在生产苹果 一个消费者在一直消费苹果,就用代码来实现这个过程 https://blog.csdn.net/github_35041937/article/details/83745211

2018-11-05

ios 编译curl openssl 并下载文件

ios 环境 使用curl https 不用iOS原生的网络请求 而用c语言的网络请求来下载文件,下载后保存到沙盒里面

2018-10-30

ios urlsession 同时下载多个文件缓存到本地(非afn)

同时下载6个请求然后缓存到cache文件夹,非afn ,代码量很少,很轻, 使用的是ios的urlsession,用来提升缓存速度,提升响应时间。详情效果请看 https://blog.csdn.net/github_35041937/article/details/83304516

2018-10-23

ios 裁剪第三方库脚本

验证方法是自己做个静态库 ,打一个MBProgressHUD进去 然后在项目中引入这个静态库,尝试在项目中引入MBProgressHUD 造成duplicate symbol 错误,然后运行脚本 裁剪库后修改库名 再次运行,项目能跑通 代表裁剪成功。 这里我只做了裁剪一个import文件 如果需要裁剪多个文件 需要自己动手修改这个脚本。

2018-09-27

ios 实时监控每秒请求的网卡网络数据

1.App类的只能取判接收数据 2.App外的可以监控网卡,注意监控网卡是总流量的消耗 如果不准,看看是不是通知推送 4g流量消耗等等 因为比较简单就直接贴代码出来 本文来自 github_35041937 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/github_35041937/article/details/82805212?utm_source=copy

2018-09-21

ios 日志分享

ios日志分享,将终端打印的全部内容,一丝不苟的分享到微信,qq等地方,便于h5端查看ios原生端的日志,方便崩溃前日志的查看。

2018-09-20

pod 添加支持断点调试的静态库

这里只是一个非常简单的项目,如果你的静态库需要做组件化下的断点调试, 那这就是你要找到的答案。

2018-08-27

ios平台使用ffmpeg 将ts转码MP4

ios平台 最简单的基于FFMPEG ts视频文件转码mp4. 视音频分离器讲解的是将ts本地文件转换为 h264 + aac的过程 视音频复用器讲解的是将h264+aac封装为mp4 文件的过程 相关博客 https://blog.csdn.net/github_35041937/article/details/81481292 已经检验过quicktime 可以播放 ios系统可以播放

2018-08-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除