通过获取RGB值,使用ffmpeg生成RGB颜色的视频

2023-05-16

前台获取数据

在这里插入图片描述
第一步从前台获取需要用到的数据,包括节目名称,帧率,亮度,RGB的值。
后台拿到数据需要先对文件名称进行校验,如节目名称已存在则直接抛出异常,就不需要进行生成图片等操作,提高系统效率。

        ObjAnimationInfo objAnimationInfo = new ObjAnimationInfo();
        objAnimationInfo.setName(animationVo.getProgramName());
        objAnimationInfo.setDeviceId(animationVo.getDeviceId());
        ObjAnimationInfo item = objNodeStateMapper.findByNameAndDeviceId(objAnimationInfo.getName(),objAnimationInfo.getDeviceId());
        if (item != null){
            throw new CustomException("节目名称已存在");
        }

生成图片

生成图片时需要临时存放图片的一个路径,和图片的宽高(图片尺寸也可从前台获取),以及从前台获取的RGB值,
使用ImageUtils中的colorImage方法即可

//生成图片的工具类中的方法
    public static String colorImage(int r,int g,int b,int width,int height,String path){
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics2d=(Graphics2D) bufferedImage.getGraphics();

        graphics2d.setBackground(Color.WHITE);
        graphics2d.clearRect(0, 0, width, height);
        graphics2d.setPaint(new Color(r,g,b));
        graphics2d.fillRect(0, 0, width, height);

        String rgbString= "r" + r + "g" + g + "b" + b + System.currentTimeMillis(); //图片命名
        String filePath=path + rgbString +".png";
        File file = new File(filePath);
        try {
            ImageIO.write(bufferedImage, "png", file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return filePath;
    }

生成视频

生成视频时需要视频存放的临时路径,和之前生成的图片的路径,然后通过Ffmpeg生成视频

        String targetFile = TEMP_PATH + System.currentTimeMillis() + "convert." + EXTENSION_MP4;
        String[] inputArgs = {"-r","25","-loop","1"};//-i之前的命令
        //ffmpeg  -r 25 -loop 1   -i    ./a.bmp     -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -vframes 250 -r 25 -t 10     ./a.mp4
        String[] outputArgs = {"-pix_fmt","yuv420p","-vcodec","libx264","-b:v","600k","-r:v","25","-preset","medium","-crf","30","-vframes","250","-r","25","-t","30"}; //-i之后的命令
        try {
            FfmpegUtil.convert(FFMPEG,FFPROBE,imgPath,targetFile,inputArgs,outputArgs);
        } catch (IOException e) {
            e.printStackTrace();
        }

上传ftp

需要将视频上传ftp可以进行这一步操作,不需要上传则直接将生成视频的临时路径存入数据库
首先通过ftp工具类,连接到ftp 然后需要一个ftp中存放视频的路径,和文件名,然后将视频流进行上传

            FTPClient ftpClient = FtpUtil.connectFtpServer(FTP_IP, FTP_PORT, FTP_USERNAME, FTP_PASSWORD, "utf-8");
            ftpClient.enterLocalPassiveMode();
            charset(ftpClient);
            File ftpFile = new File(targetFile);
            in = new FileInputStream(ftpFile);
            fileName = System.currentTimeMillis() + "animation." + EXTENSION_MP4;//文件命名
            boolean flag = ftpClient.storeFile(ANIMATION_PATH + fileName, in);

视频数据存入数据库

存入数据库就很简单,构造一个实体类,将需要的数据set进实体类中,通过inset存入数据库即可

删除临时文件

//删除指定路径的文件
    public static void delFile(String filePathAndName) {
        try {
            String filePath = filePathAndName;
            filePath = filePath.toString();
            java.io.File myDelFile = new java.io.File(filePath);
            myDelFile.delete();
        } catch (Exception e) {
            System.out.println("删除文件操作出错");
            e.printStackTrace();
        }
    }

通过删除指定路径中的文件的方法,如果不上传ftp,则只需要删除临时图片的文件,上传了ftp则需要删除临时图片和临时视频

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过获取RGB值,使用ffmpeg生成RGB颜色的视频 的相关文章

  • 如何将 ffplay 作为无窗口进程运行?

    我正在运行 ffplay 作为后台进程 它向我的主 UI 进程提供图像数据 我已经设定 SDL VIDEODRIVER dummy 抑制 SDL 窗口中显示的 ffplay 视频 问题是 即使不显示视频输出窗口 ffplay 进程仍然显示为
  • 来自 http 直播 m3u8 文件的 FFMPEG mp4? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何从 http 直播 m3u8 文件中提取 mp4 我尝试了下面这个命令 ffmpeg i input file f rawvideo
  • JavaScript 中的 FFMPEG 命令

    是否可以使用如下命令 ffmpeg i video 1920 mp4 vf 比例 640 360 video 640 mp4 hide banner在纯 JavaScript 中降低视频的分辨率 例如 我有一个下拉菜单 其中有标签 所以我想
  • 使用 Python 从原始帧创建 MPEG4 视频文件

    我有一个原始视频帧源 我可以在 Python 中访问它 我想用它创建一个 MPEG4 视频 并带有 MP3 背景音乐 Python 中有哪些类型的工具和库可用于此类任务 最好我想要一个 API 我可以为其提供输出文件名 然后将各个帧作为 2
  • RGB 值作为变量

    如何在 rgb 中存储变量值 我使用这个不起作用的代码 我希望它是这样的 但不知怎的 它没有正确存储 R 将引号放在 200 左右 否则 R 也不起作用 我假设你正在使用 JavaScript 结果在 colval rgb 200 10 1
  • ffprobe/ffmpg 静音检测命令

    我正在研究流静音检测 它正在 ffmpeg 中执行以下命令 ffmpeg i http mystream com stream af silencedetect n 50dB d 0 5 f null 2 gt log txt 我想获得日志
  • 将专用 NV12 视频帧转换为 RGB

    我有一个使用 Android MediaCodec 解码的 H264 流 当我查询输出 MediaFormat 时 颜色格式为 2141391875 显然 这是一种专门的 NV12 变体 称为 HAL PIXEL FORMAT NV12 A
  • 在 R 中导入 png 文件并转换为动画(.mp4)

    我正在尝试用 R 中的几个 png 文件创建一个简短的动画 我尝试了 packagemagick但只有当我将它们保存为 gif 时它才有效 当我尝试另存为 mp4 时 它将生成一个 mp4 文件 但一旦打开它 只会显示第一张图像 我的代码是
  • C# 从视频文件的一部分中提取帧

    使用 AForge ffmpeg 包装器 您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图 请参阅以下示例 提取 avi 文件的帧 https stackoverflow com questions 178256
  • ffmpeg创建RTP流

    我正在尝试使用 ffmpeg 进行编码和流式传输 libavcodec libavformat MSVC x64 with Zeranoe builds 这是我的代码 很大程度上改编自编码示例 删除了错误处理 include stdafx
  • 如何使用 c 使用 libpng 更改 png 图像的 RGB 值?

    更改 png 图像的 rgb 值的推荐方法是什么 现在我正在使用示例代码来查看 libpng 的工作方式 它只打开一个 png 图像并写入另一个 png 图像 但是我想更改这个新图像的 RGB 值 使其变为全蓝色 绿色或红色 无论我选择什么
  • 如何使用Python将RGB565字节数组转换为RGB888字节数组?

    根据我的问题RGB888 转 RGB565 https stackoverflow com questions 61519934 how can i use opencv python to convert rgb888 to rgb565
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • 如何计算位图的平均 RGB 颜色值

    在我的 C 3 5 应用程序中 我需要获取位图的红色 绿色和蓝色通道的平均颜色值 最好不使用外部库 这可以做到吗 如果是这样 怎么办 提前致谢 尝试让事情变得更精确 位图中的每个像素都有一定的 RGB 颜色值 我想获取图像中所有像素的平均
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • MP4 到 DASH(bash 脚本)

    我有一个网站 用户可以在其中上传视频文件 我想使用 DASH 流式传输所有内容以获得自适应比特率流式传输 因此 我编写了一个 bash 脚本 由 cron 运行 将所有 mp4 文件转换为 DASH 但它无法正常工作 出了什么问题 例如 使
  • 如何从 Linux 命令行获取视频文件的分辨率(宽度和高度)?

    我一直在挖掘 mplayer mencoder 和 ffmpeg 文档 但我似乎无法想出anything 我对输出格式不是特别挑剔 因为我可以使用正则表达式将其拉出来 我只是似乎无法首先获取数据 Use ffprobe https ffmp
  • 适用于 iPhone 和 HTTP 直播的实时视频聊天

    所以一般来说 我想为 iPhone 制作一个具有视频聊天功能的应用程序 但经过多次搜索 我仍然找不到任何成功的结果 是否有任何公共或私有 API 可用于在 iPhone 上执行此操作 如果您的答案是 是 请帮助我 基本上 我想要的是读取连接
  • Alpha 混合红色、蓝色和绿色图像以生成着色为任何 RGB 值的图像?

    基本上 我有一个上下文 我无法以编程方式对图像进行着色 尽管我可以更改它的 alpha 值 通过一些实验 我发现我可以使用特定的 alpha 值对图像的红色 蓝色和绿色版本进行分层 以产生各种颜色 但是我想知道是否可以通过这种方法实现真正

随机推荐

  • 安装双系统后直接进入Ubuntu没有grub引导项

    解决问题 xff1a 安装win10 43 Ubuntu18 04双系统后 xff0c 开机直接进入Ubuntu没有grub引导项 原因 xff1a 没有为Ubuntu的启动项配置grub 如何配置 xff1f 首先在终端执行如下命令打开g
  • VNC 配置使用

    被控制的计算机系统Ubutnu18 04 xff0c 控制的计算机系统Windows10 1 下载 Download VNC Server VNC Connect 被控制的计算机下载Server版 xff0c 控制的计算机下载Viewer版
  • UTC和GMT的区别

    GMT xff1a Greenwich Mean Time 格林尼治标准时间 是以英国格林尼治天文台观测结果得出的时间 xff0c 这是英国格林尼治的当地时间 xff0c 是世界时间的标准 UT xff1a Universal Time 世
  • 基于MAML的改进方法总结

    元学习是解决小样本学习问题的重要方法之一 xff0c 现已取得较为优异的成绩 元学习方法大体上可以分为基于优化的和基于度量两种 基于度量的方法是非参数方法 xff0c 包括孪生网络 关系网络 匹配网络等 基于优化的方法是参数化方法 xff0
  • list与dict互转

    keys span class token operator 61 span span class token punctuation span span class token string 39 a 39 span span class
  • 进栈出栈操作

    首先简单输入n 代表输入数字的个数 xff0c 然后依次进栈 xff0c 再出栈输出每个数字 xff08 栈是一种先进后出的数据结构 xff09 span class token macro property span class toke
  • 指针笔记

    指针的两种写法注意 xff1a int c 61 1 int p 61 amp c 或 int p p 61 amp c xff1b 这两种写法是相等的 另外注意野指针的概念 xff1a 1 野指针的错误来源就是指针定义了以后没有初始化 x
  • Echarts中国地图根据数据对省份渲染不同的颜色

    在 setOption 里面设置 xff08 setOption官方参数及用法介绍 xff09 title span class token comment 标题设置 span legend span class token comment
  • Ubuntu22.04系统安装+显卡驱动安装

    制作Ubuntu系统启动盘 推荐rurus 选择GPT分区 xff0c UEFI引导 xff08 可以cmd运行msinfo32可以看到 xff09 Ubuntu系统卸载 关于up主里面Ubuntu引导项删除出现问题 xff0c 可以采用下
  • error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or

    error while loading shared libraries libssl so 10 cannot open shared object file No such file or directory 一 依赖文件下载地址 根据
  • ArchLinux安装(VirtualBox)

    VirtualBox配置 1 启用EFI 2 选择光驱 安装ArchLinux 1 查看是否开启EFI span class token comment ls sys firmware efi efivars span 2 查看是否能上网
  • linux查看端口状态&防火墙开放端口

    1 查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 servic
  • 【递归】_求解_斐波拉契数列

    斐波纳契数列 xff08 Fibonacci sequence xff09 是数学界十分著名的数列 有著名的兔子问题 xff0c 斐波那契数列又称 兔子数列 黄金分割数列 这个看上去很简单的数列 xff0c 却总是出现在人们的眼前 蜻蜓翅膀
  • 【JS】数组去重

    JS 数组去重 有一个数组 arr 61 a c b c e d a f e g b a g 要求去除掉数组中重复的元素 xff01 案例分析 xff1a 目标 xff1a 把旧数组里面不重复的元素选出来放到新数组中 xff0c 重复的元素
  • Win11 更新完检测不到音频设备

    打开电脑经过一番重大更新发现音频设备找不到了 xff01 xff01 一整懵 解决方案 xff1a 1 开始 搜索 设备管理器 2 展开 系统设备 3 找到 英特尔 R 智音技术音频控制器 右键点击 更新驱动程序 4 点击第二个 浏览我的计
  • python之邮件发送简易篇

    span class token comment coding utf 8 span span class token keyword import span smtplib span class token keyword from sp
  • 我犯的一个低级错误

    谨以此篇记录这个弱智的错误 2022 4 20晚 今天测试一个SpringBoot的CRUD项目时遇一个奇怪的报错 如下图 错误信息是 Releasing transactional SqlSession org apache ibatis
  • IDEA如何修改背景图片

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 修改IDEA背景图片 前言一 先来分享一下我的IDEA背景图片二 步骤总结 前言 习惯了IDEA默认的黑色与白色背景 xff0c 很多人都
  • C#关于枚举(enum)类型与整型、字符串相互转换的总结

    C 关于枚举 enum 类型与整型 字符串相互转换的总结 首先 xff0c 声明枚举类型的变量 xff1a span class token comment 除枚举类型转换成整数类型示范中修改了该代码 xff0c 其他均采用此枚举类型的声明
  • 通过获取RGB值,使用ffmpeg生成RGB颜色的视频

    前台获取数据 第一步从前台获取需要用到的数据 xff0c 包括节目名称 xff0c 帧率 xff0c 亮度 xff0c RGB的值 后台拿到数据需要先对文件名称进行校验 xff0c 如节目名称已存在则直接抛出异常 xff0c 就不需要进行生