首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「Android音视频编码那点破事」第四章,使用MediaCodec实现H264编码

使用它你可以很容易的实现任何分辨率的视频编码,无需关心摄像头预览大小。一切都如此简单。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎Issue。   ...相信很多人在接触到断点视频录制这个需求的时候,首先会想到使用MediaRecorder,很遗憾,这个东西并不能给你很多期待,就像一开始的我一样。   ...首先,MediaRecorder并没有断点录制的API,当然你可以使用一些“小技巧”,每次录制的时候,都把MediaRecorder stop掉,然后再次初始化,这样就会生成一系列的视频,最后把它们拼接起来...对于这个问题,你可以等到MediaRecorder初始化完成才让用户点击开始录制,但是这样往往会因为等待时间过长,导致用户体验极差。   这种情况下,一个可控的视频编码器是必须的。...,最终输出mp4,或者其它封装格式)。

91620

Android平台摄像头麦克风视音频采集录像之MediaRecorder还是SmartPublisher

​技术背景在 Android 中录制摄像头采集的数据到 MP4 文件,我们可以用系统自带的MediaRecorder,也可以用第三方成熟的摄像头采集录制库,本文就两种方案,做个大概的梳理。...);这里设置了音频和视频源、输出格式、编码器、视频尺寸、帧率和输出文件路径等参数。...H.265(hevc)录制到MP4文件; 支持采集端(推送端)录像过程中,暂停录像、恢复录像;从开始录像,到录像结束均有event callback上来,网络堵塞、音视频同步均做了非常友好的处理。...MP4文件,如不一致,可自动分割到下一个文件; [参数设置]支持设置单个录像文件大小、录像路径等,并支持纯音频、纯视频、音视频录制模式; [音频转码]支持音频(PCMU/PCMA,Speex等)转AAC...MP4文件保存,到底是用MediaRecorder还是SmartPublisher?

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

    使用h5新标准MediaRecorder API在web页面进行音视频录制

    概述 Media Recorder,顾名思义是控制媒体录制的api,在原生app开发中,是一个应用广泛的api,用于在app内录制音频和视频。...事实上,随着web侧的应用越来越富媒体化,w3c也制定了相应的web标准,称为MediaRecorder API(旧称MediaStream Recording API),它给我们的web页面赋予了录制音视频的能力...录出来的是什么? 是经过标准编码后的媒体流数据,可以注入video标签,也可以打包生成文件,还可以进一步流级别的数据处理,比如画面识别、动态插入内容、播放跳转控制等等。 视频编码格式?...方法录制下来,合并成一个视频文件并保存。...除了固定的标签之外,我们还可以调取摄像头作为视频的内容。 MediaRecorder使用示例 - 摄像头版 具体过程和上面类似,只是多了一步从摄像头中获取视频,放入canvas中渲染的过程。

    22.9K100

    WebRTC网页打开摄像头并录制视频

    前面我们能打开本地摄像头,并且在网页上看到摄像头的预览图像。 本文我们使用MediaRecorder来录制视频。在网页上播放录制好的视频,并能提供下载功能。.../js/adapter-latest.js" async> video v1 用来预览 v2 用来播放录制好的视频 button 控制摄像头开启、录制,下载等等 select 选择录制用的视频格式...= document.querySelector('video#v2'); // 用来播放录制好的视频 视频支持的格式# 先预定几个可能的格式,然后一个个来判断是否支持。...() { mediaRecorder.stop(); } 播放录制好的视频# 录制好的视频内容存放在recordedBlobs。...小结# getUserMedia()开启视频拿到视频流。MediaRecorder录制视频。用Blob来播放和下载。 实现一个小的录制视频效果。视频数据缓存在对象里。

    1.7K00

    音视频基础能力之 Andoid 音频篇(二):音频录制

    例如 mp4, ogg 等文件格式。...如果您对录制格式不是很清楚的话,可以点击看下这篇文章:一文搞清多媒体格式(建议收藏)。 MediaRecorder 通常是音频、视频搭配一起使用,也可以单独使用。...MediaRecorder 的使用场景通常是本地录制,如果您没有对音频、视频流有额外的处理操作,使用这个 API 无疑是最佳的解决方案。 上图是官方提供的 MediaRecorder 运行状态图。...上文也提及到通常使用 MediaRecorder 是为了本地录制用的,所以我们这里选择MIC。 执行完这行代码,MediaRecorder 对象将进入 Initialized 状态。...2.2 数据源配置 这步主要配置音视频的编码器、容器封装格式、文件输出路径。我们这里选择了使用音频的 aac 编码,mp4 的封装格式。

    31010

    短视频源码开发,Android端短视频功能的快速实现

    三、录制视频的方式 在Android系统当中,如果需要一台Android设备来获取到一个MP4这样的视频文件的话,主流的方式一共与三种:MediaRecorder、MediaCodec+MediaMuxer...MediaRecorder:是Android系统直接提供给我们的录制类,用于短视频源码开发录制音频和视频的一个类,简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放,录制的音频文件是经过压缩的...,需要设置编码器,录制的音频文件可以用系统自带的播放器播放。...优点: 与MediaRecorder一样低功耗速度快,并且更加灵活 缺点: 支持的格式有限,兼容性问题 FFmpeg: FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案...这个组合可以实现很多功能,比如音视频文件的编辑(结合MediaExtractor),用OpenGL绘制Surface并生成mp4文件,屏幕录像以及类似Camera app里的录像功能(虽然这个用MediaRecorder

    1.2K10

    Web前端WebRTC攻略(二) 音视频设备及数据采集

    这是 WebRTC 系列的第二篇,希望可以帮助你更好的了解音视频。 一、音视频采集基本概念 在讲浏览器提供的用 JS 采集音视频 API 之前,需要先了解音视频采集的基本概念。...摄像头 用于捕捉(采集)图像和视频。 帧率 Frame rate 摄像头一秒钟采集图像的次数称为帧率。帧率越高,视频就越平滑流畅。...“轨”在多媒体中表达的就是每条轨数据都是独立的,不会与其他轨相交,如 MP4 中的音频轨、视频轨,它们在 MP4 文件中是被分别存储的。 流(Stream) 可以理解为容器。...var aBlob = new Blob( array, options ); 实现录制 浏览器为我们提供了一个录制音视频的类,即 MediaRecorder。...options:可选项,指定视频格式、编解码器、码率等相关信息,如 mimeType: ‘video/webm;codecs=vp8’。

    3.8K10

    刷抖音上瘾后,决定探究如果做一款类似抖音短视频app

    三、录制视频的方式 在Android系统当中,如果需要一台Android设备来获取到一个MP4这样的视频文件的话,主流的方式一共与三种:MediaRecorder、MediaCodec+MediaMuxer...MediaRecorder:是Android系统直接提供给我们的录制类,用于录制音频和视频的一个类,简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放,录制的音频文件是经过压缩的,...需要设置编码器,录制的音频文件可以用系统自带的播放器播放。...优点: 与MediaRecorder一样低功耗速度快,并且更加灵活 缺点: 支持的格式有限,兼容性问题 FFmpeg: FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案...这个组合可以实现很多功能,比如音视频文件的编辑(结合MediaExtractor),用OpenGL绘制Surface并生成mp4文件,屏幕录像以及类似Camera app里的录像功能(虽然这个用MediaRecorder

    2.5K30

    快速入门 WebRTC:屏幕和摄像头的录制、回放、下载

    我们会实现屏幕的录制、摄像头的录制,并且能够回放录制的内容,还支持下载。 那我们开始吧。...如果想要录制视频,需要用 MediaRecorder 的 api,它可以监听流中的数据,我们可以把获取到的数据保存到数组中。然后回放的时候设置到另一个视频的 srcObject 属性就可以了。...getUserMedia 的 api 来获取麦克风、摄像头数据,一个是用 getDisplayMedia 的 api 获取屏幕数据。...目前为止,我们已经实现了麦克风、摄像头、屏幕的录制,支持了回放和下载。...:获取屏幕的流 MediaRecorder:监听流的变化,实现录制 我们分别用前两个 api 获取到了屏幕、麦克风、摄像头的流,然后用 MediaRecorder 做了录制,把数据保存到数组中,之后生成了

    3.2K21

    通过 web 录制视频(摄像头)并上传

    1.背景 想通过 web 录制视频,并将视频上传到后端要怎么实现呢?...2.整体思路 打开摄像头 :MediaDevices.getUserMedia() 录制:使用 MediaRecorder 内存存储:创建一个 [] 数组,存放字节,再转成 blob 对象。...录制 MediaRecorder() 构造函数会创建一个对指定的 MediaStream 进行录制的 MediaRecorder 对象 var mediaRecorder = new MediaRecorder...获得录制过程中的 数据 MediaRecorder.ondataavailable 调用它用来处理 dataavailable 事件, 该事件可用于获取录制的媒体资源 (在事件的 data 属性中会提供一个可用的...; } }); } 判断其 MIME 格式能否被客户端录制 MediaRecorder.isTypeSupported()方法会判断其 MIME 格式能否被客户端录制

    2.1K30

    短视频app源码开发,短视频录制的实现

    原理说明 利用SurfaceView预览视频 利用系统自带的MediaRecorder实现短视频app源码中短视频视频的录制 实例化 设置音频输入 设置输出格式 设置视频编码格式 设置输出路径 调用prepare...()进行资源初始化 调用start()开始录制 注意: 这里的步骤先后顺序非常重要,如果对MediaRecorder不是那么熟悉,还是照着步骤写比较好 使用方法 // 录制视频 private...所有摄像头及视频录制的操作应该异步处理 初始化摄像头并预览 mCamera = Camera.open(); Log.d(TAG, "Camera.open");...mMediaRecorder = new MediaRecorder(); //释放摄像头,以便让MediaRecorder能够使用它 // 该方法源码注释中明确表明必须提前调用...播放按钮) resetProgress(); showRecordController(); //删除被放弃的视频

    1.7K30

    Android端的短视频开发,我们该如何快速实现移动端短视频功能?

    三.录制视频的方式 在Android系统当中,如果需要一台Android设备来获取到一个MP4这样的视频文件的话,主流的方式一共与三种:MediaRecorder、MediaCodec+MediaMuxer...MediaRecorder:是Android系统直接提供给我们的录制类,用于录制音频和视频的一个类,简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放,录制的音频文件是经过压缩的,...需要设置编码器,录制的音频文件可以用系统自带的播放器播放。...优点: 与MediaRecorder一样低功耗速度快,并且更加灵活 缺点: 支持的格式有限,兼容性问题 FFmpeg: FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案...这个组合可以实现很多功能,比如音视频文件的编辑(结合MediaExtractor),用OpenGL绘制Surface并生成mp4文件,屏幕录像以及类似Camera app里的录像功能(虽然这个用MediaRecorder

    2.2K20

    给Android工程师的音视频开发学习指南

    而 MediaRecorder 是基于 AudioRecorder 的 API (最终还是会创建AudioRecord 用来与 AudioFlinger 进行交互) ,它可以直接将采集到的音频数据转化为执行的编码格式...2.2 视频采集 视频采集涉及到以下几点: 检测摄像头是否可以使用; 摄像头采集到的图像是横向的,需要对采集到的图像进行一定的旋转后再进行显示; 摄像头采集时有一系列的图像大小可以选择,当采集的图像大小和手机屏幕大小比例不一致时...数据编码 4.1 音频编码 Android 中利用 AudioRecord 可以录制声音,录制出来的声音是 PCM 声音,使用三个参数来表示声音,它们是:声道数、采样位数和采样频率。...如果音频全部用 PCM 的格式进行传输,则占用带宽比较大,因此在传输之前需要对音频进行编码。 现在已经有一些广泛使用的声音格式,如:WAV、MIDI、MP3、WMA、AAC、Ogg 等等。...音视频混合 以合成 MP4 视频为例: 整体来看,合成的 MP4 文件,视频部分为 H.264 编码格式的数据,音频部分为 AAC 编码格式的数据。

    1.4K41

    Android 拍摄(横竖屏)视频的懒人之路

    其实MediaRecorder个人用的也不多,很久前用它在拍摄视频上确实趟过无视次坑,那今天就聊它吧,把它聊到躺下(ノQ益Q)ノ彡┻━┻。...今天的主题是录制视频,用的还是老式通用的Camera,不是新的camera2(这就尴尬了.....((/- -)/),反正个人秉承能用是王道的做法(懒)。...4、配置闪光灯和旋转摄像头功能。 5、配置MediaRecorder的录制参数后开始录制。 6、结束录制预览视频。...我们是在画面旋转的时候把对应的logo用属性动画也旋转了,然后得到当前的旋转角度,告诉MediaRecorder,拍摄出来的视频元信息里就带有了角度信息,播放的时候画面会就旋转为横屏或者竖屏啦。...网上那么多视频有角度信息,难道歪着看?) 测试如果说前置画面拍摄出来的视频左右翻转,用本机拍一个前置视频或者照片给他看,不然你只能接FFMPEG了。

    2.1K30

    Android开发笔记(五十七)录像录音与播放

    媒体录制MediaRecorder MediaRecorder是Android自带的录制工具,通过操纵摄像头和麦克风完成媒体录制,既可录制视频,也可单独录制音频。...其中对摄像头Camera的介绍参见《Android开发笔记(五十六)摄像头拍照》。...该方法为可选 以上六个方法用于录制音频。 setVideoSource : 设置视频来源。一般使用摄像头VideoSource.CAMERA。...setVideoSize : 设置视频的分辨率。 setVideoEncodingBitRate : 设置视频每秒录制的字节数。越大则视频越清晰。...该方法为可选 setVideoFrameRate : 设置视频每秒录制的帧数。越大则视频越连贯,当然大小也越大。该方法为可选 以上六个方法用于录制视频,如果仅是录音则不需要这五个方法。

    3.4K62

    Android相机快速使用

    前言 摄像头是移动设备的重要工具。随着移动端技术的发展,摄像头作为移动设备的图像采集工具,也变得越来越重要。不论是AR特效,计算机视觉技术,都离不开摄像头稳定高效地工作。...由于摄像头可调参数极多,又涉及硬件厂商的各种兼容性。在Android中,这并不是一个简单的工作。本文只记录一种快速使用,能够简单的预览画面,录制视频。...(MediaRecorder.AudioSource.DEFAULT); //设置文件输出格式 recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG..._4); //设置视频编码方式 recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //...在权限获得同意后,才能初始化相机相关组件,否则会直接报错 相机中有很多参数可以设置,如闪光灯,录制码率,预览尺寸等。但所有的参数设置,都需要先获取硬件的支持情况。如果硬件不支持,则可能报错。

    1K30

    工作记录,使用Uniapp开发安卓应用

    起步 项目需求:录制视频和语音,在app页面的上半部分实时显示。下半部分显示文字提示,提醒用户回答确认。最后将录制的视频提交到服务器保存。...: https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia 3.媒体流(MediaStream)  将录制的视频流通过...媒体流录制(MediaRecorder):https://developer.mozilla.org/zh-CN/docs/Web/API/MediaRecorder/MediaRecorder 用于录制媒体流...fr=aladdin H5下的录音会默认打开回声消除,最终导致的就是录制音频的时候会自动过滤设备发出的声音,导致无法正常录制全部声音。用过定义约束对象关闭回声消除。...H5 ios录制不支持webm格式(支持mp4,安卓只支持webm不支持mp4):https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder

    6.3K30
    领券