SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3849|回复: 0
打印 上一主题 下一主题

[webrtc] 旋转视频帧

[复制链接]

186

主题

346

帖子

2456

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2456
跳转到指定楼层
楼主
发表于 2016-12-9 22:06:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2018-1-13 14:15 编辑

旋转角度
因为各平台相机驱动限制,有时相机驱动生成的数据需要旋转一定角度才能反映真正图像。可用以下公式来描述真正图像。
  1. 真正图像=相机驱动生成的数据+依一定角度进行旋转
复制代码

相机驱动在生成数据时会给出这个角度,对VideoCaptureImpl,当中的_rotateFrame字段就指示了这个角度。角度值只可能是四种:0度(kVideoRotation_0)、90度(kVideoRotation_90)、180度(kVideoRotation_180)和270度(kVideoRotation_270)。

聊天过程中旋转设备,使得出现横、竖屏切换,不会影响旋转角度。

真正图像的宽度、高度
真正图像的宽度、高度可能不是app传给相机驱动希望的宽度、高度。

在启动采集前,app会传给相机驱动希望的宽度、高度,相机驱动会按这尺寸去采集。当旋转角度是0、180度时它们就是真正图像的宽度、高度,90、270度时则要互换,即真正图像的宽度是app给出的高度,高度则是宽度。

什么时候旋转
为正确显示真正图像,渲染前必须进行旋转。webrtc给了两个阶段让执行旋转,VideoCaptureImpl中的apply_rotation_指示了旋转要在哪阶段执行。
阶段apply_rotation_OnFrame时VideoFrame中的rotation_值处理者
执行编码前true(默认)kVideoRotation_0webrtc内部
解码后渲染前false旋转角度app

如果apply_rotation_=true,那就是说VideoCaptureImpl处理了旋转,app的OnFrame时收到的VideoFrame中的rotation_字段总是kVideoRotation_0。否则VideoCaptureImpl不处理旋转,app的OnFrame时收到的VideoFrame中的rotation_字段指示旋转了的角度
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-11-1 08:11 , Processed in 0.049316 second(s), 20 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表