前端多媒体处理工具——ffmpeg的使用

写在前面

在前端领域,FFmpeg 是一个非常有用的工具,它提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率切换等。可以在多种操作系统安装使用。

安装
下载FFmpeg

在网站根据对应电脑系统下载对应版本即可,windows下载下图版本。
在这里插入图片描述
下载完成后选择合适的路径存放此工具包,根据对应路径配置环境变量:

我是将工具包放在下图目录:
在这里插入图片描述
因此环境变量是这样的:
在这里插入图片描述
使用控制台输入ffmpeg -version,如果得到类似下图结果则表明配置成功:
在这里插入图片描述

配置完成后,在本篇文件主要介绍以下几个功能

  1. 基本格式转换 avi mp4 gif 等
  2. 提取视频中的音频
  3. 裁剪视频 或 音频
  4. 删除水印
  5. 添加水印

1. 基本格式转换

在这里插入图片描述

这里有一段名为tiktok.mp4的文件,我们通过使用FFmpeg将它转换为gif格式:

用法:ffmpeg -i 视频文件名 新格式视频文件名

const { execSync, exec } = require("child_process");// 1. 基本格式转换 avi mp4 gif 等
execSync("ffmpeg -i tiktok.mp4 test.gif", { stdio: "inherit" });

生成的gif结果如下:

在这里插入图片描述
当然其他格式也同样可以,如avi、MP4等都可互相转换。

2. 提取视频中音频

用法:ffmpeg -i 视频文件名 音频文件名

const { execSync, exec } = require("child_process");
// 2. 提取视频中音频
execSync("ffmpeg -i tiktok.mp4 test.mp3", { stdio: "inherit" })

结果如下:
在这里插入图片描述

3. 裁剪视频或音频

用法:ffmpeg -ss 开始时间 -to 结束时间 -i 视频/音频文件名 生成的视频/音频文件名

参数-ss:set frame size,表示设置帧长

const { execSync, exec } = require("child_process");// 3. 裁剪视频 或 音频 -ss(set frame size设置帧长) ? -to ? ...
execSync("ffmpeg -ss 5 -to 10 -i tiktok.mp4 test2.mp3", { stdio: "inherit" });

结果如下:
在这里插入图片描述

4. 删除水印

用法:ffmpeg -i 视频文件名 -vf delogo=w=水印宽:h=水印高:x=水印x位置:y=水印y位置 新视频文件名
参数-vf:video filters,表示使用视频滤镜功能。

const { execSync, exec } = require("child_process");// 4. 删除水印 -vf(video filters) delogo=w=?:h=?...
execSync("ffmpeg -i tiktok.mp4 -vf delogo=w=240:h=120:x=10:y=10 test3.mp4", {stdio: "inherit",
});

结果如下:
在这里插入图片描述

5. 添加水印

用法:ffmpeg -i 视频文件名 -vf drawtext=x=水印x位置:y=水印y位置:fontsize=水印字体大小:fontcolor=水印字体颜色:text='水印内容' 新视频文件名

const { execSync, exec } = require("child_process");// 5. 添加水印 -vf(video filters) drawtext=text=?:fontsize=?...
execSync("ffmpeg -i test3.mp4 -vf drawtext=x=30:y=30:fontsize=40:fontcolor=white:text='ffmpeg' test7.mp4",{ stdio: "inherit" }
);

结果如下:
在这里插入图片描述

6. 更多用法

ffmpeg -help查看更多用法
在这里插入图片描述
ffmpge -help filter=参数:查看参数有哪些子参数,比如这里查看添加水印时使用的参数drawtext的子参数:
在这里插入图片描述

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

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

相关文章

免费Scrum管理工具-Leangoo领歌

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 
 Leangoo领歌上手快、实施成本低,可帮助企业快速落地敏捷,提质增效、缩短周期、加速…

vue PWA serviceWorker 有新内容时,如何自动刷新内容

vue PWA serviceWorker 有新内容时,如何自动刷新内容 一、问题描述 vue 自带的 pwa 插件可以很方便管理 serviceWorker 的使用,但会有一个问题。 ServiceWorker 的运行机制是这样的: 后台检测到新版本新版 ServiceWorker 下载并安装安装完…

【MySQL】8.0新特性、窗口函数和公用表表达式

文章目录 1. 新增特性2. 移除旧特性2.1 优点2.2 缺点 3. 新特性1:窗口函数3.1 使用窗口函数前后对比3.2 窗口函数分类3.3 语法结构3.4 分类讲解3.4.1 序号函数3.4.1.1 ROW_NUMBER()函数3.4.1.2 RANK()函数3.4.1.3 DENSE_RANK()函数 3.4.2 分布函数3.4.2.1 PERCENT_R…

Qt使用QListWidget实现自定义Item效果

Q:如何在Qt库的基础上,实现自定义控件呢? A:根据官方文档回答,就是继承需实现的控件,然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何: listItem 主界面U…

linux安装新版本git2、配置github-ssh。(centos、aws)

一、安装Git 1、yum默认版本git #1.安装git sudo yum install git -y #2.确认Git已经安装成功 git --version如果要安装较新版本,可以安装一个repo ,但是我这第一次尝试失败了,执行完提示找不到git2u,ius repo也连不上。而且每次…

HTML图像标签

html文件&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图像标签学习</title> </head> <body> <img src"../resources/image/01.jpg" alt"小狗图…

通过WinSCP实现Windows给Ubuntu(Linux)虚拟机传输数据

要实现传输有几个准备工作需要做 1.在虚拟机运行工具&#xff08;VMware或者其他&#xff09;中设置网络&#xff08;或者网络适配器&#xff09;为桥接模式&#xff08;之前是NAT模式&#xff09; 2.使用ifconfig命令查看虚拟机的网络地址 3.确定虚拟机中安装了ssh 安装 sudo…

YOLOv5算法改进(17)— 手把手教你去更换损失函数(IoU/GIoU/DIoU/CIoU/EIoU/AlphaIoU/SIoU)

前言:Hello大家好,我是小哥谈。损失函数(loss function)是机器学习中用来衡量模型预测值与真实值之间差异的函数。它用于度量模型在训练过程中的性能,以便优化模型参数。在训练过程中,损失函数会根据模型的预测结果和真实标签计算出一个标量值,代表了模型预测的错误程度…

FreeRTOS_队列

目录 1. 队列简介 1.1 数据存储 1.2 多任务访问 1.3 出队阻塞 1.4 入队阻塞 1.5 队列操作过程 1.5.1 创建队列 1.5.2 向队列发送第一个消息 1.5.3 向队列发送第二个消息 1.5.4 从队列中读取消息 2. 队列结构体 3. 队列创建 3.1 函数原型 3.1.1 函数 xQueueCreate…

分类预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-LSTM数据分类预测&…

Python 创建或读取 Excel 文件

Excel是一种常用的电子表格软件&#xff0c;广泛应用于金融、商业和教育等领域。它提供了强大的数据处理和分析功能&#xff0c;可进行各种计算和公式运算&#xff0c;并能创建各种类型的图表和可视化数据。Excel的灵活性使其成为处理和管理数据的重要工具。本文将介绍如何使用…

24---WPF缓存

一、什么是缓存&#xff1a; 1.缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中&#xff0c;以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。 2.缓存就是一个临时存放区域--离用户比较近 二、作用--意义---如果系统出现故…

解决IDEA中SpringBoot项目创建多个子模块时配置文件小绿叶图标异常问题

在新建子模块下创建配置文件&#xff1a; 在子模块gateway中新建的配置文件,正常情况下配置文件左侧是小树叶标识&#xff0c;而这次新建application-dev.yml是个小树叶标识&#xff0c;bootstrap.yml是个方框。 看其他方案都是在project structure中设置&#xff0c;但未显示…

UWB安全数据通讯STS-加密、身份认证

DW3000系列才能支持UWB安全数据通讯&#xff0c;DW1000不支持 IEEE 802.15.4a没有数据通讯安全保护机制&#xff0c;IEEE 802.15.4z中指定的扩展得到增强&#xff08;在PHY/RF级别&#xff09;&#xff1a;增添了一个重要特性“扰频时间戳序列&#xff08;STS&#xff09;”&a…

【TensorFlow1.X】系列学习笔记【基础一】

【TensorFlow1.X】系列学习笔记【基础一】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【基础一】前言线性回归非线性回归逻辑回归总结 前言 本篇博主将用最简洁的代码由浅入…

KubeSphere安装mysql8

需要持久化储存数据的&#xff0c;建立有状态服务。 无状态服务是不会持久化的&#xff0c;重启就归零 KubeSphere 创建自建应用后&#xff0c;创建有状态服务&#xff0c;但是自己应用的有状态服务不能外放端口&#xff0c;需要在服务哪里删除pod&#xff0c;在创建负载指定相…

Android Studio(2022.3.1)设置阿里云源-新旧版本

新版本 #settings.gradle.ktsmaven { url uri("https://maven.aliyun.com/repository/public/") }maven { url uri("https://maven.aliyun.com/repository/google/") }maven { url uri("https://maven.aliyun.com/repository/jcenter/") }ma…

【算法|动态规划No.29】leetcode132. 分割回文串 II

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

vue3+vite中使用Lottie动画

Lottie通过读取json文件信息实现动画效果 官方文档 Lottie官网 lottie库有众多动画 选择下载Lottie JSON到项目中 安装Lottie包 pnpm add lottie-web 模板创建 <template><div class"bg"><div id"canvas" class"canvas" ref&quo…

react antd实现upload上传文件前form校验,同时请求带data

最近的需求&#xff0c;两个下拉框是必填项&#xff0c;点击上传按钮&#xff0c;如果有下拉框没选要有提示&#xff0c;如图 如果直接使用antd的Upload组件&#xff0c;一点击文件选择的窗口就打开了&#xff0c;哪怕在Button里再加点击事件&#xff0c;也只是&#xff08;几乎…