在安卓中使用FFmpeg录制摄像头的视频并保存到本地MP4文件

Android 音频压缩功能之Ffmpeg 最近发现网上的压缩功能代码很多都是无法使用的,都是工具类的居多,安卓原生中实现音频压缩的案例搜索了很久还是没有从0到1很容易上手的博客。压缩本地音频的博客好少啊。 阅读详情
AI摘要

在移动应用开发中,有时需用设备摄像头录制视频并精确控制。FFmpeg是强大的多媒体处理工具,可满足此需求。介绍了安卓平台添加FFmpeg依赖的仓库地址,还给出使用FFmpeg录制视频的命令及参数含义,同时提醒参数顺序不能随意更改。

在移动应用开发中,有时需要利用设备的摄像头录制视频,并且希望在录制过程中能够精确控制视频的质量、格式和时长。FFmpeg作为一个强大的多媒体处理工具,提供了广泛的功能和选项,能够帮助我们实现这样的需求。

添加依赖

在安卓平台上,可以使用 com.arthenica:mobile-ffmpeg-full 库来实现这一目标。

implementation 'com.arthenica:mobile-ffmpeg-full:4.4'

仓库地址 :https://github.com/tanersener/mobile-ffmpeg

使用下面这个库吧,是上面这个库的精简版,而且上面这个不维护了,下面这个编译出来会比上面减少内存10M左右,实测 同一个APP 一个打包出来是121M 一个是109M

仓库地址:https://github.com/arthenica/ffmpeg-kit/tree/main/android

minmin-gplhttpshttps-gplaudiovideofullfull-gpl
implementation 'com.arthenica:ffmpeg-kit-full:6.0-2'

这里的后缀是可以改的,可选值为上面表格中的,每种不同后缀 代表着支持的功能不同,在项目打包时占用的内存也不一致,比如 full 代表全功能,占用内存就比较大,选择合适的后缀即可。

比如使用min-gpl 则可以这样使用:

implementation 'com.arthenica:ffmpeg-kit-min-gpl:6.0-2'

更多 ffmpeg 的其他用法,参考上述地址文档示例

使用FFmpeg录制视频的命令

使用 ffmpeg 库
FFmpeg .execute(“-f android_camera -video_size 1280x720 -i 0:0 -r 25 -b:v 1.5M -pixel_format yuv420p -t 00:01:00 /sdcard/recorded_video.mp4”);

使用 ffmpeg-kit 库

FFmpegKit.executeAsync("-f android_camera -video_size 1280x720 -i 0:0 -r 25 -b:v 1.5M -pixel_format yuv420p -t 00:01:00 /sdcard/recorded_video.mp4",session -> {});

参数的含义和作用:

  • -f android_camera:指定输入的格式为android_camera,告诉FFmpeg从Android设备的摄像头获取视频流。

  • -video_size 1280x720:设置视频输入的分辨率为1280x720像素。取决于你的摄像头支持的分辨率,按需求来。

  • -i 0:0:指定输入文件或设备。在这里,0:0表示FFmpeg将从Android系统默认的摄像头获取视频输入。0代表设备号(通常是摄像头),0代表输入流索引(通常是视频流)。

  • -r 25:设置输出视频的帧率为25帧每秒(fps)。决定了视频每秒显示多少帧画面。

  • -b:v 1.5M:设置视频的视频比特率为1.5 Mbps(1.5兆比特每秒)。比特率决定了视频的质量和文件大小,较高的比特率通常意味着更高的视频质量和更大的文件大小。

  • -pixel_format yuv420p:设置像素格式为YUV420P。YUV420P是一种广泛用于视频编码和传输的像素格式,其中Y表示亮度分量(Luma),U和V表示色度分量(Chroma)。

  • -t 00:01:00:设置录制的视频时长为1分钟(00:01:00)。FFmpeg会在达到指定的时间后停止录制。

  • /sdcard/recorded_video.mp4:指定输出文件的路径和文件名。在这里,视频将被保存为MP4格式的文件,路径是/sdcard/recorded_video.mp4。实际路径按你需求写即可,确保有权限读写就行。

注意

在FFmpeg中 各参数的顺序不要随意更改,否则就会导致参数设置无效,导致使用默认参数,比如 -video_size 1280x720 如果放在-i 0:0的后面的话,就会不起作用,切记切记!

-t 00:01:00 是录制一分钟,到时间自动结束,当然你要想一直录制就把这个参数去掉就行,想要结束的时候调用 FFmpeg.cancel即可

-b:v 1.5M 可以根据需求灵活配置,一切以实际为准,值越大视频就越大,找一个合适的值即可。

🆗,就这些雷,我替大家踩了,下班。

使用opencv调用摄像头然后录制视频和保存文件 用 OpenCV 开发经常用到摄像头,从Camera获取图像后用OpenCV的算法进行处理,但是一般我们处理完图像之后,还需要将视频保存下来,比如保存成avi、mp4等格式。怎么保存呢?其实OpenCV有一个类cv::VideoWriter专门用来把视频保存到文件的,但VideoWriter不仅仅是将原始图像流保存到文件,它还可以对视频编码,然后以某种封装格式(比如AVI/MP4)将视频流写到文... 阅读详情

相关推荐

FFmpeg 录制桌面、麦克风、摄像头

FFmpeg 录制桌面、麦克风、摄像头前言老师要我们试试能不能用手机拍摄视频然后发送到树莓派上。可能以后要然树莓派处理视频之类。老师描述的场景好像实时的。虽然需求不明确,我们就先试试吧。我的计划是在树莓派上搭建好流媒体服务器,然后手机拍摄视频并推送到服务器。但是找了好久也找不到靠谱的可以实时拍摄视频并推送到服务器的 Android 应用。我们也不会 Android 开发。好不容器把树莓派上的 rtm

勤能补拙 1万+

集成 mobile-ffmpeg 框架执行 FFmpeg 指令 ( 兼容 Android 10 )

【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 ) https://hanshuliang.blog.csdn.net/article/details/123731092 博客源码 一、配置远程 Maven 仓库 二、配置依赖 三、Kotlin 中执行 FFmpeg 命令 四、FFmpeg 命令执行结果查看 五、源码下载

FFmpeg之二 摄像头录制保存视频, API编解码从理论到实战

摄像头录制保存视频, API编解码从理论到实战,手把手教学

薛瑄的博客 2079

FFmpeg裁剪视频在Android上的实现

代码实现:-filter:v。

qq_36428821的博客 720

Android 仿抖音之使用OpenGL实现抖音视频录制

前言 在之前写了仿抖音的第一步,就是使用OpenGL显示摄像头数据,今天这篇就是在之前的基础上来录制视频,并且对之前的代码的结构进行了简单的整理,然后进行了仿抖音的视频录制。 工程结构整理 在仿抖音的第一步中封装了ScreenFilter类来实现渲染屏幕的操作,我们都知道在抖音的视频录制过程中,可以添加很多的效果进行显示,比如说磨皮、美颜、大眼以及滤镜等效果,如果把这些效果都放在ScreenFil...

YuQing_Cat的博客 3443

如何通过FFmpeg在Android上实现音视频开发?

首先,我们集成了FFmpeg库到Android项目中,然后使用FFmpeg命令执行不同的音视频处理操作。在Android平台上进行音视频开发是一项常见的任务,而FFmpeg是一个功能强大的开源多媒体框架,它提供了处理音频和视频的丰富功能。在Android平台上进行音视频开发是一项常见的任务,而FFmpeg是一个强大的开源多媒体框架,它提供了处理音频和视频的丰富功能。首先,我们集成了FFmpeg库到Android项目中,然后使用FFmpeg命令执行不同的音视频处理操作。通过使用FFmpeg,

DevCyberX的博客 829

Android 原生不支持 MP3 格式解决方案

原生的 MediaRecorder 类在 Android 平台上无法直接将音频编码为 MP3 格式,因为 Android 的 MediaRecorder 类默认不支持 MP3 编码器。如果您需要将音频编码为 MP3 格式,您可以考虑使用第三方库或框架,例如 LAME,来实现将原始的音频数据编码为 MP3 格式。

特立独行的博客 2508

RK3568平台开发系列:探索FFmpeg在Android中的公共基础参数

本文介绍了在Android应用中引入FFmpeg库、初始化FFmpeg以及执行FFmpeg命令的步骤,并提供了一些示例代码来说明如何使用FFmpeg进行视频转码、关键帧提取和音视频合并等操作。在RK3568平台上进行Android开发时,使用FFmpeg提供的公共基础参数可以实现灵活且高效的多媒体处理。需要注意的是,本文提供的示例代码仅仅是演示了FFmpeg的一部分功能,FFmpeg具有非常丰富的功能和参数选项,开发者可以根据自己的需求进行更复杂的多媒体处理操作。

PixelDyno的博客 409

【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( mobile-ffmpeg 开源项目介绍 | 集成 mobile-ffmpeg 框架 )

一、mobile-ffmpeg 开源项目、 二、集成 mobile-ffmpeg 框架

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 7114

QT在Android设备上实现FFMPEG开发: 完成拍照、MP4视频录制、rtsp推流

一、系统环境介绍 PC环境: ubuntu18.04 Android版本: 8.1 Android设备: 友善之臂 RK3399 开发板 摄像头: 罗技USB摄像头 FFMPEG版本: 4.2.2 NDK版本: R19C QT版本: 5.12 二、QT代码 关于FFMPEG库的编译、QT的环境搭建等问题,可以看上几篇文章。 代码说明: 目前代码没有整理,视频...

3769

JavaCV开发详解之27补充篇2:摄像头画面录制成多个mp4视频分片文件,支持树莓派嵌入式、安卓、linux和windows等平台摄像头画面录制视频分片文件

javacv实战专栏目录: JavaCV实战专栏文章目录(JavaCV速查手册) 前言 在上一章中《JavaCV开发详解之27:使用javacv把视频切割成多个视频分片文件,以mp4为例,把视频切割成MP4分片文件》,我们通过javacv拉取流媒体视频流的方式录制mp4切片文件。 本章在上一章基础上增加摄像头录制mp4分片文件的能力。 由于ffmpeg各个平台的摄像头调用方式不同,比如苹果需要调avfundation,windows平台是dshow等等,这章使用opencv作为摄像头采集库,兼容性会更.

eguid音视频方向博客,分享经过实践检验的硬核音视频技术。FFmpeg、openCV和JavaCV音视频和图像处理系列教程发布十周年,众多开发者的严格验证。欢迎关注,一起交流探索学习最新音视频和图像处理技术 1502

使用ffmpeg api 从linux摄像头节点 录制 mp4文件

从这篇文章,你能了解到ffmpeg的一个典型的调用流程,因为笔者水平不高,有错误欢迎指正

qq_59381730的博客 1074

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

javacv-03:录制流媒体服务器的rtsp/rtmp视频内容,保存为本地视频文件

录制流媒体服务器的rtsp/rtmp视频内容,保存为本地视频文件

xiaoyutongxue6的博客 4182

QT在Android设备上实现FFMPEG开发: 完成拍照、MP4视频录制、rtsp推流

FFMPEG是一个开源的多媒体框架,它可以用于视频编解码、音频编解码、视频录制、视频流媒体等。QT是一个跨平台的应用程序开发框架,它可以用于开发各种类型的应用程序,包括桌面应用程序、移动应用程序和嵌入式应用程序。QT支持FFMPEG,并提供了丰富的多媒体处理功能。QT在Android设备上实现FFMPEG开发可以完成拍照、MP4视频录制、rtsp推流等功能,可以应用于视频监控、视频会议、直播等场景。

走向CTO的路上... 857

FFMPEG音频视频开发:QT获取Android、Linux、Windows系统上的摄像头数据帧与声卡音频通过FFMPEG编码为MP4存储(v1.0)

一、操作系统介绍 Linux系统:ubuntu18.04 64位 Android系统:Android 8.1/9.0 windows系统:win10 QT版本:5.12 FFMPEG版本: 4.2.2 NDK:R19C 声卡: win10电脑自带声卡、罗技USB摄像头声卡、Android手机自带声卡都可以获取声音数据 摄像头: 手机摄像头、罗技USB摄像头 二、...

2565
上一篇: 技术成神之路:设计模式(三)原型模式
下一篇: 技术成神之路:设计模式(四)工厂方法模式
_蓝橙
博客等级 码龄7年 1179粉丝 174原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值