- 博客(26)
- 收藏
- 关注
原创 IOS 摄像头采集之 AVCaptureDevice 简单使用 (Swift)
一,基础AVFoundation框架中有几个类实现图像捕捉 ,通过这些类可以访问来自相机设备的原始数据并控制它的组件AVCaptureDevice 是相机硬件相关,可以设置硬件属性:曝光,镜头位置,闪光灯,白平衡等AVCaptureSession 管理输入输出的数据流AVCaptureVideoPreviewLayer 是 CALayer 的子类,可用于自动显示相机产生的实时图像二...
2019-06-12 10:48:04
6389
原创 Socket + ProtocolBuffer实现消息通讯(Swift)
最近在学习webRTC里面的Socket机制,回忆一下之前用到的Socket+ProtocolBuffer,这次用Swift实现简单的IM消息通讯。步骤如下:一 依赖库集成依赖库:SwiftSocketprotobuf-swift根据自己的需要创建对应消息格式的的proto文件然后执行命令 生成对应的 swift 文件protoc person.proto --swi...
2019-06-10 12:31:38
1065
原创 AVPlayer 问题记录
1,截图问题:用 copyPixelBufferForItemTime 截图失败处理:需要在player 播放前初始化添加好AVPlayerItemVideoOutput截图代码 CMTime itemTime = self.player.currentItem.currentTime; //没有提前初始化加好 AVPlayerItemVideoOutput 这里的Bu...
2019-05-06 17:06:08
860
原创 SDL (四)SDL YUV播放和PCM播放
SDL 中播YUV和PCM数据的步骤比较简单:1,播放YUV数据//1 打开文件video_file = fopen(path, "r");//2 读取数据video_buff_len = fread(video_buf, 1, yuv_frame_len, video_file)//3 更新纹理SDL_UpdateTexture(texture, NULL, video_pos...
2019-05-05 18:08:12
237
原创 SDL (三) 纹理 渲染 bmp图片
//SDL 图片渲染#include <stdio.h>// #include <stdafx.h>#include <SDL2/SDL.h>// #define IMG_PATH "/Users/bigfish/test/SDL_logo.png"#define IMG_PATH "/Users/bigfish/test/AAC05.bmp"#...
2019-05-05 10:12:49
441
原创 SDL (二)图形绘制 矩形 三角形
一,SDL图形绘制API:点 线 矩形 填充矩形坐标系左上角是(0,0)/** * 点 */extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, int x, int y);/** * 多个...
2019-04-30 16:31:53
2159
原创 SDL (一) Mac 编译SDL库,VSCode调试,Xcode调试
一,下载编译(SDL2 pkg):// 0 下载编译SDL2 [下载最新的SDL2 安装包](https://www.libsdl.org/download-2.0.php) 解压: tar -zvxf SDL2-2.0.9.tar.gz // 1 --prefix=[make install输出目录] ./configure --prefix=/usr/lo...
2019-04-30 14:42:37
2377
原创 Mac下vscode配置FFmpeg调试
最近在用vscode 写FFmpeg相关的代码,如果用命令行运行的话,有时候语法错误报的是段错误(segmentation fault),所以找了一下配置vscode 调试的方法,记录一下:1,装一点小插件:2,按照官方文档新建对应的配置文件:官方文档3,修改tasks.json配置文件:{ "version": "2.0.0", "tasks": [{ "l...
2019-04-29 16:27:25
2692
原创 FFmpeg 'avcodec_copy_context' deprecated (视频裁剪)
在学习一些代码的时候发现有些已经弃用了:记录一下新的写法:1,avcodec_copy_context以前的写法:ret = avcodec_copy_context(outStream->codec, inStream->codec); if (ret < 0) { fprintf(stderr, "Failed to copy contex...
2019-04-24 16:58:12
1053
原创 FFmpeg 编码、解码器列表(IOS)
在做支持硬解码的时候 avcodec_find_decoder_by_name 需要传入解码器的名字,那IOS中硬解码器的名字有哪些呢?这里给出一个查询方法和解码器清单:/*** Find a registered decoder with the specified name.** @param name name of the requested decoder* @return A...
2019-04-19 09:54:40
2879
原创 ffmpeg当前版本mp4容器 支持G711修改
1,编译脚本设置编译参数#支持PCM和G711编解码 --enable-encoder=pcm_alaw --enable-decoder=pcm_alaw#–enable-demuxer=mov 支持mov,mp4,m4a,3gp,3g2,mj2解复用 configure_flags="–enable-cross-compile --disable-debug–disable-progr...
2019-03-21 09:47:09
2742
2
原创 c++工程在 Mac 下编译成.a库调用
最近在IOS开发中有多次要集成c++工程,所以学习了一下怎么在Mac下把C++工程编译成.a库,在IOS中调用。 **clang实现**第一步 准备a 创建一个C++ demo工程b 创建一个头文件#ifndef ZBLIB_ZBHEADER_H#define ZBLIB_ZBHEADER_Hclass CTestLib{public: virtual void...
2019-03-12 16:14:29
2426
1
原创 Mac 交叉编译mqtt openssl pjsip
同事给编译出来的mqtt openssl pjsip一堆,需要交叉编译成一个,简单记录一下流程
2019-03-01 16:44:57
325
原创 OpenSLES播放pcm(Android)
OpenSLES本身可以解码音频、支持录音、音频播放,这里学习一下音频的播放。一,音频播放步骤(1)创建并设置SL引擎(2)创建设置混音器 (多路声音混合)(3)创建设置播放器 (控制播放)(4)设置回调并写入缓冲队列 (存储播放数据)二,初始化引擎#include <SLES/OpenSLES.h>#include <SLES/...
2018-09-27 18:16:11
2543
1
原创 FFmpeg在IOS平台编译使用 (FFmpeg 4.0.2)
强调内容所需要的工具: 1, gas-preprocessor 2, FFmpeg-iOS-build-script 3,yasm :brew install yasm一 gas-preprocessor (下载好后)将gas-preprocessor.pl文件复制粘贴到 /usr/bin/ 目录下 注意添加权限 chmod 777 gas-...
2018-08-25 10:07:24
1371
原创 YouTube直播SDK集成(二)
一,前面已经知道了基础的环境配置,先看登录: (1)首先要导入SDK,然后引入头文件import GoogleSignIn(2)然后触发登录按钮的时候进行是否需要登录的逻辑判断,进行登录 //登录 func googleSignIn(with viewController: UIViewController) { if isGoogleConnected...
2018-08-11 11:25:49
18940
原创 YouTube直播SDK集成(一)
因为工作需要研究YouTube和FaceBook直播推流,因为网上教程太少,整理一下集成的流程。一,相关网站 1,首先要有一个Google的账号2, 启用 YouTube Data API v3 (https://console.developers.google.com) 3,然后到https://console.developers.google.com 创建凭据获...
2018-08-10 16:02:06
11263
4
原创 Mac 下 XCode 配置GTools GLFW GLEW(GLFW3.2.1报错问题解决,编译GLFW3.3版本)
折腾了一天很久 终于搞定了mac 下开发OpenGL 的基础环境配置,记录一下流程:一 参考学习教程: https://learnopengl-cn.github.io/二 配置环境: 前提有安装homebrew (1)安装cmake brew install cmake(2)安装glew glfwbrew install glew brew inst...
2018-08-10 15:13:01
1113
原创 FFmpeg 像素格式转换和尺寸转换
Demo FFmpeg 可以实现像素格式转换和尺寸转换,但是性能开销非常大,对视频帧率影响比较大,实际开发中最好用 Shader来实现,FFmpeg的优势转换接口比较简单。像素格式转换上下文 SwsContext(1)sws_getContext (2)sws_getCachedContext( struct SwsContext *context, int srcW, i...
2018-08-10 15:11:33
4852
原创 FFmpeg 解码性能测试demo( iphone 6s plus 真机测试)
Demo 头文件:#include <sys/time.h>获取当前时间方法//当前时间戳 毫秒级别(一秒解多少帧)long long getNowMs(){ struct timeval tv; gettimeofday(&tv, NULL); long long sec = tv.tv_sec%360000; //秒 只取1...
2018-08-10 15:11:12
1823
原创 FFmpeg 解码 avcodec_find_decoder AVCodecContext
avcodec_find_decoder(1)解码模块第一步:获取解码器 avcodec_find_decoder()FFmpeg的解码器编码器都存在avcodec的结构体中 (2) 解码前保证用到的解码器已经注册好 avcodec_register_all();(过期) (3)通过解封装之后,从avstream里面获取CodecID ,通过CodecID来查找decoder AVC...
2018-08-10 15:10:51
7538
原创 avformat_find_stream_info获取视频流信息
在一些格式信息中可能没有头部信息,比如:FLV 可以用avformat_find_stream_info探测文件信息:编码宽高,但不能获取总时长。 尝试打印视频时长和流信息:可以发现FLV 里面是没有读到的尝试添加 avformat_find_stream_info //获取流信息 读取部分视频做探测 avformat_open_input_result = a...
2018-08-10 15:10:32
4053
原创 AVFormatContext结构体分析&空间关闭清理
Demo AVFormatContext 的成员非常多,接下来说一下常用的部分:一:AVIOContext *pb //IO上下文 自定义格式读/从内存当中读 ,av_read_frame 根据 pb结构体来读二:char filename[1024] 文件路径文件名,断开重连时用到 三:AVStream **streams 数组 unsigned int nb_str...
2018-08-10 15:10:09
1044
原创 FFmpeg IOS 解封装
解封装流程:Demo 引入头文件://核心库-音视频编解码库#import <libavcodec/avcodec.h>//封装格式库#import <libavformat/avformat.h> (1)av_register_all() 注册所有的封装格式、加封装格式;也可以在使用之前单个注册。(新版本该方法弃用了) 在...
2018-08-10 15:09:33
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人