基本介绍

经常遇到一些开发者问:
1.我们播放的时候,会有黑边怎么处理?尤其是在类似于抖音,直播这样的场景下,如果视频有黑边,很影响画面的视觉效果。而阿里云播放器提供了缩放功能,用来去除黑边,达到视频全屏的效果。
2.直播时摄像头采集经常会遇到反向的问题,就是采集出来的视频画面中的字是反的,对于这种情况怎么处理呢?阿里云播放器提供了镜像的功能,可以水平和垂直镜像,让画面变成你想要的样子。
3.对一些横屏拍摄的视频同时我们提供了旋转功能,可以选择90、270度,旋转之后就可以实现全屏渲染了。

渲染模式设置

Android接口

播放器提供了setVideoScalingMode方法提供去改变画面的大小。它可以设置两种方式:
1. VIDEO_SCALING_MODE_SCALE_TO_FIT
按照视频的宽高比,放到SurfaceView(TextureView)中。不会剪裁视频画面,画面的内容是完整的。比如我的SurfaceView是1920:1080的,然后播放一个1280x720的视频,如果使用FIT模式,最终显示的话,播放器把1280x720这个视频按照原始比例放大,直到宽或者高跟SurfaceView的宽或者高一直,最终只有上下有黑边或者左右有黑边。
2. VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
按照视频的宽高比,将画面铺满SurfaceView(TextureView)中。此时会剪裁视频的画面,可能两边有部分内容不会被显示。crop方式肯定是没有黑边的。

播放器默认的缩放效果为:VIDEO_SCALING_MODE_SCALE_TO_FIT。
VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING 是以牺牲画面的完整性为代价,从而实现了没有黑边。所以,当画面的宽高比与实际的宽高比相差太大时,不太合适使用此配置。

我们来看具体的显示效果,比如播放一个竖屏的视频。

1.设置VIDEO_SCALING_MODE_SCALE_TO_FIT。即按照视频的宽高比,放到SurfaceView(TextureView)中。

if (aliyunVodPlayer != null) {          aliyunVodPlayer.setVideoScalingMode(IAliyunVodPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT);
}

可以看到,有明显的黑边,但是画面会被完整的显示出来。

2.设置VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING。即:按照视频的宽高比,将画面铺满SurfaceView(TextureView)中。

if (aliyunVodPlayer != null) {
aliyunVodPlayer.setVideoScalingMode(IAliyunVodPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
}

可以看到,黑边没有了,但是画面的部分内容已经看不到了。

iOS接口

iOS提供了一个属性来获取和设置渲染模式

@property(nonatomic, readwrite)  ScalingMode scalingMode;enum {scalingModeAspectFit = 0,scalingModeAspectFitWithCropping = 1,
};
typedef NSInteger ScalingMode;

和Android类似,scalingModeAspectFit对应Android的VIDEO_SCALING_MODE_SCALE_TO_FIT,scalingModeAspectFitWithCropping对应Android的VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING,具体接口说明和效果和Android一样,在这里不在赘述。

镜像设置

iOS接口

iOS提供了如下接口来实现镜像的设置,支持水平和垂直镜像。

-(void) setRenderMirrorMode:(RenderMirrorMode)mirrorMode;enum {renderMirrorModeNone = 0,renderMirrorHorizonMode,renderMirrorVerticalMode,
};
typedef NSInteger RenderMirrorMode;

水平镜像

垂直镜像

Android接口

public void setRenderMirrorMode(VideoMirrorMode mirrorMode);
enum VideoMirrorMode {VIDEO_MIRROR_MODE_NONE(0),VIDEO_MIRROR_MODE_HORIZONTAL(1),VIDEO_MIRROR_MODE_VERTICAL(2);
}

旋转设置

iOS接口

iOS提供了如下接口来实现旋转的设置,旋转支持0、90、180、270度的旋转。

-(void) setRenderRotate:(RenderRotate)rotate;
enum {renderRotate0 = 0,renderRotate90 = 90,renderRotate180 = 180,renderRotate270 = 270,
};
typedef NSInteger RenderRotate;

Android接口

    public void setRenderRotate(VideoRotate rotate);public static class VideoRotate {public static VideoRotate ROTATE_0 = new VideoRotate(0);public static VideoRotate ROTATE_90 = new VideoRotate(90);public static VideoRotate ROTATE_180 = new VideoRotate(180);public static VideoRotate ROTATE_270 = new VideoRotate(270);}

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

阿里云移动端播放器高级功能---画面控制 1相关推荐

  1. 阿里云移动端播放器高级功能---画面控制

    基本介绍 经常遇到一些开发者问: 1.我们播放的时候,会有黑边怎么处理?尤其是在类似于抖音,直播这样的场景下,如果视频有黑边,很影响画面的视觉效果.而阿里云播放器提供了缩放功能,用来去除黑边,达到视频 ...

  2. 阿里云移动端播放器高级功能---安全播放

    基本介绍 如何保障视频内容的安全,不被盗链.非法下载和传播,阿里云视频点播已经有一套完善的机制保障视频的安全播放: 那么在播放器中支持哪一些安全播放的机制呢? 这里有料:视频安全解决方案. Refer ...

  3. 阿里云移动端播放器高级功能---视频下载

    基本介绍 优酷.爱奇艺.腾讯等主流的视频类App都有视频离线下载的功能,主要目的是在wifi下将视频离线在本地,然后在无网或者4G的情况下去观看离线视频.那么阿里云播放器也提供了视频下载的功能.这个功 ...

  4. 阿里云移动端播放器高级功能---直播时移

    基本介绍 通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场.我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能. 先 ...

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

    基本介绍 如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来.另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示.如下 ...

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

    基本介绍 如果用户对视频播放中的某一帧画面特别感兴趣,可以使用截图功能将这一帧视频保存起来.另外有一种场景想知道是否有声音,或者想感知声音的大小震动频率等,可以通过显示一个声音的波形来形象的表示.如下 ...

  7. 阿里云点播 web 播放器

    浅谈 最近遇到很多人使用阿里云点播 web 播放器,通过 STS 令牌的方式去播放 MTS 转码完成后的资源出现问题,"路见不平一声吼,写个过程先献丑",只是做了最基础的功能,看官 ...

  8. 【大数据技术干货】阿里云伏羲(fuxi)调度器FuxiMaster功能简介(一) 多租户(QuotaGroup)管理...

    原文链接:http://click.aliyun.com/m/13950/ 各位好,这是介绍阿里云伏羲(fuxi)调度器系列文章的第一篇,今天主要介绍多租户(QuotaGroup)管理的实现 一.Fu ...

  9. 阿里云点播集成播放器的SDK时遇到的黑屏有声音的问题

    在集成阿里云的点播功能时,集成他的sdk后播放视频遇到,有声音没有画面的问题! 在mPlayer = new AliVcMediaPlayer(AliVcMediaPlayerActivity.thi ...

最新文章

  1. Spring Cloud第九篇:链路追踪Sleuth
  2. 阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理
  3. Javascript 绑定事件和 this理解
  4. python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫
  5. 前端学习---html基础知识
  6. EntityFramework Core进行读写分离最佳实践方式,了解一下(二)?
  7. Java实现图片压缩代码,图片大小转换
  8. ubuntu12.04 php环境搭建,Ubuntu12.04筹建php开发环境
  9. matlab分析xml文件_修改Java中的XML文件(DOM分析器)
  10. 数学建模常用方法讲解(一)
  11. excel出入库采购库存管理系统
  12. android系统文件误删,误删手机系统文件怎么恢复
  13. 云计算实验4 面向行业背景的大数据分析与处理综合实验
  14. 基金投资入门3:中外常见金融指数类型说明
  15. 计算机三级 网络技术 大题第一题 答题技巧分享
  16. linux多系统引导管理,Linux 多重引导MBR与系统引导管理器GRUB.docx
  17. 技术点:手写axios
  18. [转]北邮生两月的赶集生活,记我在的赶集网工作的两月
  19. Hadoop笔记(5)HA和联邦机制
  20. python 单例模式连接数据库

热门文章

  1. 两组数组对象数据比对
  2. CPU战争40年,终于把Intel打趴下了
  3. OpenCV3.0中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,它们各自的算法原理、特点是什么,并附示例代码
  4. ​刘强东卸任京东集团 CEO,徐雷接任;苹果新专利可为多个设备无线充电;Rust公布2024年路线图|极客头条
  5. android 微信朋友圈时间不对,微信怎么重新编辑朋友圈 注意是有时间限制的
  6. 二分查找O(logn)和归并排序O(nlogn)时间复杂度介绍
  7. linux上通过docker使用微信
  8. OpenCV中的数值计算功能(一)矩阵求逆(伪逆)
  9. 预训练模型简介和使用方法
  10. 使用MFC自动化操作Excel文档