Android mp4parser 视频拼接

最近项目里面要用到视频拼接,参考网上的资料决定采用mp4parser进行视频拼接,github上有mp4parser的源码。mp4parser项目很大,这里只用到了视频拼接的部分。这里我封装了一个MyVideoSplicing类,使用时将context,被拼接视频的路径数组videoUris,输出视频文件的名字output三个参数传进去就可以了。

MyVideoSplicing.java

package com.example.recorder;

import android.content.Context;
import android.widget.Toast;

import com.coremedia.iso.boxes.Container;
import com.googlecode.mp4parser.authoring.Movie;
import com.googlecode.mp4parser.authoring.Track;
import com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder;
import com.googlecode.mp4parser.authoring.container.mp4.MovieCreator;
import com.googlecode.mp4parser.authoring.tracks.AppendTrack;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.ArrayList</
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
好的,以下是一个简单的 Android 视频压缩示例,仅供参考: 1. 添加相关依赖库 在 app/build.gradle 文件中添加以下依赖库: ``` implementation 'com.googlecode.mp4parser:isoparser:1.1.22' implementation 'com.googlecode.mp4parser:isoparser:1.1.22' implementation 'com.googlecode.mp4parser:isoparser:1.1.22' ``` 2. 获取原始视频文件路径 在压缩视频之前,需要先获取原始视频文件的路径。以下是一个简单的方法,可以在 Activity 中获取用户选择的视频文件路径: ``` private String getVideoPathFromIntent(Intent intent) { Uri uri = intent.getData(); String[] projection = {MediaStore.Video.Media.DATA}; Cursor cursor = getContentResolver().query(uri, projection, null, null, null); if (cursor != null) { int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); cursor.moveToFirst(); String path = cursor.getString(column_index); cursor.close(); return path; } return null; } ``` 3. 实现视频压缩 以下是一个简单的视频压缩方法,可以将原始视频文件压缩为指定比特率的视频: ``` private void compressVideo(String inputPath, String outputPath, int bitrate) throws IOException { // 创建文件输入流 FileInputStream inputStream = new FileInputStream(inputPath); // 创建视频轨道提取器 Movie movie = MovieCreator.build(inputStream.getChannel()); // 获取视频轨道 Track videoTrack = movie.getTracks().get(0); // 创建视频编码器 MediaCodecVideoEncoder encoder = new MediaCodecVideoEncoder(videoTrack, bitrate); // 创建视频输出流 FileOutputStream outputStream = new FileOutputStream(outputPath); // 将压缩后的视频写入输出流 encoder.encodeVideo(outputStream.getChannel()); // 关闭输入输出流 inputStream.close(); outputStream.close(); } ``` 其中,MediaCodecVideoEncoder 是一个自定义的视频编码器类,可以根据自己的需求实现。在上述示例中,我们使用了 MP4Parser 库来读取和写入 MP4 格式的视频文件。 以上是一个简单的 Android 视频压缩示例,可以根据自己的需求和技术水平进行修改和扩展。需要注意的是,视频压缩是一个复杂的过程,需要考虑到多种因素,如视频质量、压缩比、设备兼容性等,建议在实际项目中进行充分测试和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值