在安卓中使用FFmpeg录制摄像头的视频

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

添加依赖

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

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

使用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");

参数的含义和作用:

  • -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 可以根据需求灵活配置,一切以实际为准,值越大视频就越大,找一个合适的值即可。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Knife4j的原理及应用详解(一)

本系列文章简介: 在当今快速发展的软件开发领域,API(Application Programming Interface,应用程序编程接口)作为不同软件应用之间通信的桥梁,其重要性日益凸显。随着微服务架构的兴起,API的数量…

ARM/Linux嵌入式面经(十):极氪

开篇强调两个事情: pdf文件都在百度网盘群:911289806一定要把超链接里面的文章看了,那都是为了你们写的。老板!!!现在多学点,涨个2k工资,真的很值得。要不吃学习的苦,要不吃生活的苦。 1. 自我介绍 专开新篇,等我! 2. 项目介绍,提问 专开新篇,等我! 3. SPI通信和…

A股本周在3000点以下继续筑底,本周依然继续探底?

夜已深,市场传来了3个浓烈的消息,炸锅了,恐有大事发生,马上告诉所有人: 消息面: 1、中国经济周刊首席评论员钮文新称:不要等中小投资者都彻底希望,销户离场了,才发现该…

【APK】Unity出android包,报错 Gradle build failed.See the Console for details

参考大佬的博客:报错:Gradle build failed.See the Console for details.(已解决)_starting a gradle daemon, 1 incompatible daemon co-CSDN博客 本地出Android包,Build失败 解决办法: 1.下载一个低版本…

python怎么定义全局变量?如何使用全局变量?

许多小伙伴们在学习 python 的函数的时候会遇到这两个问题,那就是变量的作用域与全局变量的使用。那么什么是全局变量呢?python 怎么定义全局变量?通过本篇文章小编讲给你听。 首先得知道,什么是全局变量,什么是局部…

C/C++服务器基础(网络、协议、数据库)

Socket Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。它可以看成是两个网络应用程序进行通信时,各自通信连接中的端点。Socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用…

c++语法之缺省参数

缺省参数通俗来说就是一个函数里面有初值的参数。有初值那么就可以不传参。 基础语法 缺省分为全缺省和半缺省 全缺省 我们来看它的基础语法,我们以add函数为例: 语法基础就是在给要规定成缺省参数的变量后面一个值 我们可以看到给add传参就会使用默认的数据。…

MySQL EXPLAIN 中的 type 和 ref 字段

在 MySQL 中,EXPLAIN 语句用于分析 SQL 查询的执行计划。EXPLAIN 输出的结果中包含多个字段,其中 type 和 ref 字段是理解查询执行方式的重要部分。 type 字段 type 字段表示 MySQL 在查询过程中使用的访问类型,反映了查询的效率。访问类型从…

跨语言的智能:在多种编程环境中部署Mojo模型

跨语言的智能:在多种编程环境中部署Mojo模型 在当今的软件开发领域,多样化的编程语言和技术栈共存。Mojo模型,作为H2O.ai提供的一种模型部署格式,允许机器学习模型在不同的编程环境中运行,无需依赖原始的模型训练环境…

精准选择广告工具,提升推广效果

在考虑使用巨量引擎之前,我们首先要明白它的本质。巨量引擎是一个付费广告平台,包含了多种推广工具,如巨量ID、巨量千川、巨量本地推,以及企业蓝V等。很多人希望通过这个平台提升抖音账号的流量和曝光度,但真正有效的流…

Failed to detect a default CUDA architecture 的参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04 一、问题描述 编译调用CUDA的程序时,遇到如下报错: -- The CUDA compiler identification is unknown CMake Error at /usr/local/share/cmake…

刷题——输出二叉树的右视图

输出二叉树的右视图_牛客题霸_牛客网 两个考点: 给出前序和后续遍历的二叉树,构建二叉树 二叉树构建后,输出右视图 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定…

uniapp版即时通讯软件 IM社交交友聊天系统 语音视频通话双端APP 聊天交友APP源码 (含搭建教程)

修复音视频(官方团队插件,无二次费用),文件发送,公告,签到,发现页,朋友圈删除,轮询客服,马甲等 可内嵌第三方网页连接,后台添加,带完…

从零开始做题:好怪哦

题目 给出一个压缩文件 解题 方法1 01Edit打开,发现是个反着的压缩包(末尾倒着的PK头) import os# 目标目录路径 # target_directory /home/ai001/alpaca-lora# 切换到目标目录 # os.chdir(target_directory)# 打印当前工作目录以确认…

MySQL之MySQL用户工具(二)

MySQL用户工具 SQL实用集 服务器本身也内置有一系列免费的附加组件和实用集可以使用;其中一些确实相当强大。 1.common_schema Shlomi Noach的common_schema享目是一套针对服务器脚本话和管理的强大的代码和视图。common_schema对于MySQL好比jQuery对于JavaScript.2.mysql-s…

1326:【例7.5】 取余运算(mod)

【题目描述】 输入b,p,kb,p,k的值,求bpmodkbpmodk的值。其中b,p,kkb,p,kk为长整型数。 【输入】 输入b,p,kb,p,k的值。 【…

如何使一个盒子水平垂直居中(常用的)

目录 1. 使用Flex布局 2. 使用Grid布局 3.绝对定位 负外边距 (必须知晓盒子的具体大小) 4.绝对定位外边距 auto 5.绝对定位 transform (无须知晓盒子的具体大小) 1. 使用Flex布局 如何实现: 在父元素上添加: display: flex; align-items: center…

如何监控和优化 PostgreSQL 中的连接池使用?

文章目录 一、连接池的基本概念二、监控 PostgreSQL 连接池使用的重要性(一)性能优化(二)资源管理(三)故障排查 三、PostgreSQL 连接池监控指标(一)活跃连接数(二&#x…

代码随想录-DAY⑤-哈希表——leetcode 242 | 349 | 202

242 思路 先遍历字符串1, 记录每个字符的个数, 然后遍历字符串2, 挨个减去字符个数, 出现小于零的个数说明字符总数不重合。 时间复杂度:O(n) 空间复杂度:O(1) 代码 class Solution { public:bool isA…

适合宠物饮水机的光电传感器有哪些

如今,随着越来越多的人选择养宠物,宠物饮水机作为一种便捷的饮水解决方案日益受到欢迎。为了确保宠物随时能够获得足够的水源,宠物饮水机通常配备了先进的光电液位传感器技术。 光电液位传感器在宠物饮水机中起着关键作用,主要用…