- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个使用 MediaRecorder 录制视频的应用程序,但我在 Samsung Galaxy S5 SM-G900F 上遇到低分辨率录制问题(仅此设备 - 以支持的最低视频分辨率录制在我测试过的所有其他设备上都能正常工作与)。
我首先询问相机参数(使用相机参数对象,所以 mParameters.getSupportedVideoSizes();
和 mParameters.getSupportedPreviewSizes();
)检查可用的录制和预览分辨率,S5 分别返回以下支持的视频和预览尺寸:
Video Size List: Preview Size List:
W = 1920, H = 1080
W = 1920, H = 1080 W = 1440, H = 1080
W = 1440, H = 1080 W = 1280, H = 720
W = 1280, H = 720 W = 1056, H = 864
W = 800, H = 450 W = 960, H = 720
W = 800, H = 480 W = 800, H = 480
W = 720, H = 480 W = 720, H = 480
W = 640, H = 480 W = 640, H = 480
W = 352, H = 288 W = 352, H = 288
W = 320, H = 240 W = 320, H = 240
W = 176, H = 144 W = 176, H = 144
返回的支持帧率范围是 10,000-30,000,所以我选择 10,000 作为最低记录分辨率 (10FPS)。
我选择了 S5 提供的最低分辨率,即 176(w) x 144(h)(以保持较小的视频文件大小),然后进行以下 MediaRecorder 设置...
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoFrameRate(10);
mMediaRecorder.setVideoSize(176, 144);
mMediaRecorder.setVideoEncodingBitRate(256000);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); // Preview size is also set to 176 x 144
mMediaRecorder.setOutputFile(mVideoFilename);
...然后调用 mMediaRecorder.prepare();
,然后调用 mMediaRecorder.start();
。
此代码在“Sony XPeria”、“HTC One”、“HTC One V”、“Samsung Galaxy S3”、“HTC Explorer”和许多其他设备上运行良好,运行各种 Android 版本Gingerbread 到 KitKat(我无法在 Gingerbread 上获得单独的视频大小列表)。
只有 Samsung Galaxy S5 在 176 x 144 下录制时出现问题。调用 mMediaRecorder.start();
时,录制无法开始,并显示“java.lang.RuntimeException:启动失败。 “异常。
我不知道是什么问题。所有其他录制分辨率(增加 EncodingBitRate 设置)都可以正常工作 - 只有 176 x 144 在 S5 上不起作用。
还有其他人遇到过这个问题吗?有人知道 S5 是否存在问题,导致在支持的最低视频分辨率下无法正常录制吗?还是我遗漏了一些三星“技巧”?
如有任何帮助或见解,我们将不胜感激 - 我正在为这个问题而焦头烂额!
最佳答案
我发现问题出在帧率上,而不是分辨率上。 S5 似乎在谎报它支持的预览帧率。或者,更准确地说,getSupportedPreviewFpsRange()
返回的值列表不是受支持帧速率的实际范围。
S5 从 getSupportedPreviewFpsRange()
返回 (10000, 30000),根据文档,这是设备支持的视频帧速率的范围,这意味着支持该范围内的任何帧速率(或者设备将尝试尽可能接近 mMediaRecorder.setVideoFrameRate()
中指定的速率)。
S5 的想法不同!正如我所做的那样,将帧速率设置为 10 会阻止 MediaRecorder 开始视频录制,并出现熟悉的 MediaRecorder(22664): start failed: -19
异常。
在 mMediaRecorder.setVideoFrameRate(10)
调用中,我得到一个 CameraSource(262): Requested frame rate (10) is not supported: 15,24,30
异常(exception),这意味着 15、24 和 30 是唯一支持的帧速率。如果我使用 mMediaRecorder.setVideoFrameRate(20)
,我会得到同样的异常,但如果我使用 mMediaRecorder.setVideoFrameRate(30)
,它工作正常。
我还得到一个 OMX-VENC-720p(262): Invalid entry returned from get_supported_profile_level 2130706433, 65536
异常,这似乎与 MediaRecorder 设置有关,但任何人都猜测它到底是什么意味着。
我不知道我怎么知道 15fps、24fps 和 30fps 是唯一受支持的帧速率。
如果其他人知道我可以在不被 CameraSource(262): Requested frame rate (X) is not supported: 15,24,30
异常绊倒的情况下找到它,我很想知道它是什么。
我使用的方法已在包括三星 S3 在内的数十种设备类型上证明有效,因此这个问题似乎是 S5 特有的。因此,我不得不通过首先确定该应用程序在哪部手机上运行来强制使用特定于 S5 的帧速率,这并不理想 - 感谢三星!
最后,有人知道如何/在哪里可以向三星报告这个错误吗?
关于android - 三星 Galaxy S5 无法以低分辨率/帧率录制视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552207/
我对此很陌生,我在这里的论坛上检查过答案,但我没有找到任何真正可以帮助我的答案。我正在尝试播放 res/raw 文件夹中的视频。到目前为止我已经设置了这段代码: MediaPlayer mp; @Ov
我可以播放一个视频剪辑,检测视频的结尾,然后创建一个表单,然后播放另一个视频剪辑。我的问题是,表单 react 不正确,我创建了带有提交按钮和两个单选按钮可供选择的表单。我希望让用户进行选择,验证响应
首先,我必须说我在web2py讨论组中看到过类似的内容,但我不太理解。 我使用 web2py 设置了一个数据库驱动的网站,其中的条目只是 HTML 文本。其中大多数将包含 img和/或video指向相
我正在尝试在视频 View 中播放 YouTube 视频。 我将 xml 布局如下: 代码是这样的: setContentView(R.layout.webview); VideoV
我正在开发一个需要嵌入其中的 youtube 视频播放器的 android 应用程序。我成功地从 API 获得了 RTSP 视频 URL,但是当我试图在我的 android 视频 View 中加载这个
我目前正在从事一个使用 YouTube API 的网络项目。 我完全不熟悉 API。所以每一行代码都需要付出很多努力。 使用以下代码,我可以成功检索播放列表中的项目: https://www.goog
是否可以仅使用视频 ID 和 key 使用 API V3 删除 youtube 视频?我不断收到有关“必需参数:部分”丢失的错误消息。我用服务器和浏览器 api 键试了一下这是我的代码: // $yo
所以我一直坚持这个大约一个小时左右,我就是无法让它工作。到目前为止,我一直在尝试从字符串中提取整个链接,但现在我觉得只获取视频 ID 可能更容易。 RegEx 需要从以下链接样式中获取 ID/URL,
var app = angular.module('speakout', []).config( function($sceDelegateProvider) {
我正在努力从 RSS 提要中阅读音频、视频新闻。我如何确定该 rss 是用于新闻阅读器还是用于音频或视频? 这是视频源:http://feeds.cbsnews.com/CBSNewsVideo 这是
利用python反转图片/视频 准备:一张图片/一段视频 python库:pillow,moviepy 安装库 ?
我希望在用户双击视频区域时让我的视频全屏显示,而不仅仅是在他们单击控件中的小图标时。有没有办法添加事件或其他东西来控制用户点击视频时发生的情况? 谢谢! 最佳答案 按照 Musa 的建议,附
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
我有一个公司培训视频加载到本地服务器上。我正在使用 HTML5 的视频播放来观看这些视频。该服务器无法访问网络,但我已加载 apache 并且端口 8080 对同一网络上的所有机器开放。 这些文件位于
我想混合来自 video.mp4 的视频(时长 1 分钟)和来自 audio.mp3 的音频(10 分钟持续时间)到一个持续时间为 1 分钟的输出文件中。来自 audio.mp3 的音频应该是从 4
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我正在尝试使用 peer/getUserMedia 创建一个视频 session 网络应用程序。 目前,当我将唯一 ID 发送到视频 session 时,我能够听到/看到任何加入我的 session
考虑到一段时间内的观看次数,我正在评估一种针对半自动脚本的不同方法,该脚本将对视频元数据执行操作。 简而言之,只要视频达到指标中的某个阈值,就说观看次数,它将触发某些操作。 现在要执行此操作,我将不得
我正在通过iBooks创建专门为iPad创建动态ePub电子书的网站。 它需要支持youtube视频播放,所以当我知道视频的直接路径时,我正在使用html5 标记。 有没有一种使用html5 标签嵌入
我对Android不熟悉,我想浏览youtube.com并在Webview内从网站显示视频。当前,当我尝试执行此操作时,将出现设备的浏览器,并让我使用设备浏览器浏览该站点。如果Webview不具备这种
我是一名优秀的程序员,十分优秀!