博客园 - tryFighting
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=701471
2020-06-08T10:44:18Z
tryFighting
https://www.cnblogs.com/tryFighting/
feed.cnblogs.com
https://www.cnblogs.com/tryFighting/p/13067619.html
分屏滤镜篇 - tryFighting
分屏滤镜篇 分屏滤镜顶点着色器固定不变 attribute vec4 position;attribute mediump vec4 inputTextureCoordinate; varying mediump vec2 textureCoordinate; void main(){gl_Posi
2020-06-08T10:44:00Z
2020-06-08T10:44:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】分屏滤镜篇 分屏滤镜顶点着色器固定不变 attribute vec4 position;attribute mediump vec4 inputTextureCoordinate; varying mediump vec2 textureCoordinate; void main(){gl_Posi <a href="https://www.cnblogs.com/tryFighting/p/13067619.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/13034419.html
GLSL初探 - tryFighting
GLSL:(着色器语言) .highp:32bit,一般用于顶点坐标.medium:16bit,一般用于纹理坐标.lowp:8bit,一般用于颜色表示 向量 在做数据传递时需要传递多个参数,使用向量是比较好的选择。要将物体坐标和纹理坐标传递到VertexShader中,用的就是向量类型,每个顶点都是
2020-06-02T14:54:00Z
2020-06-02T14:54:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】GLSL:(着色器语言) .highp:32bit,一般用于顶点坐标.medium:16bit,一般用于纹理坐标.lowp:8bit,一般用于颜色表示 向量 在做数据传递时需要传递多个参数,使用向量是比较好的选择。要将物体坐标和纹理坐标传递到VertexShader中,用的就是向量类型,每个顶点都是 <a href="https://www.cnblogs.com/tryFighting/p/13034419.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/13034276.html
视频渲染 - tryFighting
视频渲染 libSDL 1.libSDL,他可以为开发者提供面向libSDL的API编程,libSDL内部会解决多个平台的OpenGL上下文环境以及窗口管理问题,开发者只需要交叉编译到各自的平台上就可以做到只写一份代码即可运行在多个平台。其中FFmpeg中的ffplay这一工具就是基于libSDL进
2020-06-02T14:32:00Z
2020-06-02T14:32:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】视频渲染 libSDL 1.libSDL,他可以为开发者提供面向libSDL的API编程,libSDL内部会解决多个平台的OpenGL上下文环境以及窗口管理问题,开发者只需要交叉编译到各自的平台上就可以做到只写一份代码即可运行在多个平台。其中FFmpeg中的ffplay这一工具就是基于libSDL进 <a href="https://www.cnblogs.com/tryFighting/p/13034276.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/13028261.html
FFmpeg源码结构 - tryFighting
FFmpeg源码结构 libavformat *AVFormatContext是API层直接接触到的结构体,它会进行格式的封装与解封装,它的数据部分由底层提供,底层使用了AVIOContext,这个AVIOContext实际上就是为普通的I/O增加了一层Buffer缓冲区,再往底层就是URLCont
2020-06-01T15:14:00Z
2020-06-01T15:14:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】FFmpeg源码结构 libavformat *AVFormatContext是API层直接接触到的结构体,它会进行格式的封装与解封装,它的数据部分由底层提供,底层使用了AVIOContext,这个AVIOContext实际上就是为普通的I/O增加了一层Buffer缓冲区,再往底层就是URLCont <a href="https://www.cnblogs.com/tryFighting/p/13028261.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/13021854.html
FFmpeg的使用过程(解码) - tryFighting
1.引用头文件 extern "C"的解释,C++支持函数的重载,面向过程的C语言不支持函数重载的。同一个函数在C++中编译后与在C中编译后,在符号表中的签名时不同的,假设针对同一个函数,void decode(float position,float duration);在C语言中编译的签名是_d
2020-05-31T13:58:00Z
2020-05-31T13:58:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】1.引用头文件 extern "C"的解释,C++支持函数的重载,面向过程的C语言不支持函数重载的。同一个函数在C++中编译后与在C中编译后,在符号表中的签名时不同的,假设针对同一个函数,void decode(float position,float duration);在C语言中编译的签名是_d <a href="https://www.cnblogs.com/tryFighting/p/13021854.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12995288.html
音视频同步那些事 - tryFighting
音视频同步 *主要有三种,分别是以音频为主时间轴作为同步源;以视频为主时间轴作为同步源;以外部时钟为主时间轴作为同步源。 以音频作为对齐基准的实现 *播放器接收到的视频帧或者音频帧,内部会有时间戳来标识应该在什么时刻展示,实际的对齐策略:比较视频当前的播放时间和音频的当前播放时间,如果视频播放过快,
2020-05-30T14:15:00Z
2020-05-30T14:15:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】音视频同步 *主要有三种,分别是以音频为主时间轴作为同步源;以视频为主时间轴作为同步源;以外部时钟为主时间轴作为同步源。 以音频作为对齐基准的实现 *播放器接收到的视频帧或者音频帧,内部会有时间戳来标识应该在什么时刻展示,实际的对齐策略:比较视频当前的播放时间和音频的当前播放时间,如果视频播放过快, <a href="https://www.cnblogs.com/tryFighting/p/12995288.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12995273.html
ffprobe,ffplay的用法 - tryFighting
ffprobe的高级用法 查看格式 ffprobe -show_format abc.mp4可以输出格式信息format_name,时间长度duration,文件大小size,比特率bit_rate,流的数目nb_streams等 以Json形式输出具体每一个流最详细的信息 ffprobe -pri
2020-05-30T14:13:00Z
2020-05-30T14:13:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】ffprobe的高级用法 查看格式 ffprobe -show_format abc.mp4可以输出格式信息format_name,时间长度duration,文件大小size,比特率bit_rate,流的数目nb_streams等 以Json形式输出具体每一个流最详细的信息 ffprobe -pri <a href="https://www.cnblogs.com/tryFighting/p/12995273.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12989118.html
FFmpeg常用命令 - tryFighting
FFmpeg 常用命令汇总 录制视频 1.录制屏幕-i 指定从哪儿采集数据,它是一个文件索引号-r 指定帧率ffmpeg -f avfoundation -i 1 -r 30 out.yuv2.播放yuv数据需指定分辨率与像素格式ffplay -s 3360x2100 -pix_fmt uyvy42
2020-05-29T10:47:00Z
2020-05-29T10:47:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】FFmpeg 常用命令汇总 录制视频 1.录制屏幕-i 指定从哪儿采集数据,它是一个文件索引号-r 指定帧率ffmpeg -f avfoundation -i 1 -r 30 out.yuv2.播放yuv数据需指定分辨率与像素格式ffplay -s 3360x2100 -pix_fmt uyvy42 <a href="https://www.cnblogs.com/tryFighting/p/12989118.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12986670.html
FFmpeg编译 - tryFighting
FFmpeg编译 *.默认的编译会生成4个可执行文件和8个静态库 4个可执行文件 *.可执行文件包括转码,推流,Dump媒体文件的ffmpeg,用于播放媒体文件的ffplay,用于获取媒体文件信息的ffprobe,以及作为简单流媒体服务器的ffserver. 8个静态库 1.AVUtil:核心工具类
2020-05-29T03:56:00Z
2020-05-29T03:56:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】FFmpeg编译 *.默认的编译会生成4个可执行文件和8个静态库 4个可执行文件 *.可执行文件包括转码,推流,Dump媒体文件的ffmpeg,用于播放媒体文件的ffplay,用于获取媒体文件信息的ffprobe,以及作为简单流媒体服务器的ffserver. 8个静态库 1.AVUtil:核心工具类 <a href="https://www.cnblogs.com/tryFighting/p/12986670.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12984422.html
交叉编译(视频篇) - tryFighting
交叉编译(视频篇) *.X264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。一般的输入是视频帧的YUV表示,输出是编码之后H264数据包,并且支持CBR,VBR模式,可以在编码过程中直接改变码率的设置,这在直播的场景中是非常实用的,直播场景下利用该特点可以
2020-05-28T14:26:00Z
2020-05-28T14:26:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】交叉编译(视频篇) *.X264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。一般的输入是视频帧的YUV表示,输出是编码之后H264数据包,并且支持CBR,VBR模式,可以在编码过程中直接改变码率的设置,这在直播的场景中是非常实用的,直播场景下利用该特点可以 <a href="https://www.cnblogs.com/tryFighting/p/12984422.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12981705.html
交叉编译(音频篇) - tryFighting
交叉编译的原理 *音视频交叉编译的重要性,包括X264,FDK_AAC,LAME,最终将以LAME库为例完成一个将音频的PCM数据编码成MP3的实例 交叉编译的原理 1.PC上运行一个二进制文件,要有源代码然后在PC上进行编译链接生成可执行文件,最后在终端执行文件。当然最重要的是编译器和链接器了,对
2020-05-28T08:33:00Z
2020-05-28T08:33:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】交叉编译的原理 *音视频交叉编译的重要性,包括X264,FDK_AAC,LAME,最终将以LAME库为例完成一个将音频的PCM数据编码成MP3的实例 交叉编译的原理 1.PC上运行一个二进制文件,要有源代码然后在PC上进行编译链接生成可执行文件,最后在终端执行文件。当然最重要的是编译器和链接器了,对 <a href="https://www.cnblogs.com/tryFighting/p/12981705.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12974326.html
详解视频的图像数据 - tryFighting
视频的数据表示 1.对于视频帧的裸数据表示,更多的是YUV数据格式的表示,YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中Y表示明亮度,也称为灰阶值;而U和V表示的则是色度。他们的作用是描述影像的色彩
2020-05-27T08:56:00Z
2020-05-27T08:56:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】视频的数据表示 1.对于视频帧的裸数据表示,更多的是YUV数据格式的表示,YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中Y表示明亮度,也称为灰阶值;而U和V表示的则是色度。他们的作用是描述影像的色彩 <a href="https://www.cnblogs.com/tryFighting/p/12974326.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12967212.html
视频基础知识(帧,时间基) - tryFighting
I/P/B帧 I帧:关键帧,采用的是帧内压缩技术 B帧:前后参考帧,它属于帧间压缩技术,在压缩成B帧前,它会参考它前面的非压缩视频帧,和后面的非压缩的视频帧,纪录下前后两帧都不存放的残差值,这样可以达到更好的压缩率。 P帧:向前参考帧,就是参考的是前一个关键帧的数据,P帧属于帧间压缩技术,相对于B帧
2020-05-26T10:16:00Z
2020-05-26T10:16:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】I/P/B帧 I帧:关键帧,采用的是帧内压缩技术 B帧:前后参考帧,它属于帧间压缩技术,在压缩成B帧前,它会参考它前面的非压缩视频帧,和后面的非压缩的视频帧,纪录下前后两帧都不存放的残差值,这样可以达到更好的压缩率。 P帧:向前参考帧,就是参考的是前一个关键帧的数据,P帧属于帧间压缩技术,相对于B帧 <a href="https://www.cnblogs.com/tryFighting/p/12967212.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12965804.html
音频的基础知识 - tryFighting
音频的裸数据格式就是脉冲编码调制(Pulse Code Modulation ,PCM)数据。描述一段PCM数据一般需要量化格式(有的地方描述为位深度)(sampleFormat),采样率(sampleRate),声道数(Channel) 压缩编码的原理实际上是压缩冗余信号,冗余信号是指不能被人耳感
2020-05-26T07:16:00Z
2020-05-26T07:16:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】音频的裸数据格式就是脉冲编码调制(Pulse Code Modulation ,PCM)数据。描述一段PCM数据一般需要量化格式(有的地方描述为位深度)(sampleFormat),采样率(sampleRate),声道数(Channel) 压缩编码的原理实际上是压缩冗余信号,冗余信号是指不能被人耳感 <a href="https://www.cnblogs.com/tryFighting/p/12965804.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/12893214.html
网络413错误 - tryFighting
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescr
2020-05-15T02:03:00Z
2020-05-15T02:03:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescr <a href="https://www.cnblogs.com/tryFighting/p/12893214.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/11984814.html
./ViewController.h:9:9: fatal error: 'UIKit/UIKit.h' file not found - tryFighting
clang编译的两种方法 1.使用绝对路径: clang -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPho
2019-12-04T11:04:00Z
2019-12-04T11:04:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】clang编译的两种方法 1.使用绝对路径: clang -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPho <a href="https://www.cnblogs.com/tryFighting/p/11984814.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/11051751.html
Mac电脑上添加环境变量 - tryFighting
1.打开终端 vim命令键入 vi ./.bash_profile 2.输入i进入编辑模式 最好在复制环境变量前加一行注释 #instruction 复制环境变量 #Flutter export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUT
2019-06-19T07:44:00Z
2019-06-19T07:44:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】1.打开终端 vim命令键入 vi ./.bash_profile 2.输入i进入编辑模式 最好在复制环境变量前加一行注释 #instruction 复制环境变量 #Flutter export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUT <a href="https://www.cnblogs.com/tryFighting/p/11051751.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/10998267.html
斐波那契数列算法实现 - tryFighting
基于Python实现斐波那契数列 1.使用递归 实现斐波那契数列 #时间复杂度O(2^n)def fb(n): assert(n>=0) if n <= 2: return 1 return fb(n - 1) + fb(n -2) fb(n) n值最够大时,会产生内存溢出错误,时间开销和空间开销比
2019-06-10T08:05:00Z
2019-06-10T08:05:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】基于Python实现斐波那契数列 1.使用递归 实现斐波那契数列 #时间复杂度O(2^n)def fb(n): assert(n>=0) if n <= 2: return 1 return fb(n - 1) + fb(n -2) fb(n) n值最够大时,会产生内存溢出错误,时间开销和空间开销比 <a href="https://www.cnblogs.com/tryFighting/p/10998267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/10986060.html
jupyter notebook启动异常 - tryFighting
在终端输入 jupyter notebook 会报如下异常 The Jupyter HTML Notebook. 这将启动一个基于tornado的HTML笔记本服务器,它提供一个html5/ javascript笔记本客户端。 Traceback (most recent call last): F
2019-06-06T09:19:00Z
2019-06-06T09:19:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】在终端输入 jupyter notebook 会报如下异常 The Jupyter HTML Notebook. 这将启动一个基于tornado的HTML笔记本服务器,它提供一个html5/ javascript笔记本客户端。 Traceback (most recent call last): F <a href="https://www.cnblogs.com/tryFighting/p/10986060.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/tryFighting/p/10945295.html
Swift与OC比较 - tryFighting
Swift之父Chris Lattner,也是LLVM之父,从2014年公布Swift后,版本一直不大稳定,在Swift3.0以后语法逐渐稳定,开发者对此比较青睐 Chris Lattner从苹果离职到了特斯拉,自己感觉不适合自己,结果又辗转去了谷歌,比较牛逼的是去参与人工智能,机器学习方面的研究,
2019-05-29T09:52:00Z
2019-05-29T09:52:00Z
tryFighting
https://www.cnblogs.com/tryFighting/
【摘要】Swift之父Chris Lattner,也是LLVM之父,从2014年公布Swift后,版本一直不大稳定,在Swift3.0以后语法逐渐稳定,开发者对此比较青睐 Chris Lattner从苹果离职到了特斯拉,自己感觉不适合自己,结果又辗转去了谷歌,比较牛逼的是去参与人工智能,机器学习方面的研究, <a href="https://www.cnblogs.com/tryFighting/p/10945295.html" target="_blank">阅读全文</a>