草庐IT

android - setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频

coder 2023-11-23 原文

问题:某些 Android 设备(列在问题底部)在对正面拍摄的视频使用 setOrientationHint(int degrees) 函数时表现出意外行为面对相机。预期的行为是视频顺时针旋转,但这些设备逆时针旋转视频。

我的目标:在相机设置或硬件方向中识别一个变量,使我能够预测到何时会发生这种情况。具体来说,我想避免在我的代码中对这些电话进行特殊封装!

进一步说明:我正在使用标准的 MediaRecorder 对象录制视频,并且在准备录制时,我使用 setOrientationHint() 设置了视频的方向.在 setOrientationHint() 的文档中,为 degrees 参数指定了以下内容:

degrees –– the angle to be rotated clockwise in degrees. The supported angles are 0, 90, 180, and 270.

该函数旨在添加一个包含旋转角度的合成矩阵,以便视频播放器可以按预期显示视频。所以,我所做的是 I get the camera hardware's orientation using the CameraInfo class并将其用作 setOrientationHint fn 中的 degrees 参数。 (我尝试使用 AOSP 作为指南对这段代码进行变体,但我得到了完全相同的结果。)

一个真实的例子:Samsung Galaxy S3 前置摄像头(事实上大多数其他摄像头)的硬件方向为 270,所以我在录制时使用它,生成的视频是正确显示。 HTC Vivid 将类似地为同一相机返回 270 的硬件方向,但只有当我在 setOrientationHint fn 中使用 90 作为 degrees 参数时才会正确显示。如果我像其他任何手机一样使用硬件方向的 270,视频将颠倒。

注意: setOrientationHint() 函数包含一个警告:

Note that some video players may choose to ignore the compostion matrix in a video during playback.

但是,这不是正在发生的事情,因为如果我伪造它并输入 90 而不是 270,我可以轻松地解决这些手机上的这个问题。

我见过的具体出现此问题的手机:运行 Android 4.0.3 的 HTC Vivid (PH39100)、运行 Android 4.0.3 的 HTC EVO 4G (PG86100)、运行 Android 的 HTC Thunderbolt (ADR6400L) 2.3.4.请注意,它们都是 HTC 手机。也许 HTC 的某个人将顺时针误认为是逆时针。

最佳答案

是的,HTC 手机的前置摄像头旋转方向错误。我没有尝试猜测,而是添加了一个设置屏幕,可以拍摄两张照片,第二张旋转 90 度。然后,当我循环不同的旋转方向和角度组合时,用户可以继续点击下一个,直到两张图片以相同的方向显示。

关于android - setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14763204/

有关android - setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频的更多相关文章

  1. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  2. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  5. ruby-on-rails - 在事件记录库中添加某些方法的首选方法是什么? - 2

    我想创建一个模块,为从事件记录库继承的类提供一些通用方法。以下是我们可以实现的两种方式。1)moduleCommentabledefself.extended(base)base.class_evaldoincludeInstanceMethodsextendClassMethodsendendmoduleClassMethodsdeftest_commentable_classmethodputs'testclassmethod'endendmoduleInstanceMethodsdeftest_commentable_instance_methodputs'testinstanc

  6. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  7. ruby - 生成X和Y之间的随机数,不包括某些数字 - 2

    有没有办法在ruby​​中生成介于1-100但不包括20、30和40之间的随机数?我可以做类似的事情defrandom_numberrandom_number=rand(100)whilerandom_number==20||30||40random_number=rand(100)endreturnrandom_numberend...但这似乎不是很有效(再加上那个特定的例子可能根本行不通)。有没有更简单的方法?任何帮助深表感谢! 最佳答案 创建一个1到100的数组。从该数组中删除不需要的元素。然后从数组中选择一个随机数。([*1

  8. ruby-on-rails - 仅在某些页面上使用 rails_xss - 2

    我正在使用rails_xss运行Rails2.3.14插入。我有另一个用于创建管理仪表板View的插件。我的问题是rails_xss正在转义我的仪表板插件生成的所有HTML。有没有一种方法可以将rails_xss配置为不转义匹配example.com/admin或基于目录(app/views/admin)或任何类似的页面结果一样吗? 最佳答案 更新仪表板生成插件以使用raw或html_safe进行内容输出可能会更简单。 关于ruby-on-rails-仅在某些页面上使用rails_xss

  9. python - 为什么某些正则表达式引擎会在单个输入字符串中匹配 .* 两次? - 2

    许多正则表达式引擎在单行字符串中匹配.*两次,例如,在执行基于正则表达式的字符串替换时:根据定义,第一个匹配项是整个(单行)字符串,正如预期的那样。在许多引擎中有第二个匹配项,即空字符串;也就是说,即使第一个匹配项消耗了整个输入字符串,.*仍会再次匹配,然后匹配输入字符串末尾的空字符串。注意:要确保只找到一个匹配项,请使用^.*我的问题是:这种行为有充分的理由吗?一旦输入字符串被完全使用,我不希望再次尝试找到匹配项。除了反复试验之外,您能否从支持的文档/正则表达式方言/标准中收集到哪些引擎表现出这种行为?更新:revo'shelpfulanswer解释当前行为的方式;至于潜在的原因,请

  10. ruby-on-rails - RubyMine 将刚刚创建的工作项目的某些行突出显示为错误 - 2

    我是RubyonRails的新手,因为我来自Java世界并在IntelliJIdea工作,所以我开始使用RubyMine进行RoR开发。我已经生成了新项目并在RubyMine中打开了它。一切都编译并工作正常,但RubyMine将某些行突出显示为错误(但实际上没有错误)。例如application_controller.rb中的代码protect_from_forgerywith::exception'with'后的分号突出显示为错误,后面说'Expected:;或行尾'类似的错误高亮在项目中很多地方我想可能是不同的Ruby和Rails版本存在一些问题?或者RubyMine不支持某种新语

随机推荐