博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态横竖屏切换KSYLive_iOS
阅读量:6719 次
发布时间:2019-06-25

本文共 1231 字,大约阅读时间需要 4 分钟。

动态横竖屏切换

1.8.4 版本之后直播SDK开始支持动态横竖屏切换的功能.

当主播的手机解除了系统的屏幕锁定功能后, 将手机旋转90°, 180°或270°, 系统的UI界面会在横屏状态和竖屏状态之间切换.
所谓动态横竖屏切换就是指直播SDK对这种在直播过程中动态发生的状态切换的适配.

动态横竖屏切换包含如下两种层次

主播端预览界面跟随系统UI界面的旋转

观众端播放画面跟随主播预览界面的旋转

实现原理

主播端预览界面的旋转, 可以直接使用CGAffineTransform 来实现, 参考kit类中的rotatePreview方法.

要做到观众播放的画面也跟随旋转, 则可以在GPU上先旋转好, 将旋转后的画面送到后续的压缩和推流环节去, 参考kit类中的rotateStream方法.

可选方案的比较

1.如果单独选择选择主播端预览界面, 推流画面不旋转

优点: 比较容易做到, 代价比较低, 对后续的视频压缩, 源站, CDN,和播放等环节没有影响.   缺点: 观众端看到的画面不是矫正后的画面, 移动端的观众需要自己根据画面的旋转, 人肉旋转一下.

2.同时旋转预览界面和推流界面

优点: 观众端能够始终看到正向的画面   缺点: 由于视频流中的分辨率发生了变化, 对整个直播播放链路中的各个环节的适配性有要求, 任何环节支持不当, 就会出现花屏等现象.

集成方法

以使用kit类的客户为例说明集成方法, 需要定制的客户请参考kit类的实现方法

1.保证直播视图控制器能够接收到屏幕旋转的事件通知
2.在直播视图控制器中添加屏幕旋转事件回调, 在屏幕旋转结束后, 将预览视图(和推流)旋转到旋转后的朝向

  • (void)viewWillTransitionToSize:(CGSize)size

    withTransitionCoordinator:(id
    )coordinator {[coordinator animateAlongsideTransition:^(id
    context) { } completion:^(id
    context) { if(SYSTEM_VERSION_GE_TO(@"8.0")) { [_kit rotatePreview]; [_kit rotateStream]; // 可选 } }];[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    }

反馈与建议

答疑:

邮箱:zengfanping@kingsoft.com
QQ讨论群:574179720
release:

转载地址:http://bijmo.baihongyu.com/

你可能感兴趣的文章
庆祝博客开通
查看>>
地址栏中传递中文参数
查看>>
设计模式之结构型模式
查看>>
冒泡,快排
查看>>
git: fatal: Could not read from remote repository
查看>>
PHP移动互联网开发笔记(7)——MySQL数据库基础回顾[1]
查看>>
2.文件内容的命令
查看>>
XNA 中 SoundEffect 与 SoundEffectInstance 的区别
查看>>
day 036 线程 -创建,守护线程
查看>>
sublime中nodejs配置
查看>>
通过FFmpeg将rtsp流摄像头视频转码为rtmp播放
查看>>
启动两个Redis服务
查看>>
测试一个目录下的文件共有多少行
查看>>
ctype.h——使用测试字符函数
查看>>
大数据应用的10大神话和误区
查看>>
Postgresql客户端不能远程连接数据库服务器 org.postgresql.util.PSQLException:
查看>>
Leetcode | Decode Ways
查看>>
RAM的分类
查看>>
UDP/TCP通信小记
查看>>
对Inode、Hard Link以及Soft Link的理解
查看>>