BLACK_OX

The palest ink is better than the best memory


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

形状特效

发表于 2022-10-14 | 分类于 media | 评论数: | 阅读次数:
本文字数: 9.2k | 阅读时长 ≈ 8 分钟

形状特效

初次接触到形状特效是在剪映,剪映中叫蒙版,就是列举了一些常见形状的蒙层效果,除了常规的旋转、缩放、位移等操作外,还有个虚化的效果。可以去剪映感受下。

接触到这东西,觉得效果挺不错,打算研究下,正好手头的编辑工具项目也可以用上。线性、圆形、矩形,这几个规范的,通过平方根公式 跟 三角形余弦定理基本都可以推算出来(可以参考github shader),重点来了,爱心 & 五角星 怎么搞?



阅读全文 »

动态滤镜

发表于 2022-10-14 | 分类于 media | 评论数: | 阅读次数:
本文字数: 6.7k | 阅读时长 ≈ 6 分钟

滤镜

音视频编辑工具中,对图像或者视频加滤镜是一种常见的做法,普通滤镜很好理解,一张LUT图就搞定了,LUT图一般设计师会提供好,开发拿过来转成纹理,opengl做下颜色转换就好了,这里就不多说了。

但是今天想讲的是动态滤镜,也有叫特效的,动效等等。比如小红书/剪映 等等,感受一下就大概知道了。

动态滤镜

先上一个效果感受下:

动态滤镜

阅读全文 »

图像描边

发表于 2022-09-10 | 分类于 media | 评论数: | 阅读次数:
本文字数: 64k | 阅读时长 ≈ 58 分钟

image border

最近项目中搞了个图像描边的需求,常见的美图工具App都有类似的功能,典型的如美图秀秀,一开始觉得应该不太复杂,正常评估时间,实际做的时候,发现问题比想象中的复杂多了,结果项目不得不延期 😭,所以有必要搞篇文章来总结下教训。

先说整体的流程: 1、原图 -> 2、抠图 -> 3、边缘检测 -> 4、绘制边缘 -> 5、结果导出

这个流程还是很容易想到,但是除了最后一步相对来说容易点,2、3、4都是一路坑 😞

阅读全文 »

camera orientation

发表于 2022-09-09 | 分类于 media | 评论数: | 阅读次数:
本文字数: 23k | 阅读时长 ≈ 21 分钟

camera

手机相机录视频或者拍照,需要考虑设备的方向,主要在两方面

  1. 采集过程中,无论手机什么方向采集,采集画面都是正着看,不用侧头
  2. 录制/或者拍照后,视频/图片在正常手持设备的情况下正常显示,不用横着手机

正常手持一般都是竖着拿手机,所以就算横着拍摄,竖着拿手机也需要正常显示,不理解可以参考下系统相机。

所以这里就存在一个方向修正的问题。

阅读全文 »

__has_include

发表于 2022-09-06 | 分类于 media | 评论数: | 阅读次数:
本文字数: 6.6k | 阅读时长 ≈ 6 分钟

VS

在搞音视频的过程中,早期为了快速实现功能,会用到一些开源库,比如FFMpeg、OpenCV、LibYUV 等,这些大名鼎鼎的开源库能够解决音视频领域的很多问题,编解码、边缘检测、RGB-YUV格式转换等等。

这几个开源库还都是C/C++的,完美解决跨平台的问题,所以早期可以快速上线,但也会带来增加包大小的问题,这是最明显的,另外开源方案也并非没有BUG。对开源库做裁剪减少大小/提issue等待官方处理、自己处理BUG等这些成本相对也不小。

阅读全文 »

RGB2YUV

发表于 2022-09-05 | 分类于 media | 评论数: | 阅读次数:
本文字数: 36k | 阅读时长 ≈ 33 分钟

RGB2YUV

处理音视频,对YUV RGB肯定不陌生,这里记录下经过OpenGL处理后的 RGB 格式的pixelBuffer 转成 YUV 格式导出视频。

DIY

自己处理矩阵的计算,YUV的存储格式,可以加深对YUV的理解, 类似的反过来处理,或者处理其他格式的YUV 422 444等,也是一样的。
所以还是有必要了解一下,DO IT YOURSELF.

重点是注意内存对齐,YUV420采样存储方式就好了,其他没什么复杂的。

阅读全文 »

flutter Display P3

发表于 2022-08-31 | 分类于 flutter | 评论数: | 阅读次数:
本文字数: 16k | 阅读时长 ≈ 14 分钟

Display P3

Display P3 是苹果手机相机使用的一种色域,查看图片信息可以看到, 然而在flutter中 渲染 Display P3格式的图片 bitmap颜色失真,不了解色域的参考下前面HDR相关的文章

阅读全文 »

flutter-hdr

发表于 2022-08-24 | 分类于 flutter | 评论数: | 阅读次数:
本文字数: 6.1k | 阅读时长 ≈ 6 分钟

flutter

flutter 播放 HDR 视频,色彩跟亮度都有问题 ,github 也有反馈这个issue Video Player HDR Problem 跟原生的对比可以很明显看到差距,官方看起来好像也不重视这个问题 😕

阅读全文 »

HDR笔记

发表于 2022-08-18 | 分类于 HDR | 评论数: | 阅读次数:
本文字数: 68k | 阅读时长 ≈ 1:02

Noun explanation

ITU:国际电信联盟 International Telecommunication Union
ITU-R:国际电信联盟无线电通信部门 ITU Radiocommunication Sector

CIE :国际照明协会 (英文:International Commission on Illumination ,法文:Commission internationale de l'éclairage ,采用法文缩写:CIE )

SMPTE:电影电视工程师协会 Society of Motion Picture and Television Engineers

Hue:色调 色彩 色相
Chroma:色调饱和度 浓度
Luminance:亮度 明度


HDR Concept

HDR:High Dynamic Range

字面上是动态范围,一般指亮度上可以表达更大的亮度范围,呈现更大的亮度对比度。但是实际实际上HDR的技术和标准涉及色彩相关的一组属性的改善,可以带来更多的颜色、更大的亮度对比度、更高精度的量化。

OETF/EOTF: Optical-Electro/Electro-Optical Transfer Function 光电/电光转换函数

人对亮度的感知是非线性的,对暗部细节敏感,对亮部细节不敏感,利用这个特点设计了非线性的光电转换和电光转换的函数。这样的处理不仅可以节省带宽,也可以基本满足用户体验需求。
光电转换的时候做了特殊的非线性编码,为暗部细节分配更多的码率,亮部细节进行了压缩或者截断减少码率的分配。电光转换进行显示还原的时候,通过应用一个逆的非线性变化,还原出线性光。


阅读全文 »

coreimage with metal 笔记

发表于 2022-08-08 | 分类于 metal | 评论数: | 阅读次数:
本文字数: 28k | 阅读时长 ≈ 26 分钟

xcode

近期有自定义CoreImage的CIFilter的需求,前期通过CIKL 定义 CIKernel完成了任务,后面了解到CoreImage新特性支持metal的方式直接自定义 CIKernel,提高效率。

CIKL的方式,存在两个问题:

  • 编写 kernel 的时候,没有报错提示,哪怕是参数名错误都无法检查处理。效率极低。
  • 翻译转换,编译,都是发生到运行时,导致第一次使用滤镜的时候,耗时较久。

Metal: 在build阶段 就可以编译 链接 .metal文件

Compiling & Linking

参考苹果的官方文档 Metal Shading Language for CoreImage Kernels ,在xcode integration 部分提到在build setting 设置 Other Metal Compiler Flags, 文档已经很老了(2018年的),新版的xcode已经没有这个选项了,如果不做处理,会有报错 "/air-lld:1:1: symbol(s) not found for target 'air64-apple-ios12.0.0'" and "air-lld command failed with exit code 1 (use -v to see invocation)"

阅读全文 »
1234
BLACK_OX

BLACK_OX

Developer...
34 日志
10 分类
22 标签
RSS
GitHub E-Mail
© 2023 BLACK_OX | 497k | 7:32
由 Hexo 强力驱动
|
主题 – NexT.Gemini
|