MediaExtractor的使用

本文介绍了如何使用MediaExtractor从mp4和flv文件中分离视频H264和音频AAC,详细阐述了将这些流转换为无adts头的格式,以及如何在处理过程中添加adts头。
摘要由CSDN通过智能技术生成

分离mp4、flv,生成视频H264/mpeg和音频mp3或aac(无adts头)

下面是应用层mediaExtractor使用,分离一mp4文件,生成h264和aac,并添加adts头文件。


import android.media.MediaExtractor;
import android.media.MediaFormat;
import android.util.Log;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;

/**
 * mp4extractor 分离器
 * 分离mp4 成h264 和 aac
 * 分别生成h264和aac文件(无adts头)
 * <p>
 * android的无法分离高profile的h264文件,这里分离的是Baseline(profile)
 * <p>
 * 合成的时候,MP4,flv,rtmp都不需要adts头
 * 合成的时候:hls,rtp,ts需要adts头
 * 所以这里分离出来的aac是没有adts头的,mediainfo读取到的音频信息是从moov中box中读取的
 */


public class MP4VideoExtractor {
   
    private static final String TAG = "MP4VideoExtractor";


    //test3.mp4  h264,aac
    public static void exactorMedia(String sdcard_path) {
        FileOutputStream videoOutputStream = null;
        FileOutputStream audioOutputStream = null;
        MediaExtractor mediaExtractor = new MediaExtractor();
        try {
            //分离的视频文件
            File videoFile = new File(sdcard_path, "output_video.h264");
            //分离的音频文件
            File audioFile = new File(sdcard_path, "output_audio.aac");
            videoOutputStream = new FileOutputStream(videoFile);
            audioOutputStream = new FileOutputStream(audioFile);
            //输入文件,也可以是网络文件
            //oxford.mp4 视频 h264/baseline  音频 aac/lc 44.1k  2 channel 128kb/s
            mediaExtractor.setDataSource(sdcard_path + "/oxford.mp4&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值