android 获取声音资源,Android从视频中提取出音频

### 前言

在`Android`开发过程中,我们偶尔会遇到需要从一个`mp4`视频文件中提取出`mp3`音频用于单独播放的需求。这里我封装了一个工具类——`SplitMediaFile`。此类可用于从一个`有声mp4视频文件`中提取出`无声mp4视频文件`和`mp3音频`文件。下面就来学习下它的使用吧

今天涉及内容:

1. 视频分离基础

2. 用户权限

3. SplitMediaFile方法简介

4. SplitMediaFile 在 Activity 中的使用

5. 效果图和项目结构图

来波生成的文件图

![](/contentImages/image/20210315/HZALKwZapJfABO7IQ7s.png)

#### 一. 视频分离基础

##### 1.1 MediaExtractor

`MediaExtractor`可用于分离视频文件的音轨和视频轨道。用`selectTrack`方法选中 `视频/音频` 轨道,然后用`readSampleData`读出数据,就可以得到一个没有声音的视频或者一个音频。

##### 1.2 MediaFormat

`MediaFormat`封装了`Media data`的描述信息,通过描述信息可以分辨`Meida data` 是一个音频还是视频。描述信息是一个键值对,可以通过`MediaFormat`的`getXX`函数获取。

通过`String mime = mediaFormat.getString(MediaFormat.KEY_MIME);`可以获得视频中分离出的轨道类型,其中常见的`mime`类型多媒体格式如下(以audio开头的是音频,以video开头的是视频):

```

“video/x-vnd.on2.vp8” - VP8 video (i.e. video in .webm)

“video/x-vnd.on2.vp9” - VP9 video (i.e. video in .webm)

“video/avc” - H.264/AVC video

“video/mp4v-es” - MPEG4 video

“video/3gpp” - H.263 video

“audio/3gpp” - AMR narrowband audio

“audio/amr-wb” - AMR wideband audio

“audio/mpeg” - MPEG1/2 audio layer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值