在响应式网站上检测移动设备支持的最大视频分辨率

6
正如标题所述,我正在寻找跨浏览器和大多数跨平台的解决方案来显示不同大小分辨率的html5视频。我的主要问题是,如果从标准/低清晰度设备访问高分辨率视频,则无法播放本机视频应用程序无法处理它。这在旧版/低预算Android设备上基本属实,这些设备具有标准或低显示分辨率。
我最好的猜测是基于设备宽度mediaquery过滤视频源文件,例如if width < 480 -->使用低分辨率视频,但这可能会排除像iphone、galaxyS2 +等能力强的高端设备。
最后,我想问是否有类似“最大视频分辨率支持”之类的查询。我知道Android API中有一些东西,但我不知道它是否可以在这种情况下使用。
以下是一些我找到的参考链接:http://www.genuitec.com/mobile/docs/encodingVideo/encodingVideo.htmlhttp://developer.android.com/guide/appendix/media-formats.html#recommendationshttp://developer.android.com/reference/android/media/CamcorderProfile.html
1个回答

2
Android建议按照这篇文章使用CamcorderProfile进行��作: http://developer.android.com/guide/appendix/media-formats.html#recommendations 他们说:
“[...] 设备可用的视频录制配置文件可以用作媒体播放功能的代理。这些配置文件可以使用自API级别8起可用的CamcorderProfile类进行检查。”
我现在也使用CamcorderProfile来检测最大的视频宽度和高度:
  CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
    Log.d(TAG, "Max Width: " + profile.videoFrameWidth);
    Log.d(TAG, "Max Height: " + profile.videoFrameHeight);
起初,我认为这不是一个很好的解决方案,因为某些设备需要在Android清单中获取使用相机权限的许可(对于我来说,这是HTC Evo 3D):

<uses-permission android:name="android.permission.CAMERA"/>

不幸的是,我也发现它不能正常工作,因为对于我的Nexus S,它说最大分辨率只能是480x720像素,但我却能够播放一个1280x720像素的视频,源自 http://source.android.com/compatibility/downloads.html#cts-media-files 更准确地说,在zip归档文件中的文件夹和文件名是: android-cts-media-1.0\bbb_short\1280x720\mp4_libx264_libfaac\bbb_short.ffmpeg.1280x720.mp4.libx264_1750kbps_30fps.libfaac_stereo_192kbps_48000Hz.mp4

可能这种方法可以帮到你。

但我会欣赏任何更适合的方法!有人知道其他方法吗?


1
这很有趣,但那段代码是Java还是JavaScript?目前我通过媒体查询部分解决了问题,为480像素以下的任何设备提供360p的低分辨率视频,但当然这不是理想的解决方案。 - Gruber
这是Java代码并且CamcorderProfile(http://developer.android.com/reference/android/media/CamcorderProfile.html)自API级别8已经可用,因此这些方法通常可以用于几乎所有设备。我必须纠正自己的错误,因为在Nexus S上无法播放比1750 kbs更高的视频码率1280x720视频,因此视频的最大分辨率为720x480(适用于我的Nexus S)。 - tsemann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接