苹果手机抖音特效不支持机型

苹果手机抖音特效不支持机型,第1张

苹果6以下机型。根据查询抖音官网得知,在苹果所有机型中,苹果6以下机型由于系统版本太低,并且屏幕和硬件过于落后,用户在使用时并不支持软件中的特效。抖音,是由字节跳动孵化的一款音乐创意短视频社交软件。

苹果x短信打特效的方法如下:

1、打开信息,点击右上角编辑图标,选择收件人;

2、在文本框输入要发送的文字,长按发送图标,即可选择效果了,选择完成后点击发送。

iPhoneX是苹果公司设计、开发与销售的一款iPhone系列智能手机,于2017年9月13日由苹果CEO蒂姆·库克在史蒂夫·乔布斯剧院发布,是苹果公司iPhone上市十周年的纪念机款。iPhoneX操作系统使用iOS11,采用了AppleA11仿生处理器,拥有6个处理核心,属于高端版机型。其外观上采用了全新设计,搭载色彩锐利的OLED屏幕,并使用3D面部识别(FaceID)传感器,是苹果的一款经典产品。

苹果公司(AppleInc)是美国的一家高科技公司,由史蒂夫·乔布斯、斯蒂夫·沃兹尼亚克和罗·韦恩等人于1976年4月1日创立,并命名为美国苹果电脑公司,2007年1月9日更名为苹果公司,总部位于加利福尼亚州的库比蒂诺,于1980年12月12日公开招股上市。其主要业务包括设计、开发和销售消费电子、计算机软件、在线服务和个人计算机等。

微信烟花特效没了,可能是微信的问题。微信服务器的问题,耐心等待系统修复。炸弹表情,用户发出一个炸弹表情,屏幕会显示一个炸弹动画。漆枪表情,用户给出一个漆枪表情,屏幕会显示一个漆枪动画。烟花表情,用户发送烟花表情,屏幕会全屏显示烟花动画。微信方面表示,为了丰富用户在微信上的表情,微信80升级了小表情。当用户在聊天中发送或接收单个小表情时,会播放动画效果。一些小表情动画效果可以全屏播放。但是很多表情只有我们一直按或者只是发才会有动态效果,并不总是有动态特效。至于炸弹、烟花等一些表情,没有特别的效果,可能是手机系统不适应。

以iPhone11为例,在iOS141系统下,苹果短信特效发给别人,他看不到,是因为他用的是安卓手机或者是他的苹果手机系统版本过低。

苹果短信特效只有持有相同苹果系统版本的用户才可以看到,苹果短信特效属于ios系统中的功能,android系统无法识别。

苹果短信特效是ios10的功能,如果对方的苹果手机系统版本低于ios10也无法看到短信特效。当对方使用的是安卓手机或低于ios10版本的手机时,用户需要发送传统短信,也就是没有特效的短信给对方。

用户也可以通知对方,让对方更换为苹果手机接收短信,或者是将苹果手机系统升级至最新版本。使用低版本的苹果手机是无法看到苹果短信特效的。

使用WebRTC进行互动直播时,我们希望采集的画面可以添加美颜特效,现有两套解决方案:

方案一的思路是替换WebRTC的原生采集,使用GPUImageVideoCamera替换WebRTC中的视频采集,得到经过GPUImage添加美颜处理后的图像,发送给WebRTC的OnFrame方法。

方案二的思路是拿到WebRTC采集的原始视频帧数据,然后传给GPUImage库进行处理,最后把经过处理的视频帧传回WebRTC。

通过查阅WebRTC源码发现,WebRTC原生采集和后续处理的图像格式是NV12(YUV的一种),而GPUImage处理后的Pixel格式为BGRA,因此无论使用方案一还是方案二都需要进行像素格式转换。下面来介绍方案一的实现方法(方案二和方案一并无本质区别,可参考方案一的实现思路)。

在实现该方案前,我们先介绍几个必须掌握的知识:

iOS视频采集支持三种数据格式输出:420v,420f,BGRA。

420f 和 420v 都是YUV格式的。 YUV是一种颜色编码方法,分为三个分量,Y表示亮度(Luma),也称为灰度。U和V表示色度(chroma)描述色彩与饱和度。YUV的存储格式分为两大类:planar和packed。planar(平面)先连续存储所有像素点的Y,然后存储所有像素点的U,随后是所有像素点的V。packed是将每个像素点的Y,U,V交叉存储的。 我们最终需要的,用于WebRTC编解码的像素格式是kCVPixelFormatType_420YpCbCr8BiPlanarFullRange的,即双平面的YUV420,Y和UV分开存储,这对后面我们的格式转换非常重要。

420f和420v的区别在于Color Space。f指Full Range,v指Video Range。

Full Range的Y分量取值范围是[0,255]

Video Range的Y分量取值范围是[16,235]

从采集编码到解码渲染,整个过程中,颜色空间的设置都必须保持一致,如果采集用了Full Range 而播放端用Video Range,那么就有可能看到曝光过度的效果。

BRGA是RGB三个通道加上alpha通道,颜色空间对应的就是它在内存中的顺序。比如kCVPixelFormatType_32BGRA,内存中的顺序是 B G R A B G R A。

大端模式(Big-endian),是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。

小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。

iOS采用的是小端存储。

LibYUV是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。

上面提到WebRTC使用的图像格式为NV12,而通过GPUImage采集到的图像格式为BGRA,因此,就需要做BGRA→NV12的转换。

iOS中采用的是小端模式, libyuv中的格式都是大端模式。小端为BGRA,那么大端就是ARGB,所以我们使用libyuv::ARGBToNV12。

下面介绍方案一的具体实现:

修改 avfoundationvideocapturermm 中的 - (BOOL)setupCaptureSession 方法,启动GPUImage采集,在回调中拿到BGRA格式的CMSampleBuffer。并修改 - (void)start 和 - (void)stop ,确保采集的启停功能正常。

这里便得到了添加美颜等特效的BGRA源视频帧数据。

先获取BGRA格式的pixelBuffer首地址,并创建转换后NV12格式的内存地址dstBuff,使用libyuv::ARGBToNV12进行转换,最终我们得到了存储NV12数据的内存地址dstBuff。

pixelBufferAttributes 这个参数是optional的,但是却非常重要。它指定创建时是否使用IOSurface框架,有无这个参数最后创建的Pixelbuffer略有不同,经测试,如不写这个参数,在iOS13中将无法创建正常可用的pixelBufferRef。

上面提到,NV12是双平面的YUV420格式,即在dstBuff中Y和UV分开存储,因此我们需要分别逐行拷贝Y和UV。

注意: 在操作CVPixelBuffer之前,一定要记得先进行加锁,防止读写操作同时进行。

以UV拷贝为例:

这里便得到了NV12格式CVPixelBuffer。

最终交付给WebRTC处理的是CMSampleBuffer,因此我们需要做CVPixelBuffer→CMSampleBuffer的转换:

这里就得到了可用于WebRTC的经过GPUImage处理的CMSampleBuffer,然后将CMSampleBuffer传给WebRTC的OnFrame方法即可。

到这里就完成了为WebRTC的视频添加美颜等特效。其中的坑还是要自己踩过才印象深刻。其中要着重注意iOS13的崩溃问题。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/3481377.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-15
下一篇2023-08-15

发表评论

登录后才能评论

评论列表(0条)

    保存