IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    MediaCodec实现视频音视频分离、合并、编辑、压缩

    LengYue\'s Blog发表于 2018-11-05 17:16:07
    love 0
    介绍 android上视频操作,主要有OpenGL、FFmpeg、以及4.1之后的MediaCodec,MediaCodec是Android上一个用来直接访问设备的媒体编解码器的接口,因为有硬件加速的效果,所以使用起来无论是效率,还是耗时,都会比FFmpeg好很多,今天了着重谈谈MediaCodec的使用。 与MediaCodec相关,经常配合一起使用的媒体处理类主要有: MediaExtractor用于音视频分路,和MediaMuxer正好是反过程。MediaFormat用于描述多媒体数据的格式。MediaRecorder用于录像+压缩编码,生成编码好的文件如mp4, 3gpp,视频主要是用于录制Camera preview。MediaPlayer用于播放压缩编码后的音视频文件。AudioRecord用于录制PCM数据。AudioTrack用于播放PCM数据 音视频分离 视频的分离和合成主要是用MediaExtractor和MediaMuxer这两个类,来处理视频中的视频信道和音频信道的拆分和组合。 逻辑大概如下: 1.初始化对象,设置源文件 var extractor = MediaExtractor() extractor.setDataSource(videoPath.absolutePath) 2.获取要追踪的TrackIndex 信道track index //获得信道数 val trackCount = extractor.trackCount var videoTrack = -1 var audioTrack = -1 for (i in 0 until trackCount) { val trackFormat = extractor.getTrackFormat(i) val format = trackFormat.getString(MediaFormat.KEY_MIME) //视频信道 if (format.startsWith("video/")) { videoTrack = i } if (format.startsWith("audio/")) { audioTrack = i } } 打开MediaFormat可以看到所有支持的mime


沪ICP备19023445号-2号
友情链接