Android Multimedia实战(三)基于MediaExtractors与MediaMuxer的视频分离与合成

上篇介绍了mp4parser合成视频功能:http://blog.csdn.net/king1425/article/details/70805960 ,这篇使用Android原生API实现视频的分离与合成MediaExtractors将视频多信道的分离出来,比如声音和图像分隔出来 1. JAVA层file: frameworks/base/media/Java/Android/media/M
摘要由CSDN通过智能技术生成

上篇介绍了mp4parser合成视频功能:http://blog.csdn.net/king1425/article/details/70805960
,这篇使用Android原生API实现视频的分离与合成

MediaExtractors

将视频多信道的分离出来,比如声音和图像分隔出来,即解封装,目前只能解MP4的封装
1. JAVA层

file: frameworks/base/media/Java/Android/media/MediaExtractor.java
class: MediaExtractor

2. JNI

file:frameworks/base/media/jni/android_media_MediaExtractor.cpp
class:JMediaExtractor

3. C++

file:frameworks/av/media/libstagefright/MediaExtractor.cpp
class:MediaExtractor

MediaExtractor(C++)是MediaExtractor体系中核心,是各个extractor(eg.MPEG4Extractor)的父类,管理者.

MediaMuxer

MediaMuxer,在Android的多媒体类中,MediaMuxer用于将音频和视频进行混合生成多媒体文件。缺点是目前只能支持一个audio track和一个video track,而且仅支持mp4输出。即把H264和AAC封装为Mp4格式

https://developer.android.com/reference/android/media/MediaMuxer.html
这个是API文档介绍MediaMuxer混合器的文档。

demo示例代码
MediaMuxer和MediaExtractors视频的合成与分离

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

import java.nio.ByteBuffer;
//剪切合成类
public class VideoClip {
   
    private final static String TAG = "VideoClip";
    private MediaExtractor mMediaExtractor;
    private MediaFormat mMediaFormat;
    private MediaMuxer mMediaMuxer;
    private String mime = null;
//剪切的视频  剪切的起点  剪切的时长
    public boolean clipVideo(String url, long clipPoint, long clipDuration) {
        int videoTrackIndex = -1;
        int audioTrackIndex = -1;
        int videoMaxInputSize = 0;
        int audioMaxInputSize = 0;
        int sourceVTrack = 0;
        int sourceATrack = 0;
        long videoDuration, audioDuration;
        Log.d(TAG, ">> url : " + url
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值