将音频与视频结合起来 - Android

2024-01-18

我正在开发一个应用程序来捕获视频和下载音频。我可以单独保存这些文件,但找不到将这些文件组合起来制作新的音频视频的方法。

视频文件为 .mp4 格式,音频为 .mp3 格式。它们的长度完全相同。

有什么办法可以合并这些文件吗?我已经尝试过,但找不到合并两个文件的方法。

我也可以用 FFMPEG 来做到这一点,但没有得到任何最好的方法来实现这一点。请帮帮我,我是安卓新手。


I think MP4解析器 https://github.com/sannies/mp4parser图书馆很适合这种情况。我在此链接中找到了以下示例代码,用于将音频和视频合并到单个 mp4 文件中Android 中的视频录制和处理 http://andrey.chernih.me/2014/06/28/video-recording-and-processing-in-android/ .

public class Mp4ParserAudioMuxer implements AudioMuxer {
    @Override
    public boolean mux(String videoFile, String audioFile, String outputFile) {
        Movie video;
        try {
            video = new MovieCreator().build(videoFile);
        } catch (RuntimeException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        Movie audio;
        try {
            audio = new MovieCreator().build(audioFile);
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } catch (NullPointerException e) {
            e.printStackTrace();
            return false;
        }

        Track audioTrack = audio.getTracks().get(0);
        video.addTrack(audioTrack);

        Container out = new DefaultMp4Builder().build(video);

        FileOutputStream fos;

        try {
            fos = new FileOutputStream(outputFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        }

        BufferedWritableFileByteChannel byteBufferByteChannel = 
            new BufferedWritableFileByteChannel(fos);

        try {
            out.writeContainer(byteBufferByteChannel);
            byteBufferByteChannel.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

如果您想通过 ffmpeg 进行操作,您可以使用静态 ffmpeg 二进制文件 https://github.com/JayH5/android-ffmpeg-cmdline/tree/master/res/raw or 你需要构建它 http://www.roman10.net/how-to-build-ffmpeg-for-android/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将音频与视频结合起来 - Android 的相关文章

随机推荐

  • 在 docker 上运行 conda 的 jupyter

    我正在使用 docker 镜像 Continumio anaconda3 并希望通过浏览器使用 conda 启动 jupyter 笔记本服务器 docker run i t p 8888 8888 continuumio anaconda3
  • 在未使用的默认成员初始值设定项中使用仍然是 odr 使用吗?

    即使任何构造函数都没有使用默认成员初始值设定项 在默认成员初始值设定项中使用仍然是 odr 使用吗 例如 这个程序是否格式错误 因为g a 是否使用了 odr 因此其定义被隐式实例化 template a
  • 加密 SQL 数据库中的密码列

    我的数据库名称密码中有一列 我只想在发布到数据库之前对密码进行哈希或加密 我的 php 提交文件中有这样的代码
  • 在 Python 中处理字符串中的转义序列

    有时 当我从文件或用户获取输入时 我会得到一个带有转义序列的字符串 我想处理转义序列与 Python 处理字符串文字中的转义序列的方式相同 https docs python org 3 reference lexical analysis
  • 在 jQuery 中创建新的(永久)CSS 样式

    我想创建一种新样式 而不仅仅是更改元素的样式属性 下面是一些示例代码来演示该问题 Create 1st element var element1 div div text element1 addClass blue body append
  • ASP.NET c# 修复函数库内自定义ConfirmMessagebox 的 OK 事件

    我们创建了一个从 C 通过 javascript 动态显示模态弹出消息的函数 它工作正常 但我们想添加一个参数 以便我们可以传递一个函数委托 或事件处理程序 如果用户按下 确定 按钮 该函数将被调用 有什么建议么 Postdata 我们不需
  • 函数调用之外的星号

    我正在尝试 python 我有一个关于星号的问题 我知道它们用于函数调用中的参数 但我见过在函数卡之外使用它们的代码片段 例如 在 5 个等级的元组中 将它们解压到变量中 例如 first middle last grades 每当我尝试在
  • Chart.js stepSize 不适用于 min

    StepSize 不考虑 min 包括小提琴 https jsfiddle net 4p93aew7 10 https jsfiddle net 4p93aew7 10 var options type line data labels R
  • 在 CSS 中为 div 使用多个 ID

    我的网站上有 3 个 DIV 元素和这个 CSS box left box middle box right a text decoration none color 000000 它似乎只致力于 box right虽然元素 有任何想法吗
  • 将动态内容放入 mail() $message 中

    我只是想整理一封简单的 HTML 电子邮件 以确认我的数据库的订单 我的 message 看起来有点像 message etc etc 我想要在 message HTML 中执行的操作是调用我的数据库 该数据库将返回类似以下内容的行 ema
  • 使用 Facelets 标记文件时出现 FileNotFoundException

    我正在尝试运行 Core JavaServer Faces 书中的示例 ch05 http horstmann com corejsf http horstmann com corejsf 登录后我收到以下消息 sections plane
  • 实现 std::basic_streambuf 子类来操作输入

    我有一个std basic streambuf导致所有输出都以大写形式写入的子类 如下所示 class upper streambuf public std streambuf public upper streambuf std stre
  • 如何从相机拍摄的照片制作缩略图?

    在我的应用程序中 我使用外部相机应用程序来制作照片并将其保存到 SD 卡 我需要这张照片的方形缩略图 我已经设法将相机发送回的缩略图裁剪成正方形 但由于我将照片保存到磁盘 因此意图是空的 而我的旧方法使图片成为正方形Bitmap cropp
  • Spring单例bean的这种设计是线程安全的吗?

    考虑以下 Spring 服务类 spring定义的作用域是Singleton 在下面的类中自动连接为字段的两个服务 bean 具有相似的结构 它们也由以下字段之一组成 春豆本身 无状态类 不可变类 等等 该模式在应用程序设计中总体采用 Se
  • AjaxControlToolkit.CommonToolkitScripts 错误

    我在我的 ASP NET 应用程序中得到以下代码
  • 回复 Gmail 线程会向我自己发送电子邮件

    文档 https developers google com apps script reference gmail gmail message replybody options https developers google com a
  • 当顶点属性数组零被禁用时,为什么 OpenGL 绘制会失败?

    我在让我的顶点着色器在 ATI 驱动程序上的 OpenGL 3 3 核心下运行时遇到了极大的困难 version 150 uniform mat4 graph matrix view matrix proj matrix uniform b
  • MySQL JOIN 与多个表和 SUMS

    我正在尝试创建一个查询 该查询将从我正在创建的计费系统的四个表中获取信息 我有以下表格 表发票 InvoiceID PK ClientID Date Status 桌面客户端 ClientID PK ClientName 表发票项目 Ite
  • 能否对 IO 操作进行排序,同时将逻辑保持在纯函数中?

    我有以下代码 它从分页 API 端点获取两页数据 我想修改query函数不断获取页面 直到找不到更多数据 因此替换take 2在下面的代码中查看 API 响应 我的问题是是否可以在不改变的情况下实现这一目标query函数到IO功能 如果是这
  • 将音频与视频结合起来 - Android

    我正在开发一个应用程序来捕获视频和下载音频 我可以单独保存这些文件 但找不到将这些文件组合起来制作新的音频视频的方法 视频文件为 mp4 格式 音频为 mp3 格式 它们的长度完全相同 有什么办法可以合并这些文件吗 我已经尝试过 但找不到合