首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在三星S2上使用QUALITY_HIGH调用QUALITY_HIGH()时崩溃

在三星S2上使用QUALITY_HIGH调用QUALITY_HIGH()时崩溃
EN

Stack Overflow用户
提问于 2013-11-06 08:56:48
回答 2查看 1.5K关注 0票数 0

我正试图使用MediaRecorder对象以我的设备三星S2上的最高质量录制视频。但是,用我当前的代码,我在调用MediaRecorder.close()时会看到挂起,然后电话崩溃(LOGCAT:http://pastebin.com/yzqWqta3)

当CamcorderProfile设置为QUALITY_LOW时,我有一段代码可以工作,但是相同的代码会导致设备崩溃(需要功率循环才能恢复),而Camcorder配置文件被更改为QUALITY_HIGH。

代码语言:javascript
复制
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);

然后将其设置为记录器对象;

代码语言:javascript
复制
recorder.setProfile(camcorderProfile);

但是,以下内容会在调用MediaRecorder.stop()之后引发崩溃;

代码语言:javascript
复制
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

我的代码是基于这个项目(来自Android guy - Shawn ) https://github.com/vanevery/Custom-Video-Capture-with-Preview.git的。

原始格式的代码还导致记录器在Mediarecorder#start()上崩溃(LOGCAT:Mediarecorder#start()),我不得不使用这个线程中的建议来应用三星的特定修复程序;“q不能在Galaxy上录制Hi Def视频";http://forum.xda-developers.com/showthread.php?t=1104970&page=8

代码语言:javascript
复制
 Camera.Parameters p = camera.getParameters();

 // http://forum.xda-developers.com/showthread.php?t=1104970&page=8
 p.set( "cam_mode", 1 ); // green mess in video file without this
 p.setFocusMode(Parameters.FOCUS_MODE_AUTO);    // works  

 p.setPreviewSize(camcorderProfile.videoFrameWidth, camcorderProfile.videoFrameHeight);
 p.setPreviewFrameRate(camcorderProfile.videoFrameRate);

 camera.setParameters(p);
 camera.setDisplayOrientation(0);

 camera.setPreviewDisplay(holder);
 camera.startPreview();

但是,使用上面的代码,我要么会崩溃,要么应用程序停止响应;LOGCAT http://pastebin.com/D7Ap7yQZ

1920/1080或QUALITY_HIGH一般支持的QUALITY_HIGH检查设备支持

这款股票相机应用程序支持在1920x1080年录制它称之为“超精细”的东西,但分辨率是显式设定的,我想合适的参数是从已知的良好设置中推断出来的,而不是从QUALITY_HIGH CamcorderProfile中推断出来的。

然而,游戏商店中有支持1920x1080的其他应用程序,第三方(可能无法访问三星的专有文档)在S2上工作,因此应该可以通过显式设置每个参数来复制QUALITY_HIGH,或者揭露三星的无端嘲弄。

设备内省

三星SII似乎支持使用QUALITY_HIGH;

代码语言:javascript
复制
Log.v(LOGTAG, "has Profile QUALITY HIGH? : "+ 
CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_HIGH));

返回这个;

代码语言:javascript
复制
V/VIDEOCAPTURE( 7897): has Profile QUALITY HIGH? : true

Android文档表明,"QUALITY_HIGH“是一个预定义的概要文件,表示与最高可用分辨率相对应的级别。

int QUALITY_HIGH质量级别对应于最高的可用分辨率。

备注

  1. 我今天早上让工厂重新设置了电话
  2. 我尝试了另一种SD卡,并在同一个地方得到了同样的崩溃。
  3. 这可能是硬件问题。我还没有找到另一个三星S2进行测试。

相关的SO问题

还有其他与在三星S2上录制高质量视频有关的问题,但是没有一个有答案,所以我创建了这个来捕捉我的日志和代码。

"用Android MediaRecorder录制的视频在三星Galaxy S2上被破坏“

三星Galaxy ()发行。(腐败视频)

可能解决办法

这个问题和答案似乎解决了同样的问题,但我不能使用给出的代码示例来复制它们的结果;高分辨率产生绿色闪烁视频

有一个指向xda上的线程的链接,其中有一些详细的分析。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 12:23:45

我设法从Shawn的"Android“中获得了示例代码,得到了这里这里的一点帮助

主要的问题是使用三星无文件的参数垃圾,和设置PreviewSize相同的视频帧大小;评论如下;

代码语言:javascript
复制
Camera.Parameters p = camera.getParameters();

// Samsung Galaxy hack for HD video
p.set("cam_mode", 1);

// It is required to set the previewSize tto the same as the Video frame height x width
p.setPreviewSize(camcorderProfile.videoFrameWidth,
                    camcorderProfile.videoFrameHeight);


...</snip>

camera.setParameters(p);

下面是示例代码(由于模拟器的限制,它只能在真实设备上工作)

https://github.com/tolland/Custom-Video-Capture-with-Preview

生成具有这些属性的文件;

代码语言:javascript
复制
$ mplayer -vo null -ao null -frames 0 -identify videocapture-2024713075.3gp | egrep "(ID_VID)"
...
ID_VIDEO_ID=0
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=13773800
ID_VIDEO_WIDTH=1920
ID_VIDEO_HEIGHT=1080
ID_VIDEO_FPS=24.750
ID_VIDEO_ASPECT=1.7778
ID_VIDEO_CODEC=ffh264
票数 0
EN

Stack Overflow用户

发布于 2013-11-06 09:01:09

可能是你的三星S2不支持高质量!

请参阅此帖子

有一种方法可以迭代支持的概要文件,在设置质量之前尝试这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19807643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档