阿里云移动端播放器高级功能---截图和音频波形

基本介绍

如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来。另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示。如下图所示:
a4da5c8a280a1467e34bab36b3dc101eb7ad1a20
那么播放器提供了类似的方法可以让用户有办法去实现音频波形这个功能。那么这种通常在音乐播放器中比较常见,或者在直播场景中来标识对方讲话是否有声音等,有一定的应用场景。

视频截图

实现接口

iOS接口如下:

/*** 功能:截取当前正在播放图像**/
-(UIImage*) snapshot;

Android接口如下:

public Bitmap snapShot();

需要注意

视频内容截取

需要知道的是视频截图截取的是视频的真实内容,而不是渲染窗口大小的图像。比如播放的是1920x1080的图像,窗口渲染大小是800*600,那么截取出来的图像是原始的1080p的图像,而不是窗口渲染大小的图像。这样截取出来的内容不会有失真的情况。

保持镜像和旋转

如果此时用户设置了镜像或者旋转模式,那么截取出来的视频内容也是有旋转和镜像的图像。SDK内部已经对这种情况进行了处理。

音频波形

实现接口

用户要实现音柱功能,播放器SDK必须要将实时的播放音频数据回调出来,具体见一下方法:
iOS接口:通过一个block回调出PCM音频数据

/*** 功能:* 参数:block:音频数据回调**/
-(void) getAudioData:(void (^)(NSData *data))block;

Android接口:通过一个监听来获取音频数据

public interface OnPcmDataListener {public void onPcmData(byte[] data, int size);
}public void setOnPcmDataListener(OnPcmDataListener onPcmDataListener);

实现音频波形

拿到了PCM数据之后,如何去绘制音频波形,就是应用层的事情了,iOS和Java层都有很多绘制音频波形的方法。
要绘制成什么样的形状都可以安装自己的需求来做。这些在网上都有很多相关的资料,在这里就不进行描述。

类似如下比较炫的效果都可以实现。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AES和RSA前后端加解密

先了解AES和RSA加密算法 AES算法 1、运算速度快,在有反馈模式、无反馈模式的软硬件中,Rijndael都表现出非常好的性能。 2、对内存的需求非常低,适合于受限环境。 3、Rijndael 是一个分组迭代密码, 分组长度和密钥长度设计灵活。 4、AES标…

PMBOK第六版最新十大大知识领域ITTO思维导图-干货!

PMBOK学习过程中,ITTO(输入、工具、技术、输出)是每年必考的内容,掌握ITTO的脉络,对学习和梳理PMP非常有帮助。知道这个过程要做什么,为什么做,做完有什么成果。也是项目经理必备的技能之一。 …

这个情人节,工程师用阿里云来试着表达不一样的爱意

年轻的时候谈的恋爱就像TCP链接,恋爱时三次握手即可,可分手时却分了四次。而常常久久的爱情,更像是icmp协议,无论对方身在何处,无论是否是可靠连接,无论你何时去ping她/他,她/他都默默地响应你。…

云+X案例展 | 金融类:金山云为新网银行重塑金融服务提供云计算动力

本案例由金山云投递并参与评选,CSDN云计算独家全网首发;更多关于【云X 案例征集】的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个“云行业”的健康发展。作为国内第三家、中西部…

对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密

RSA和AES结合使用 接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网络传输过程中,很有…

Unity人物移动的几种方法

Unity人物移动的几种方法 方法一:transform.Translate世界坐标系移动自身移动的案例 方法二:CharacterController.Move(vector dir)按照世界坐标轴移动按照自身坐标轴移动 方法三:CharacterController.SimpleMove&…

可应用于实际的14个NLP突破性研究成果(四)

可应用于实际的14个NLP突破性研究成果(一) 可应用于实际的14个NLP突破性研究成果(二) 可应用于实际的14个NLP突破性研究成果(三) 11.对序列建模的通用卷积和递归网络的实证评估作者:SHAOJIE …

量子通信,到底是什么工作原理?

戳蓝字“CSDN云计算”关注我们哦!作者 | 小枣君责编 | 阿秃今天,小枣君要和大家聊的是“量子通信”。最开始计划写这个专题的时候,小枣君的内心是很纠结的。鲜枣课堂的目的,就是传递“普通人都能听懂”的知识。每一个知识点专题&a…

图(关系网络)数据分析及阿里应用

2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴资深技术专家钱正平为大家分享了大数据技术背景下图数据的应用前景,以及阿…

架构的“一小步”,业务的一大步

前言: 谈到“架构”这两个字,会有好多的名词闪现,比如:分层架构、事件驱动架构、DDD、CQRS等。亦或者一堆的软件设计原则,如:KISS原则(Keep it Simple and Stupid)、SOLID原则(单一责任原则、开…

牵手大企,关于图形计算、HPC与AI,NVIDIA言有尽而意无穷!

戳蓝字“CSDN云计算”关注我们哦!作者 | 晶少出品 | CSDN云计算(ID:CSDNcloud)在黄仁勋看来,随着摩尔定律消亡,GPU加速才是撬动未来高性能计算发展的有力杠杆。有数据显示,目前NVIDIA已经销售了…

如何合理的规划jvm性能调优

JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内…

如何衡量研发效能?阿里资深技术专家提出了5组指标

阿里妹导读:新的一年,相信很多产品技术团队把研发效能提升列为重要的目标,甚至还有团队为此专门成立了项目组。然而,到底什么是好的研发效能,却很少有人能够表达清楚。标准不清晰,又何谈提升? …

官宣!2020年,这5类程序员要过苦日子!网友:明年咋活?!

2020年就要来了,有人说:经历了2019年的“市场变革”后,未来这一年将会至关重要,是决定各自命运的定型年。那么对于程序员来说,明年的风向标是如何?哪些编程语言会持续大热,哪些要做好被“淘汰”…

Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】

一,背景——横空出世的BERT全面超越人类 2018年在自然语言处理(NLP)领域最具爆炸性的一朵“蘑菇云”莫过于Google Research提出的BERT(Bidirectional Encoder Representations from Transformers)模型。作为一种新型的…

Kubernetes的共享GPU集群调度

问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合&#…

华为云WeLink正式发布,这是更懂企业的智能工作平台一枚!

今日,华为云在京发布智能工作平台WeLink。 对此,华为云副总裁、联接与协同业务总裁薛浩表示:“华为云WeLink源自华为数字化转型实践,是更懂企业的智能工作平台,具备智能高效、安全可靠、开放共赢三大核心优势&#xff…

一致性协议浅析:从逻辑时钟到Raft

前言 春节在家闲着没事看了几篇论文,把一致性协议的几篇论文都过了一遍。在看这些论文之前,我一直有一些疑惑,比如同样是有Leader和两阶段提交,Zookeeper的ZAB协议和Raft有什么不同,Paxos协议到底要怎样才能用在实际工…

PMP 随堂笔记

CPi挣值管理 临界比值 不属于挣值管理 临界比值 1为分界点 党校与1时,差 大于1时为好 成本激励由有3种场景: 第一种场景:超出目标费用 目标10w 利润1w 分摊比例70/30 实际成本12w 也就是多花了(12w-10w(目标费用)2w 甲方罚乙方利润费用&…

Objective-C中的associated object释放时机问题

如果对象A持有对象B,B作为A的associated object,并且表面上B没有其他被强引用的地方,那么对象A被释放时,对象B一定会同时释放吗?大部分情况下是,但真有不是的时候。最近实现代码的时候不小心就碰到了这样的…