Android 获取视频宽高

在Android开发中遇到一个问题,通过常规方式获取视频宽高始终得到固定值。为了解决这个问题,我使用MediaMetadataRetriever获取视频第一帧图片,再从图片中获取到视频的实际宽高,成功解决了当前问题。虽然横屏竖屏视频宽高固定的问题尚未深入研究,但这个临时解决方案已经能够满足需求。
摘要由CSDN通过智能技术生成

关于获取视频宽高


最近一次需求是上传视频,并根据上传视频的宽高展示横屏或者竖屏的video控件,最初是用MediaMetadataRetriever类来获取视频的宽高

// An highlighted block
	private fun measureWH() {
   
        val mmr = MediaMetadataRetriever()
        try {
   
			mmr.setDataSource(videoPath)
            val width = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)
            val height = mmr.extractMetadata(MediaMetadataRetriever.METADAT
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android视频编码是指将视频数据转换为特定格式的过程,以便于存储、传输和播放。在Android平台上,可以使用FFmpeg进行视频编码操作。 要编写一个Android视频编码的demo,可以按照以下步骤进行实现: 1. 导入FFmpeg库:将FFmpeg库添加到项目的依赖中,可以使用现成的FFmpeg库文件或在项目中集成对应的源码。 2. 配置视频参数:通过设置视频的相关参数,如分辨率、帧率、比特率等,来决定编码后视频的质量和大小。 3. 创建输入输出对象:创建输入对象来读取原始视频数据,可以是从摄像头获取的实时数据流或本地视频文件。创建输出对象用于写入编码后的视频数据。 4. 初始化编码器:通过调用FFmpeg提供的接口,初始化视频编码器,指定编码器类型和编码参数。 5. 开始编码:循环读取输入数据,将视频数据传递给编码器进行处理,并将编码后的数据写入到输出对象中。 6. 结束编码:停止循环读取输入数据,释放资源,关闭输入输出对象。并将编码后的视频数据保存到指定位置或传输给其他设备。 通过以上步骤,就可以实现一个简单的Android视频编码demo。当然,在实际的应用中,还需要考虑异常处理、界面设计等方面的内容,以提升用户体验和代码可读性。 ### 回答2: Android视频编码是指将原始的视频数据进行压缩和编码处理,以减小文件大小和传输带宽,同时保持视频画质的过程。 编写一个Android视频编码的示例程序可以按照以下步骤来实现: 1. 导入所需的库和依赖。在项目中添加Android视频编码库,例如使用FFmpeg作为视频编码的工具库。 2. 初始化编码器。创建一个编码器的实例,设置相关的参数,例如视频分辨率、帧率、比特率等。 3. 初始化输入源。获取需要编码的视频帧数据,可以是摄像头实时采集的数据,也可以从储存中读取的视频文件。 4. 编码视频帧。将输入源获取视频帧数据传递给编码器进行编码,得到压缩后的视频帧数据。 5. 输出编码结果。将编码后的视频帧数据保存到文件中或者发送到网络,以便后续的播放或传输。 6. 释放资源。在完成视频编码后,释放所有相关的资源,包括编码器和输入源。 编写Android视频编码示例的关键在于使用合适的库和工具,并对编码器和输入源进行正确的初始化和操作。同时,需要注意处理异常情况,以保证程序的稳定性和正确性。 值得注意的是,由于视频编码涉及到复杂的算法和计算过程,编写一个完整的视频编码示例可能会超过300字的限制。因此,上述只是一个简要的示例概述,具体实现可以参考相关的文档、教程或开源项目。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值