Android 可以获取视频的分辨率吗?
我正在寻找一种方法来获取 Android 中任何给定视频的分辨率。除了 Android 支持的格式之外,它不必支持其他格式,但如果能支持那就太好了。如果您不确定 Android 支持的格式,请参阅此页面:
http://developer。 android.com/guide/appendix/media-formats.html
我认为使用 MediaPlayer
类可以做我想做的事情,但这似乎非常愚蠢和低效。另外,我想要一种相对较快的方法。
我的目标是 Android 3.0+,如果这有什么区别的话。 Honeycomb 还支持 .mkv 文件,尽管直到 Android 4.0 才正式支持。
I'm looking for a way to get the resolution of any given video in Android. It doesn't have to work with other formats than the ones supported in Android, but it'd be great if it did. If you're unsure of the supported formats in Android, please refer to this page:
http://developer.android.com/guide/appendix/media-formats.html
I think it's possible to do what I want using the MediaPlayer
class, but that seems incredibly stupid and inefficient. Also, I'd like a way that's relatively fast.
I'm targeting Android 3.0+, if that makes any difference. Honeycomb also supports .mkv files, although it's not officially supported until Android 4.0.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 MediaMetadataRetriever 检索有关视频文件的分辨率信息。您可以使用 extractMetadata() 方法并使用
METADATA_KEY_VIDEO_HEIGHT
和METADATA_KEY_VIDEO_WIDTH
常量。所以你会做这样的事情:You can use the MediaMetadataRetriever to retrieve resolution information about a video file. You'd use the extractMetadata() method and using the
METADATA_KEY_VIDEO_HEIGHT
andMETADATA_KEY_VIDEO_WIDTH
constants. So you'd do something like this:API 10+ 的技巧:
我们简单地从视频中获取随机帧并检测其宽度和高度。
Trick for API 10+:
We are simple taking a random frame from our video and detecting its width and height.
如果您有视频内容 URI,那么您还可以使用内容提供商查询,
例如
您可以查看以下帖子从视频物理路径获取ContentURI
If you have Video Content URI then you can also use content provider query
Like
You can check following post to get ContentURI from video Physical Path
Kotlin 扩展解决方案
这是在 Kotlin 中获取媒体文件尺寸的方法。
如果您想让它更安全(Uri.parse 可能会抛出异常),请使用此组合。其他的通常也很有用:)
这里没有必要,但通常有用的附加 Uri 扩展
Kotlin Extension Solution
Here is the way to fetch media file dimensions in Kotlin
If you want to make it safer (Uri.parse could throw exception), use this combination. The others are generally just useful as well :)
Not necessary here, but generally helpful additional Uri extensions