android 视频转音频,将mp4文件转换为mp3文件的方法

很多文章关于将MP4转为MP3写的都很复杂,我这里总结一个比较简单的方法。此方法有个BUG,最后再说。但整体功能比较简单可用。

一,导入第三方文件

此方法用到3个第三方库文件如下,(资源和Demo在文章最底部)

 

 

将这3个库文件导入项目的libs文件夹,并右键 Add As Library

二,写一个转换用的静态类 ChangeUtil.kt

package com.android.videotomp3
import android.util.Log
import org.mp4parser.muxer.Movie
import org.mp4parser.muxer.Track
import org.mp4parser.muxer.builder.DefaultMp4Builder
import org.mp4parser.muxer.container.mp4.MovieCreator
import org.mp4parser.muxer.tracks.AppendTrack
import java.io.RandomAccessFile
import java.util.*

/**
 * 搜索关注公众号:小众时代
 * 分享高清 PDF电子书
 * 分享数十款App 小图标,可直接用于项目
 * 分享多种 学习 娱乐 资源
 */
object ChangeUtil {
    fun changeToMp3(from:String,to:String){
        try{
            val audioTracks: MutableList<Track> = LinkedList()
            val movie = MovieCreator.build(from)
            for (t in movie.tracks) {
                if (t.handler == "soun") {
                    audioTracks.add(t)
                }
            }
            val result = Movie()
            if (audioTracks.size > 0) {
                result.addTrack(AppendTrack(*audioTracks.toTypedArray()))
            }
            val out = DefaultMp4Builder().build(result)

            try {
                val fc = RandomAccessFile(to, "rw").channel
                out.writeContainer(fc)
                fc.close()
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }catch (e:Exception){
            Log.d("ERR",e.toString())
        }
    }
}

MP4转为MP3的核心方法就是上面这个方法,内部的实现不需要过多去了解。

只要知道,changeToMp3() 这个 函数中的两个参数,第一个是要转换的mp4视频文件的绝对路径,第二个是转换后的mp3音频文件的绝对路径。

三,具体实现

经过上面两步其实转换Mp3的过程已经可以实现了。

源码还涉及到外部文件夹的建立,权限的申请,文件的拷贝等内容,全写出来篇幅过长,也不利于查看,需要的话可直接下载Demo源码。

四,BUG

经测试,从抖音上下载的视频,都可以正常保存为MP3,但是通过摄像头录像的视频,在转换为MP3时会报内存溢出,目前不知道如何解决,有高手可以给出解决方案请留言

资源地址:

链接:https://pan.baidu.com/s/11pJDJsLyebDtsu_a1IuO2A 
提取码:9999

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值