软件分享——Bilibili缓存视频合并软件,m4s音视频合并工具

bilibili缓存下来的视频,路径android/data/tv.danmaku.bili/download
此目录是bilibili缓存的视频存放目录,是m4s格式的音频和视频文件,不能正常播放。
在这里插入图片描述
你可以使用视频合并工具ffmpeg将他们合并成一个文件,命令是

ffmpeg -i audio.m4s -i video.m4s -c:v libx264 -c:a copy -q 0 out.mp4

但是如果你有几十上百个视频呢?推荐bilibili视频批量合并工具,他会扫描指定目录下所有的m4s音频视频文件,逐个合并成可播放的视频格式
在这里插入图片描述
如果你保留了目录结构,带有entry.json。程序会自动生成视频名字。否则使用默认名字
在这里插入图片描述

下载地址
https://download.csdn.net/download/m0_60352504/87415343

Android音视频合并可以通过使用MediaMuxer类来实现。MediaMuxer类是Android SDK提供的一个用于将多个媒体流合并成一个文件的类。 以下是实现步骤: 1.创建一个MediaMuxer对象。 2.添加音视频轨道。 3.将音视频数据写入轨道。 4.释放MediaMuxer对象。 以下是示例代码: ``` public class MediaMuxerHelper { private MediaMuxer mMediaMuxer; private int mVideoTrackIndex = -1; private int mAudioTrackIndex = -1; private boolean mMuxerStarted = false; public void startMuxer(String outputFilePath) { try { mMediaMuxer = new MediaMuxer(outputFilePath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); } catch (IOException e) { e.printStackTrace(); } } public void addVideoTrack(MediaFormat videoFormat) { if (mMediaMuxer != null) { mVideoTrackIndex = mMediaMuxer.addTrack(videoFormat); startMuxerIfReady(); } } public void addAudioTrack(MediaFormat audioFormat) { if (mMediaMuxer != null) { mAudioTrackIndex = mMediaMuxer.addTrack(audioFormat); startMuxerIfReady(); } } public void writeVideoData(ByteBuffer byteBuffer, MediaCodec.BufferInfo bufferInfo) { if (mMediaMuxer != null && mVideoTrackIndex != -1) { mMediaMuxer.writeSampleData(mVideoTrackIndex, byteBuffer, bufferInfo); } } public void writeAudioData(ByteBuffer byteBuffer, MediaCodec.BufferInfo bufferInfo) { if (mMediaMuxer != null && mAudioTrackIndex != -1) { mMediaMuxer.writeSampleData(mAudioTrackIndex, byteBuffer, bufferInfo); } } public void releaseMuxer() { if (mMediaMuxer != null) { mMediaMuxer.stop(); mMediaMuxer.release(); mMediaMuxer = null; mVideoTrackIndex = -1; mAudioTrackIndex = -1; mMuxerStarted = false; } } private void startMuxerIfReady() { if (mVideoTrackIndex != -1 && mAudioTrackIndex != -1 && !mMuxerStarted) { mMediaMuxer.start(); mMuxerStarted = true; } } } ``` 在这个示例代码中,我们创建了一个MediaMuxerHelper类,该类包含了一些方法来添加音视频轨道,写入音视频数据,释放MediaMuxer对象等。在addVideoTrack()和addAudioTrack()方法中,我们分别添加了视频和音频轨道。在writeVideoData()和writeAudioData()方法中,我们将音视频数据写入轨道。 请注意,我们在添加完所有轨道后,才开始启动MediaMuxer对象。这是因为我们需要确保所有轨道都已添加,才能开始合并音视频文件。在释放MediaMuxer对象时,我们需要停止并释放MediaMuxer对象,并重置所有轨道索引和状态。 这是一个简单的示例,你可以根据你的需要进行修改和扩展。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百口可乐__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值