iOS-mediaDevices.getUserMedia-视频中旋转的纵横比



我正在尝试使用mediaDevices.getUserMedia来检索纵向媒体流,特别是9x16纵横比的媒体流。我可以在Android Chrome和Desktop上做到这一点,但当视频在HTML视频标签中呈现或录制到MP4时,iOS似乎会旋转视频。

以下是我使用的具体限制:

navigator.mediaDevices.getUserMedia({
video: { 
aspectRatio: 9/16, 
facingMode: 'user',
width: { min: 360, ideal: 720, max: 1080 },
height: { min: 640, ideal: 1280, max: 1920 },
deviceId: undefined,
resizeMode: 'none'
}
})

这将给我返回一个具有所需属性的媒体流视频轨道:

mediaStream.getVideoTracks()[0]
{
deviceId: "..."
facingMode: "user"
frameRate: 30
height: 1280
width: 720
}

然后,我在HTML视频标签上呈现该流。当我这样做时,视频被渲染为旋转,使得video.videoWidth=1280和video.video Height=720。

我从其他帖子中了解到,MP4和WEBM视频可以嵌入旋转元数据,这很可能就是这里发生的事情。

然后,我使用RecordRTC录制视频,得到的视频确实是720x1280,但经过旋转,在渲染时显示为横向格式。

我正在努力防止这种旋转发生,这样我就可以在没有旋转的情况下以720x1280录制人像视频。Chrome(安卓+桌面(似乎可以为我做这种裁剪+缩放,但iOS不行。有人找到解决方案吗?

我能够使用;精确的";纵横比:

navigator.mediaDevices.getUserMedia({
video: { exact: 1.5 },
audio: false
}).then(stream => {
..
})

相关内容

  • 没有找到相关文章

最新更新