ffmpeg安装及使用

centos linux下安装ffmpeg

1、下载解压

wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
tar -zxvf ffmpeg-3.1.tar.gz 
2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录

cd ffmpeg-3.1
./configure --prefix=/usr/local/ffmpeg
make && make install
3、配置变量

vi /etc/profile
在最后PATH添加环境变量:
export PATH=$PATH:/usr/local/ffmpeg/bin
保存退出
查看是否生效
source /etc/profile  设置生效
4、查看版本

ffmpeg -version    查看版本
注意:

若安装过程中出现以下错误:

yasm/nasm not found or too old. Use –disable-yasm for a crippled build. If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file “config.log” produced by configure as this will help solve the problem.

需要安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make instal

以上内容参考linux下安装ffmpeg的详细教程_linux安装ffmpeg_Magicflowersbloom的博客-CSDN博客

ffmpeg常用的命令

2.1 音频转码
直接转码:

ffmpeg -i input.mp3 output.m4a
指定编码器、采样率、声道数转码:

ffmpeg -i input.mp3 -acodec aac -ac 2 -ar 44100 output.m4a
2.2 音频剪切
-ss 10指定从第10秒开始,-t 20代表剪切20秒

ffmpeg -i input.mp3 -ss 10 -t 20 cut.mp3
2.3 音频拼接
ffmpeg -i concat:"hello.mp3|world.mp3" -acodec copy -vn concat.mp3
2.4 音频混音
使用amix,参数inputs代表输入流个数,duration有longest、shortest、first三种模式,weights设置每条流音量权重占比:

ffmpeg -i hello.mp3 -i world.mp3 -filter_complex amix=inputs=2:duration=first -vn mix.mp3
使用amerge,合并成多声道输出:

ffmpeg -i hello.mp3 -i world.mp3 -filter_complex [0:a][1:a]amerge=inputs=2[aout] -map [aout] merge.mp3
2.5 空灵音效
aecho接收4个参数:in_gain (0, 1];out_gain (0, 1];delays (0 - 90000];decays (0 - 1.0]

ffmpeg -i input.mp3 -af aecho=0.8:0.8:1000:0.5 echo.mp3
2.6 惊悚音效
tremolo接收2个参数:frequency [0.1, 20000.0];depth (0, 1]

ffmpeg -i input.mp3 -af tremolo=5:0.9 tremolo.mp3
2.7 搞笑音效
搞笑音效通过调节音速实现,使用atempo:

ffmpeg -i input.mp3 -filter_complex atempo=2 atempo.mp3
2.8 静音检测
ffmpeg -i input.mp3 -af silencedetect=noise=0.0001 -f null -
2.9 修改音量
ffmpeg -i input.mp3 -af volume=0.5 volume.mp3
2.10 抽取音频
从视频抽取音频,直接disable视频流:

ffmpeg -i input.mp4 -vn out.mp3
 从视频抽取音频,disable视频流,音频进行转码:

ffmpeg -i input.mp4 -acodec aac -vn out.m4a
从视频抽取音频,如果存在多个音轨,可以指定某个音轨:

ffmpeg -i input.mp4 -map 0:1 -vn out.mp3
2.11 音乐频谱波形图
使用showwavespic可以获取频谱波形图,以图像形式输出,参数s指定图像的宽高,示例如下:

ffmpeg -i input.mp3 -filter_complex showwavespic=s=1280x720 waveform.png
3、视频常见操作
3.1 视频剪切
基本剪切,指定起始时间、剪切时长:

ffmpeg -i input.mp4 -ss 10 -t 20 -codec copy cut.mp4
精确剪切,包含多音轨,-map 0代表所有track流进行剪切,-accurate_seek代表精确seek:

ffmpeg -ss 10 -accurate_seek -i input.mp4 -t 20 -map 0 -codec copy cut.mp4
3.2 视频转码
使用-vcodec指定视频编码,-acodec指定音频编码,-s 640x480指定视频分辨率,-b 200k指定码率,-r 20指定帧率,这样达到视频压缩效果:

ffmpeg -i input.mp4 -vcodec libx264 -acodec aac -s 640x480 -b 200k -r 20 transcode.mp4
3.3 视频截图
使用-vframes指定截图数量,-ss指定起始时间放在-i前面,这样保证先seek到指定位置再截图。如果是先-i指定输入文件再-ss,是从时间0开始解码,直到指定时间再截图,这样效率太低:

ffmpeg -ss 10 -i input.mp4 -f image2 -vframes 1 -an screenshot.jpg
3.4 图片水印
使用-filter_complex指定位置overlay=x:y,如下所示:

ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=10:20 pic_watermark.mp4

3.5 GIF水印
使用-ignore_loop 0代表GIF循环显示,其他操作与图片水印一致:

ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex overlay=10:20 gif_mark.mp4
3.6 去除水印
使用delogo命令,然后指定水印位置:

ffmpeg -i input.mp4 -filter_complex delogo=x=10:y=20:w=90:h=30 delogo.mp4
3.7 视频拼接
视频拼接分为垂直拼接、水平拼接,还有前后拼接,这里主要介绍垂直与水平拼接,其中使用hstack做水平拼接,vstack做垂直拼接:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex hstack out.mp4
3.8 视频翻转
使用reverse实现视频翻转,但是处理比较耗时:

ffmpeg -i input.mp4 -vf reverse -an output.mp4
3.9 视频降噪
使用-nr代表noise reduction,进行视频降噪:

ffmpeg -i in.mp4 -nr 500 out.mp4
3.10 视频抽帧
ffmpeg -ss 20 -accurate_seek -t 10 -i input.mp4 -an -r 5 %3d.jpg
3.11 播放速度
使用setpts设置视频速度,atempo设置音频速度:

ffmpeg -i in.mp4 -filter_complex [0:v]setpts=%.2f*PTS[v];[0:a]atempo=%.2f[a] -map [v] -map [a] out.mp4
3.12 插入封面
其中-disposition:v:1 attached_pic代表封面:

ffmpeg -i in.mp4 -i photo.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4
3.13 旋转视频
ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4
3.14 黑白视频
ffmpeg -i in.mp4 -vf lutyuv='u=128:v=128' out.mp4
3.15 转换3D的VR视频
使用ffmpeg的stereo3d可以把视频转换为3D视频,控制参数如下: 

输入: 

        sbsl: 两边平行(左眼在左边,右眼在右边)

        sbsr: 双眼交叉(右眼在左边,左眼在右边)

        abl  : 上下排列(左眼在上面,右眼在下面)

        abr : 上下排列(右眼在上面,左眼在下面)

        al    : 交替显示(左眼奇数帧,右眼偶数帧)

        ar    : 交替显示(右眼奇数帧,左眼偶数帧)

输出:

        arbg: 立体照片,红蓝颜色(左眼红色,右眼蓝色)

        argg: 立体照片,红绿颜色(左眼红色,右眼绿色)

        agmg: 立体照片,绿色紫红(左眼绿色,右眼紫红)

        aybg: 立体照片,黄蓝颜色(左眼黄色,右眼蓝色)

示例如下:

ffmpeg -i input.mp4 -filter_complex stereo3d=sbsl:arbg stereo3d.mp4
 

————————————————
版权声明:本文为CSDN博主「徐福记456」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011686167/article/details/120879467

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

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

相关文章

文件上传之图片马混淆绕过与条件竞争

一、图片马混淆绕过 1.上传gif imagecreatefromxxxx函数把图片内容打散,,但是不会影响图片正常显示 $is_upload false; $msg null; if (isset($_POST[submit])){// 获得上传文件的基本信息,文件名,类型,大小&…

Web jQuery—属性、元素、尺寸和位置

jQuery 属性、元素、尺寸和位置 代码下载 jQuery 属性操作 jQuery 常用属性操作有三种:prop() / attr() / data() ; 元素固有属性值 prop() 所谓元素固有属性就是元素本身自带的属性,比如 元素里面的 href ,比如 元素里面的 type。 语…

迷你无人车 Navigation 导航(3)

迷你无人车 Navigation 导航&#xff08;3&#xff09; 自己实现了对于迷你无人车关节的控制&#xff0c;由于原本的关节布置仅支持阿克曼转向&#xff0c;因此先进行阿克曼转向的控制 修改 URDF 文件 添加 transmission 标签&#xff0c;定义关节的驱动 <transmission …

ant-design-vue table 同时勾选或者取消勾选某字段值相同的数据

Ant-design-vue 库中 Table 组件 API 有个 rowKey 属性&#xff1a;表格行 key 的取值&#xff0c;既可以是字符串&#xff0c;也可以是一个函数&#xff0c;它在 rowSelection 选择功能的配置中尤为重要。 在勾选或者取消选中项回调的 onChange 事件中&#xff0c;有两个参数返…

Linux 中的 comm 命令及示例

comm 逐行比较两个排序的文件并写入标准输出;常见的线条和独特的线条。 假设您有两个人员列表,并且要求您找出其中一个列表中可用而另一个列表中不可用的名称,甚至是两个列表中共有的名称。comm是帮助您实现这一目标的命令。它需要两个排序的文件,并逐行比较。在进一步讨论…

Mysql binlog的三种模式statement,row,mixed详解,以及无主键造成复制延时的测试

2.1 Statement 模式的概念 Statement 是基于语句的复制模式。 Statement 模式将数据库中执行的修改操作记录为 SQL 语句&#xff0c;再从数据库上执行相同的 SQL 语句来实现数据同步。 2.2 Statement 模式的优点 Statement 模式的优点是简单明了&#xff0c;易于理解和实现。…

基于Java SSM+layui+mysql实现的图书借记管理系统源代码+数据库

介绍 本项目使用的技术栈是SSMlayuimysql&#xff0c;服务器使用的是tomcat 其中书籍图片存放的位置需要先在tomcat根目录下conf/setting.xml中配置虚拟路径&#xff0c;本项目配置的是D:\upload 完整代码下载地址&#xff1a;图书借记管理系统 用户角色划分 游客 使用本系…

ArcGis地图

1、概述 官网&#xff1a;https://developers.arcgis.com/qt/ 官网&#xff1a;官网指导 官网&#xff1a;Add graphics to a map view 官网&#xff1a;Esri官方博客 官网(github)&#xff1a;https://github.com/Esri Arcgis runtime sdk for Qt 开发记录&#xff08;系列文…

Vue+NodeJS实现邮件发送

一.邮箱配置 这里以QQ邮箱为例,网易邮箱类似. 设置->账号 二.后端服务搭建 index.js const express require(express) const router require(./router); const app express()// 使用路由文件 app.use(/,router);app.listen(3000, () > {console.log(server…

项目上线部署--》网站运行机制

网站运行机制 &#x1f31f;名词解释 域名 DNS 服务器 服务器 &#x1f31f; 网站请求流程 静态页面 动态页面 前后端分离的页面 前后端不分离的页面 &#x1f31f;写在最后 &#x1f31f;名词解释 域名 www.baidu.comwww.taobao.comwww.qq.com 域名俗称网址&#xf…

MVCC

MVCC&#xff08;Multi-Version Concurrency Control&#xff09;是数据库管理系统&#xff08;DBMS&#xff09;中的一种技术&#xff0c;用于管理并发访问数据&#xff0c;允许多个事务同时进行而不互相干扰&#xff0c;同时保持数据的一致性。 MVCC 的工作原理如下&#xf…

AI入门指南:探索人工智能的基础原理和实际应用

引言 介绍AI的基本概念&#xff1a;什么是人工智能&#xff0c;为什么它如此重要。 引出博客的主要内容&#xff0c;即AI的基础原理和实际应用。 第一部分&#xff1a;AI的基础原理 什么是人工智能&#xff1a; 解释AI的定义和范畴。 介绍AI的历史和发展。 机器学习入门&#x…

高级深入--day22

机器视觉 从 Google 的无人驾驶汽车到可以识别假钞的自动售卖机&#xff0c;机器视觉一直都是一个应用广 泛且具有深远的影响和雄伟的愿景的领域。 我们将重点介绍机器视觉的一个分支&#xff1a;文字识别&#xff0c;介绍如何用一些 Python库来识别和使用在线图片中的文字。…

Qt 10进制和16进制转换

10进制和16进制转换 通过标准库std::stringstream进行10进制和16进制转换10进制转换成16进制16进制转换成10进制 通过QString::number()和toInt()、setNumbe()等方法进行转换10进制转换成16进制16进制转换成10进制 格式化输出 在项目开发中&#xff0c;如何进行进制转换&#x…

Linux centos7 bash编程训练__打印各类形状

利用for循环&#xff0c;打印各种不同的三角形、矩形和菱形。 主要是fort循环嵌套使用&#xff0c;及条件判断等。 因方法简单&#xff0c;不作更多解释&#xff0c;部分注释可以帮助初学者掌握代码。 下面列出代码&#xff0c;供参考。 #! /bin/bash ## 打印输出各种*型形…

觉非科技数据闭环系列 | BEV感知研发实践

随着自动驾驶迈向量产场景&#xff0c;“BEV感知数据闭环”已成为新一代自动驾驶量产系统的核心架构。数据成为了至关重要的技术驱动力&#xff0c;发挥数据闭环的飞轮效应或将成为下半场从1到N的胜负关键。 觉非科技在此方面已进行了大量的研究工作&#xff0c;并在实际量产项…

解决nbsp;不生效的问题

代码块 {{title}} title:附 \xa0\xa0\xa0件,//或者 <span v-html"title"></span> title:附 件&#xff1a;,效果图

volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?

volatile 变量是一种在Java中用于修饰字段的关键字,用于确保多线程之间的可见性和禁止指令重排序。volatile 修饰的变量具有以下特性: 可见性(Visibility):volatile 变量的值对所有线程都是可见的。当一个线程修改了 volatile 变量的值,其他线程会立即看到这个变化。 禁止…

Elasticsearch近实时架构

1 Elasticsearch 与 Lucene 的结构理解 一个Elasticsearch索引由一个或多个分片&#xff08;shards&#xff09;组成。这些分片可以是主分片&#xff08;primary shard&#xff09;或副本分片&#xff08;replica shard&#xff09;。每个分片都是一个独立的Lucene索引&#xf…

Unity 性能优化Shader分析处理函数:ShaderUtil.GetShaderGlobalKeywords用法

Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 点击封面跳转下载页面 简介 Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 在Unity开发中&#xff0c;性能优化是一个非常重要的方面。一个常见…