当前位置: 首页 > news >正文

ffmpeg用法(心得体会还有你见过的用法)

ffmpeg的常用用法很多,我这里提供的用法有可能有许多地方是你没见过的。

一、ffmpeg合并视频

我经常需要切割再把一些零碎的视频给拼接起来,这样可以省许多磁盘空间。其实用mencoder挺不错的,至少合并的参数极简单。用ffmpeg可以用下面的方法合并,至少我觉得比用cat这么野蛮的合并文件的方法要好。

1
2
3
4
ffmpeg -i 1.avi -qscale: v  1 1.mpg
ffmpeg -i 2.avi -qscale: v  1 2.mpg
ffmpeg -i concat: "1.mpg|2.mpg"  -c copy all.mpg
ffmpeg -i all.mpg -qscale: v  2 output.avi

 

二、ffmpeg做水面倒影效果

1
ffmpeg -i input.avi -vf  "split[a][b];[a]pad=iw:ih*2[a];[b]vflip[b];[a][b]overlay=0:h"  output.avi

 

三、ffmpeg处理MKV文件也很方便

一般情况下用mkvtoolnix的,ffmpeg处理mkv也很灵活强大。

例如:把2.mkv和3.mkv的所有音频加到1.mkv里(在拼轨同时还可以分别指定对每个轨道进行copy还是重编码):

1
ffmpeg -i 1.mkv -i 2.mkv -i 3.mkv -map 0:0 -map 0:a -map 1:a -map 2:a -map 3:a -c copy OK.mkv

 

四、添加图片水印

1
ffmpeg -i input.avi -vf  "movie=1.png[wm];[in][wm]overlay=W-w:H-h"  output.avi

这样会把图片放在原影片的最右下角位置

 

五、把图片和音频合为mp4

1
ffmpeg -f image2 -r 30 /216  -i %3d.jpg -i music.mp3 -c: v  mpeg4 -c:a copy OK.mp4

这样就能把图片和mp3合成视频了,而且图片的张数的时间按指定的music.mp3的时间来平均分配,不会出现图片放完了,音乐还在播放的情况。但有一点要特别注意,如果图片特别少指定的帧率太低了播放可能会出问题,我在Windows下用smplayer播放会出现卡死情况。用mencoder做这些事也非常方便。

 

六、分割视频并给分割出的视频开头和结尾做淡入淡出效果

1
2
ffmpeg -ss 20 -i p.mp4 -vf  "fade=in:0:50,fade=out:450:50"  -t 20 Ok.mp4
ffmpeg -ss 20 -i p.mp4 -vf  "fade=in:0:d=1,fade=out:st=29:d=1"  -t 20 OK.mp4

上面第一个命令是从p.mp4的第20秒开始到第40秒结束的一段视频保存为OK.mp4,并给开头的前50帧做个渐入的效果,给结尾的50帧做个渐黑的效果。第二个命令是按时间来算的,意思是开头淡入1秒和结尾最后一秒淡出,这在指定结尾的淡出非常方便。

相关文章:

  • Spring Cloud Spring Boot mybatis分布式微服务云架构 返回JSON格式
  • 常用命令参考
  • HongCMS 审计学习
  • Mastering KVM Virtualization:第二章 KVM内部原理
  • .bat文件调用java类的main方法
  • docify文档服务器搭建
  • Shell中重定向lt;lt;EOF注意事项
  • C#笔记
  • 第三章 图像的几何变换
  • asp.net给文件分配自己主动编号,如【20140710-1】
  • Python入门经典 以解决计算问题为导向的Python编程 待完好
  • Linuxshell编程
  • 华硕笔记本BIOS设置详解
  • Apache Kafka源码剖析:第7篇 日志存储系列2-FileMessageSet
  • Linux常见命令总结
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • CAP 一致性协议及应用解析
  • Consul Config 使用Git做版本控制的实现
  • exif信息对照
  • JavaScript中的对象个人分享
  • Java基本数据类型之Number
  • Markdown 语法简单说明
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring-boot 启动时碰到的错误
  • storm drpc实例
  • Vue 2.3、2.4 知识点小结
  • 猴子数据域名防封接口降低小说被封的风险
  • 聚簇索引和非聚簇索引
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 如何设计一个微型分布式架构?
  • 设计模式 开闭原则
  • 手写一个CommonJS打包工具(一)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • !!Dom4j 学习笔记
  • #每日一题合集#牛客JZ23-JZ33
  • $GOPATH/go.mod exists but should not goland
  • $refs 、$nextTic、动态组件、name的使用
  • (超详细)语音信号处理之特征提取
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)视频码率,帧率和分辨率的联系与区别
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .aanva
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .cn根服务器被攻击之后
  • .NET DataGridView数据绑定说明
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 分布式技术比较
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 使用反射注册事件
  • .NET关于 跳过SSL中遇到的问题
  • .net知识和学习方法系列(二十一)CLR-枚举