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

ffmpeg命令(详解)

在这里插入图片描述

欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力

文章目录

  • 一、常见命令
  • 二、实战
  • 三、总结

一、常见命令

ffmpeg -i input.mp4 -c copy output.mp4
  • 解释:-i 后面接输入文件的路径位置,-c 是所有流的编解码器,-c copy代表所有流的编解码器从输入文件复制过去。
ffmpeg -i input.mp4 -ss 00:00:07 -to 00:00:15 -c copy output.mp4
  • 解释: -ss 和 -to 后面接时间戳或者时间码,代表开始和结束。例中代表第7秒开始到第15秒结束,也就是截取一段音视频。
ffmpeg -i vinput.mp4 -i ainput.aac -vcodec copy -acodec aac output.mp4
  • 注释:将一个视频文件和一个音频文件合在一起,其中 -vcodec 代表视频编码,-acodec 代表音频解码,后面接copy代表从输入文件中复制编解码器,也可以使用名字指定一个。
  • -vcodec 等价于 -c:v , -acodec 等价于 -c:a 。
  • 还有类似的:-c:s 字幕流,-c:d 数据流。
ffmpeg -i input.mp4 -c copy -an output.mp4
  • 注释:剥离音频流。-an代表不处理音频,还有 -vn 代表不处理视频。
ffmpeg -f concat -i input_list.txt -c copy output.mp4
//input_list.txt内容如下:
file 'input1.mp4'
file 'input2.mp4'
  • 注释:-f 代表指定输入或输出文件的格式,concat代表融合,这里用来修饰输入文件,表示输入文件里面有多个文件需要融合。
ffmpeg -f h264 -i input.h264 -c:v copy output.mp4
  • 注释:指定输入文件是H.264格式。
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.yuv
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpg
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.png
  • 注释:截取输入视频的某一帧,输出为相应格式的图片。
ffmpeg -i input.mp4 -pix_fmt yuvj420p -vframes 1 output.jpg
  • 注释:-pix_fmt 用于转换输入文件的像素格式,以完成色彩空间的装换。
ffmpeg -i input.mp4 -vf "select='gte(n\,10)*lte(n\,100)',setpts=PTS-STARTPTS" 
-vsync vfr output.gif
  • 注释:-vf 代表指定视频流滤镜,后面接滤镜描述字符串。例子中描述字符串的意思是从第10帧到第100帧截取视频,并且修改好时间戳。-vsync vfr 使用可变帧率确保帧不会重复或丢失。命令的结果是输出一张动态图。
  • -vf 指定视频流滤镜 ; -af 指定音频流滤镜; -filter_complex 指定多流滤镜

二、实战

给两张图片,一张是.jpg图片,一张是.png图片。要求把两张图片融合变成视频,每张图片播放3秒。
思路一:先将两张图片分别编码成视频,然后再将两个视频融合。

ffmpeg -f image2 -loop 1 -i input1.jpg -c:v h264 -pix_fmt yuv420p -r 25 -t 3 output1.mp4
ffmpeg -f image2 -loop 1 -i input2.png -c:v h264 -pix_fmt yuv420p -r 25 -t 3 output2.mp4
ffmpeg -f concat -i image_list.txt -c copy ff_merge_image.mp4
// image_list.txt:
file 'output1.mp4'
file 'output2.mp4'
  • 注释:-loop 表示循环处理一个源文件,-r 25 表示输出视频每秒25帧,-t 3 表示输出视频时长3秒。

思路二:使用多流滤镜,对两张图片一块处理

ffmpeg -loop 1 -t 3 -i input1.jpg -loop 1 -t 3 -i input2.png 
-filter_complex "[0:v][1:v]concat=n=2:v=1:a=0" -y output.mp4
  • 注释:[0:v] 是指将输入文件1转换成下标为0的视频流,[1:v] 同理,后面 concat指使用concat滤镜,滤镜后面使用 = 承接后来的滤镜参数,比如例子中n=2是指一共两路流。多个滤镜参数之间使用:隔开,例子中v=1是指输出为一路视频流,a=0是指没有音频流。-y 这个参数表示在输出文件已经存在时覆盖它,而不提示用户确认。

三、总结

诸位可以发现,ffmpeg的命令非常灵活多变,使用不同的思路也可以得出同一结果,但是大体的框架如下:

ffmpeg [输入文件的参数] -i [输入文件的位置]  //输入处理
(-vf/af/filter_complex [滤镜描述字符串])   //中间滤镜加工(可选)
[输出文件的参数] [输出文件的位置]			 //输出处理

在变中把握不变,是一切学习的真谛,或许有更好的框架,欢迎各位在评论区留言,在下不胜感激~

至此,结束~
在这里插入图片描述
望诸位不忘三连支持一下~


http://www.kler.cn/news/295164.html

相关文章:

  • 什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调
  • 数学基础 -- 统计学之零均值化
  • 小米Vela:端侧AI推理框架
  • 域名证书,泛域名证书,sni
  • 测试一些概念
  • Flutter集成Firebase框架
  • unity 实现吸血鬼幸存者的随机奖励
  • 基于stm32的河流检测系统-单片机毕业设计
  • u盘显示需要格式化才能用预警下的数据拯救恢复指南
  • CNC数控加工如何开启个性化制造新时代?
  • C++数据结构重要知识点(5)(哈希表、unordered_map和unordered_set封装)
  • 封装触底加载组件
  • ✨机器学习笔记(一)—— 监督学习和无监督学习
  • 包机制,javadoc生成文档,用户交互scanner
  • 怎样通过STM32实现环境监测设计
  • 【大数据分析与挖掘算法】matlab实现——Apriori关联规则算法
  • 一篇文章告诉你小程序为什么最近这么火?
  • mysql创建新表,同步数据
  • 简单实用的php全新实物商城系统
  • 2024国赛数学建模B题完整分析参考论文38页(含模型和可运行代码)
  • 深度学习速通系列:如何生成句向量?
  • 9.8通宵速通javascript
  • [论文笔记]QLoRA: Efficient Finetuning of Quantized LLMs
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践
  • 3177. 求出最长好子序列 II / 3176. 求出最长好子序列 I(24.9.7 / 24.9.8)
  • pdf转word格式乱了怎么调整?2024帮助你快速进行pdf格式调整的软件
  • [论文笔记]Circle Loss: A Unified Perspective of Pair Similarity Optimization
  • Nginx跨域运行案例:云台控制http请求,通过 http server 代理转发功能,实现跨域运行。(基于大华摄像头WEB无插件开发包)
  • 4K4D: Real-Time 4D View Synthesis at 4K Resolution 学习笔记
  • 什么是 Java?Java 的主要特点有哪些?