基本介绍如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来。另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示。如下图所示:
那么播放器提供了类似的方法可以让用户有办法去实现音频波形这个功能。那么这种通常在音乐播放器中比较常见,或者在直播场景中来标识对方讲话是否有声音等,有一定的应用场景。
视频截图实现接口 iOS 接口如下:
/**
功能:截取当前正在播放图像
* */-(UIImage*) snapshot;Android 接口如下:
public Bitmap snapShot(); 需要注意视频内容截取需要知道的是视频截图截取的是视频的真实内容,而不是渲染窗口大小的图像。比如播放的是 1920×1080 的图像,窗口渲染大小是 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 层都有很多绘制音频波形的方法。要绘制成什么样的形状都可以安装自己的需求来做。这些在网上都有很多相关的资料,在这里就不进行描述。
类似如下比较炫的效果都可以实现。
本文作者:隽阜
阅读原文
本文为云栖社区原创内容,未经允许不得转载。