首页
学习
活动
专区
圈层
工具
发布

Android用MediaExtractor和MediaMuxer合成音视频

需求: 将视频一的音频提取出来,视频二的视频图像提取出来,然后把它们合成新的视频。...然后分别对它们进行操作等; MediaMuxer是用于复用基本流的,用它可以将音频和视频合成,目前支持输出MP4,Webm和3GP格式的视频,在Android7.0以后支持多路复用帧的MP4。...开始搞: 1.提取音视频: 我们将视频一的路径通过setDataSource方法设置给MediaExtractor对象,然后通过方法getTrackCount获取到该视频的轨道数,接着循环轨道数,此时我们可以通过...方法设置给MediaMuxer对象,这里有个小细节需要注意,我们需要记录两个音频轨,一个是原视频的(旧轨道),一个是将来合成的视频的(新轨道),之后会用到。...2.合成: 那么到这里,视频一的音频和视频二的视频图像都已经设置给MediaMuxer对象了,我们就可以合成啦,还记得我们在找音频和视频的时候记录下的新旧轨道吧,现在通过MediaExtractor对象的

3.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    音视频合成的云边缘计算实现

    今天与大家分享的内容是三体云服务器在音视频合成的元边缘计算方面的发展历程。...这次演讲的内容主要分为四部分:第一是音视频合成的相关的一些解释,为后面做云端分散计算进行铺垫;第二是音视频合成整链路的基本结构;第三是音视频合成计算的发展历程;最后是三体云在国内、国外一些案例的结构模型...音视频合成的相关解释 1.1 音频合成 音视频合成从文字上解释就是将发言者的声音通过混音器合成之后再输出的过程,也称之为混音。合成器可以是硬件也可以是软件,在服务器结构里不强调什么是硬件和软件的。...音视频合成计算的发展历程 3.1 音视频合成计算的第一阶段 这张图就是音视频合成的第一阶段模型,在2017年三体云成立之初,服务器结构全部都是以这种方式进行接入的。...3.2 音视频合成计算的第二阶段 通过第一阶段后来看一下发展的第二个历程。在音视频合成的第二阶段,就只有一个三线服务器了,而且是红色的标识,它是参与中心计算的。

    1.7K30

    【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】六、FFmpeg简单合成MP4:视屏解封与重新封装

    教程代码:【Github传送门】 目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播放:音视频同步 4,音视频解封和封装:生成一个MP4...音视频硬编码:生成一个MP4 三、Android FFmpeg音视频解码篇 1,FFmpeg so库编译 2,Android 引入FFmpeg 3,Android FFmpeg视频解码播放 4,Android...FFmpeg+OpenSL ES音频解码播放 5,Android FFmpeg+OpenGL ES播放视频 6,Android FFmpeg简单合成MP4:视屏解封与重新封装 7,Android FFmpeg...当然了,在了解如何编码之前,先了解如何对编码好的音视频进行封装,会有事半功倍的效果。 在《音视频解封和封装:生成一个MP4》中使用了 Android 的原生功能,实现了对音视频的重打包。...FFmpeg 中的时间单位 我们知道,每一帧音视频数据都有其对应的时间戳,根据这个时间戳就可以实现对音视频播放的控制。 FFmpeg 中的时间戳并不是我们实际中的时间,它是一个特别的数值。

    1.2K20

    【Android 音视频开发:FFmpeg音视频编解码篇】二、Android 引入FFmpeg

    教程代码:【Github传送门】 目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播放:音视频同步 4,音视频解封和封装:生成一个MP4...音视频硬编码:生成一个MP4 三、Android FFmpeg音视频解码篇 1,FFmpeg so库编译 2,Android 引入FFmpeg 3,Android FFmpeg视频解码播放 4,Android...FFmpeg+OpenSL ES音频解码播放 5,Android FFmpeg+OpenGL ES播放视频 6,Android FFmpeg简单合成MP4:视屏解封与重新封装 7,Android FFmpeg...在方法中,使用 FFmpeg 提供的方法 av_codec_next,获取到 FFmpeg 的编解码器,然后通过循环遍历,将所有的音视频编解码器信息拼接起来,最后返回给 Java 层。...如果一切正常,App运行后,就会显示出 FFmpeg 音视频编解码器的信息。

    3K11

    Android FFmpeg音视频编码(十六)

    前言 上一章,我们了解ffmpeg的解封装,解码过程,这一章我们来了解一下ffmpeg是怎样进行编码,和封装工作的,工作流程如下图所示: [mtkxdodnko.png] 音视频为什么需要编码?...音视频编码主要是为了做压缩,如果音视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。...FFmpeg 音视频编码流程 [qiy0yqu33u.png] FFmpeg音视频编码 通过上文,我们知道每一份音视频数据在被封装文件前主要经过了两个关键步骤,分别是编码和封装。...//写文件尾 av_write_trailer(pFormatCtx); 小结: 至此,我们了解在Android中使用ffmpeg对音视频文件进行编码的具体过程,有兴趣的读者建议通过实践加深对使用

    2.2K60

    【Android 音视频开发:FFmpeg音视频编解码篇】三、Android FFmpeg视频解码播放

    教程代码:【Github传送门】 目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播放:音视频同步 4,音视频解封和封装:生成一个MP4...音视频硬编码:生成一个MP4 三、Android FFmpeg音视频解码篇 1,FFmpeg so库编译 2,Android 引入FFmpeg 3,Android FFmpeg视频解码播放 4,Android...FFmpeg+OpenSL ES音频解码播放 5,Android FFmpeg+OpenGL ES播放视频 6,Android FFmpeg简单合成MP4:视屏解封与重新封装 7,Android FFmpeg...一、FFmpeg 相关库简介 在 上一篇文章 中,把 FFmpeg 相关的库都引入到 Android 工程中了,有以下几个库: 库 介绍 avcodec 音视频编解码核心库 avformat 音视频容器格式的封装和解析...,所以,要想获取到正确的音视频数据,就需要先获取到对应的索引。

    3.7K20

    干货 | 移动端使用OpenGL转场特效的音视频合成应用

    本文将会介绍如何使用移动端原生API,将图片添加转场特效并且最终合成为视频的基本流程。 一、音视频基础知识 我们经常会和视频打交道,最常见的就是MP4格式的视频。...API 2.1 Android端和使用流程及相关API介绍 如果想要给图片添加转场特效并且合成为视频,需要使用OpenGL对图片进行渲染,搭配自定义的转场着色器,先让图片"动起来"。...2.1.3 MediaMuxer MediaMuxer是Android平台的音视频合成工具,上面我们介绍了MediaCodec可以编码数据,EGL环境可以让OpenGL程序将绘制的内容渲染到MediaCodec...接下来开始介绍合成的流程和具体API的使用。 3.1 音视频基础API 在合成的过程中,我们使用到了AVAssetWriter这个类。...然后分别介绍了Android和iOS这两个移动平台音视频编解码API,利用这些平台自带的API,我们可以将OpenGL渲染的画面编码成音视频文件。

    1.2K11

    【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】七、Android FFmpeg 视频编码

    本文你可以了解到 如何使用 FFmepg 对编辑好的视频进行重新编码,生成可以播放的音视频文件。 写在前面 本文是音视频系列文章的最后一篇了,也是拖了最久的一篇(懒癌发作-_-!!)...在上一篇文章中,介绍了如何对音视频文件进行解封和重新封装,这个过程不涉及音视频的解码和编码,也就是没有对音视频进行编辑,这无法满足日常的开发需求。 因此,本文将填上编辑过程的空缺,为本系列画上句号。...说明: 本文将主要讲音视频的 编码 知识,由于整个过程涉及到解码、OpenGL 渲染 这两个前面介绍过的知识点,我们将复用之前封装好的工具,并在一些特殊地方根据编码的需要做一些适配。...定义合成器 Synthesizer。...// 监听解码状态 m_audio_decoder->SetStateReceiver(this); } 可以看到,解码流程和以前几乎时一模一样的,三个不一样的地方是: 需要告诉解码器,这是合成过程

    1.9K20

    【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】

    一、渲染流程介绍 在 Java 层,Android 已经为我们提供了 GLSurfaceView 用于 OpenGL ES 的渲染,我们不必关心 OpenGL ES 中关于 EGL 部分的内容,也无需关注...在 NDK 层,就没有那么幸运了,Android 没有为我们提供封装好 OpenGL ES 工具,所以想要使用 OpenGL ES ,一切就只有从头做起了。...渲染流程 在【Android FFmpeg视频解码播放】中,我们建立了 FFMpeg 解码线程,并且将解码数据输出到本地窗口进行渲染,只用到了一个线程。...m_egl_cxt = EGL_NO_CONTEXT; m_egl_cfg = NULL; } 说明一下,EGL 可以既可以创建前台渲染表面,也可以创建离屏渲染表面,离屏渲染主要用于后面合成视频的时候使用...m_window_height); glViewport(0, 0, m_window_width, m_window_height); } 可以看到,ANativeWindow 窗口的初始化和《Android

    2.4K30
    领券