需求: 将视频一的音频提取出来,视频二的视频图像提取出来,然后把它们合成新的视频。...然后分别对它们进行操作等; MediaMuxer是用于复用基本流的,用它可以将音频和视频合成,目前支持输出MP4,Webm和3GP格式的视频,在Android7.0以后支持多路复用帧的MP4。...开始搞: 1.提取音视频: 我们将视频一的路径通过setDataSource方法设置给MediaExtractor对象,然后通过方法getTrackCount获取到该视频的轨道数,接着循环轨道数,此时我们可以通过...方法设置给MediaMuxer对象,这里有个小细节需要注意,我们需要记录两个音频轨,一个是原视频的(旧轨道),一个是将来合成的视频的(新轨道),之后会用到。...2.合成: 那么到这里,视频一的音频和视频二的视频图像都已经设置给MediaMuxer对象了,我们就可以合成啦,还记得我们在找音频和视频的时候记录下的新旧轨道吧,现在通过MediaExtractor对象的
原理 : 主要是拿到视频文件得视频流,然后拿到音频文件的音频流,根据时间戳一帧一帧的封装成一个新的视频文件 效果:音频文件和视频文件合成一个文件,合成的文件时间就是两个文件中短的时间。...源代码如下:具体看注释 #include #include android/log.h> extern "C" { #include "libavcodec/avcodec.h"...__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) extern "C" JNIEXPORT void JNICALL Java_com_zzw_ffmpegdemo_FFmpegHelper_megre...1); // LOGD("======================================\n"); // -------------------------------合成文件
今天与大家分享的内容是三体云服务器在音视频合成的元边缘计算方面的发展历程。...这次演讲的内容主要分为四部分:第一是音视频合成的相关的一些解释,为后面做云端分散计算进行铺垫;第二是音视频合成整链路的基本结构;第三是音视频合成计算的发展历程;最后是三体云在国内、国外一些案例的结构模型...音视频合成的相关解释 1.1 音频合成 音视频合成从文字上解释就是将发言者的声音通过混音器合成之后再输出的过程,也称之为混音。合成器可以是硬件也可以是软件,在服务器结构里不强调什么是硬件和软件的。...音视频合成计算的发展历程 3.1 音视频合成计算的第一阶段 这张图就是音视频合成的第一阶段模型,在2017年三体云成立之初,服务器结构全部都是以这种方式进行接入的。...3.2 音视频合成计算的第二阶段 通过第一阶段后来看一下发展的第二个历程。在音视频合成的第二阶段,就只有一个三线服务器了,而且是红色的标识,它是参与中心计算的。
那么接下来带着这些疑问往下看 MediaPlayer是客户端,是Android自带的一个多媒体播放类,这个在Android音视频——系统播放器介绍(一)里有详细介绍过,大家不了解的可以看一下。
开始爬坑 怎么办呢怎么办呢,这个时候,只能说天无绝人之路,让我发现了一个类,而且是android自带的类,它可以很好的支持英文的语音合成,这个类就是TextToSpeech。...官方文档是这样描述这个类的:从文本中合成语音,用于立即播放或创建一个声音文件。...具体描述传送门: https://developer.android.google.cn/reference/android/speech/tts/TextToSpeech.html 重要的是:这个类在...Android 1.6版本中就有了,惭愧的是我今天才知道。...,其实android本身就支持的很好了。
利用MediaCodec可以录制视频,可是可以将图片合成视频吗?之前使用ffmpeg来实现。...但是,ffmpeg却是c++写的,而且非常占用内存,虽然它是非常棒的音视频处理库,但是杀鸡焉用牛刀,所以今天就讲一下:如何利用Android API中的MediaCodec来实现图片合成视频 YUV...参考 Android MediaCodec 硬编码器封装 - https://blog.csdn.net/devil__lee/article/details/49508773 图文详解YUV420数据格式...这篇文章讲的是利用纯Android API实现的图片合成视频文件,其中我有查询到利用ffmpeg的,利用opencv/javacv的,但是这边文章介绍的方式没有引用第三方库,因此打包出来的apk文件肯定是很小的
Android本地TTS语音合成 前两天做WinForm项目中,有客户需求是加入语音提示,同事的努力下也是花了两天时间给更新上线了,由于我做的Android端用的手持PDA较多,在使用过程中如果有语音提示...,会让用户使用起来更方便些,于是这篇就主要研究下Android端的TTS语音合成。..." android:id="@+id/edttext" android:hint="请输入语音合成的文字" /> <Button android..." android:text="TTS语音合成" /> <Button android:layout_width="wrap_content"...点击安装后,我们重新打开TTS设置就会出现,选择用讯飞语音合成 ? 里面就会有中文的语音了 ?
教程代码:【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 中的时间戳并不是我们实际中的时间,它是一个特别的数值。
视频编码所谓的视频编码就是指通过特定的压缩技术,将某个视频格式文件转换成另一种视频格式文件的方式。视频流传输中最重要的编解码标准有国际电联的 H.261、H.2...
教程代码:【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 音视频编解码器的信息。
在学习Android音视频里,讲过音视频数据从哪里来,怎么获取,其实无论在哪个平台,图 像、视频最初都 是来自摄像头,而音频最初都是来自麦克风,相较于视频,其实音频是更不易于观察,那么你们知道麦克风是如何采集声音的吗...常用的编码格式有如下这两种 ·MPEG(MPEG-2、MPEG-4) ·H26X(H.263、H.264/AVC、H.265/HEVC) 1.5 封装格式 把编码后的音视频数据以一定格式封装到一个容器
Android2.3时引入流媒体框架,而流媒体框架的核心是NuPlayer。...Android4.0之后HttpLive和RTSP协议开始使用NuPlayer播放器,Android5.0(L版本)之后本地播放也开始使用NuPlayer播放器。...Android7.0(N版本)则完全去掉了Awesomeplayer。...下图为结构关系图 NuPlayer 主要用于处理流媒体播放,自然会涉及通过不同流媒体协议传输过来的数据,并有对应的解析和处理逻辑,下面看看NuPlayer的类关系图 Android层的多媒体框架...NuPlayer::Render:渲染模块(render,功能类似声卡驱动和显卡驱动),主要用于音视频渲染和同步,与NativeWindow有关。 在接下来的文章呢,也会详细讲解下这三个模块。
主要的步骤分为视频录制,音频录制,视频合成。...音视频合成采用MediaMuxer合成。 ?..., pts, 0); } } } 停止录制 audioEncodec.stop(); audioEncodec.release(); audioEncodec = null; 音视频合成...有了音视频数据,通过MediaMuxer进行合并。...It also supports muxing B-frames in MP4 since Android Nougat.
前言 上一章,我们了解ffmpeg的解封装,解码过程,这一章我们来了解一下ffmpeg是怎样进行编码,和封装工作的,工作流程如下图所示: [mtkxdodnko.png] 音视频为什么需要编码?...音视频编码主要是为了做压缩,如果音视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。...FFmpeg 音视频编码流程 [qiy0yqu33u.png] FFmpeg音视频编码 通过上文,我们知道每一份音视频数据在被封装文件前主要经过了两个关键步骤,分别是编码和封装。...//写文件尾 av_write_trailer(pFormatCtx); 小结: 至此,我们了解在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 音视频容器格式的封装和解析...,所以,要想获取到正确的音视频数据,就需要先获取到对应的索引。
本文将会介绍如何使用移动端原生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渲染的画面编码成音视频文件。
一、音视频数据流分离提取器 上篇文章,多次提到音视频数据分离提取器,在实现音视频解码器子类之前,先把这个实现了。...封装Android原生提取器 之前提过,Android原生自带有一个MediaExtractor,用于音视频数据分离和提取,接来下就基于这个,做一个支持音视频提取的工具类MMExtractor: class...> android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/...res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com...android:layout_height="200dp"/> android.support.constraint.ConstraintLayout> MainActivity.kt class
本文你可以了解到 如何使用 FFmepg 对编辑好的视频进行重新编码,生成可以播放的音视频文件。 写在前面 本文是音视频系列文章的最后一篇了,也是拖了最久的一篇(懒癌发作-_-!!)...在上一篇文章中,介绍了如何对音视频文件进行解封和重新封装,这个过程不涉及音视频的解码和编码,也就是没有对音视频进行编辑,这无法满足日常的开发需求。 因此,本文将填上编辑过程的空缺,为本系列画上句号。...说明: 本文将主要讲音视频的 编码 知识,由于整个过程涉及到解码、OpenGL 渲染 这两个前面介绍过的知识点,我们将复用之前封装好的工具,并在一些特殊地方根据编码的需要做一些适配。...定义合成器 Synthesizer。...// 监听解码状态 m_audio_decoder->SetStateReceiver(this); } 可以看到,解码流程和以前几乎时一模一样的,三个不一样的地方是: 需要告诉解码器,这是合成过程
NuPlayer的解码引入了 NuPIayerDecoderBase,这是一个基类。真正的解码器逻辑在 NuPlayerDecoder.cpp文件中,它继承自N...
一、渲染流程介绍 在 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