ffmpeg命令详解

原文网址:ffmpeg命令详解_IT利刃出鞘的博客-CSDN博客

简介

本文介绍ffmpeg命令的用法。

命令示例

1.mp4和avi的基本互转

ffmpeg -i D:\input.mp4 E:\output.avi
ffmpeg -i D:\input.avi E:\output.mp4

-i 表示input,即输入。后面填一个输入地址和一个输出地址,这种方式没有指定任何参数和解码器,都用默认,会发现转换得到的文件压缩严重,avi文件只有200kbps的码率。

2.mp4和avi的无损互转

mp4转换avi

ffmpeg -i D:\input.mp4 -qscale 0 E:\output.avi
或者
ffmpeg -i D:\input.mp4 -c copy E:\output.avi

这里更推荐第一种方式,-qscale表示质量控制,0表示0损失,现在的ffmpeg已经采用qsacle取代了原来的sameq方式。

第二种方式 -c copy表明会把原视频的所有流一模一样的复制,即不进行解码和重新编码,这种情况下得到的avi文件需要额外的解码器如potplayer才能打开,win10自带的是不行的。

注:-c copy包含了-c:v copy(视频流),-c:a copy(音频流)等所有流。另外其他写法如-vcodec -codec:v与-c:v copy是同义的,其余以此类推。

avi转mp4

ffmpeg -i D:\input.mp4 -c:v copy -c:a copy E:\output.avi -y

-y表示不用确认覆盖文件,如果有重名的文件一般会在命令行向用户确认。

mp4转avi就直接copy就可以了,win10自带也能播。

3.截取视频片段

ffmpeg -i input.avi -c:v copy -c:a copy -ss 00:00:00 -to 00:00:30 cutout.avi -y

这是截取30s的,和前面一样,如果只是截取视频片段就不要重新编码了,一个-c copy搞定。
-ss后面跟的是时间位置,开始时间 -to 结束时间。

4.批量截取视频图片

for /R %v IN (*.avi) do ( ffmpeg -i %v -r 1 -f image2 %v%d.jpeg)

假设一个视频文件夹里有很多avi文件,我想每一个avi文件都间隔一帧截图,就是这条语句了。for…IN…do是命令行的循环格式。%v是文件名,%d是自动递增的数字名。-r定义的是间隔多少帧截图一次。

5.把大量图片组合成视频

ffmpeg -f image2 -framerate 30 -i %d.jpg xxx.avi

-framerate设定帧数,这里设成了30,也就是一秒30张图片,%d表示从1开始的图片,这里推荐大家一个软件renamer,免费版的就足够使用了,可以快速批量重命名文件,不用每次写重命名代码了。

命令详解

用法

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

  1. options 全局参数
  2. infile options 输入文件参数
  3. infile 输入文件
  4. outfile options 输出文件参数
  5. outfile 输出文件

全局选项

参数

说明

-loglevel loglevel

设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -loglevel verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace

-v loglevel

设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -v verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace

-report

生成一个报告,报告的名字是ffmpeg自动生成的,例如ffmpeg -report -i 1080p.mp4,想要自定义文件以及日志等级可以使用宏FFREPORT,例如FFREPORT=file=ffreport.log:level=32 ffmpeg -i 1080p.mp4

-max_alloc bytes

设置通过ffmpeg的malloc函数系列设置在堆上分配块的最大大小限制。嵌入式设备可能会用到这个选项

-y

覆盖输出文件

-n

切勿覆盖输出文件

-ignore_unknown

忽略未知的流类型

-filter_threads

定义用于处理过滤器管道的线程数。每个管道将生成一个线程池,其中包含许多可用于并行处理的线程。默认是可用CPU的数量

-filter_complex_threads

定义用于处理filter_complex图的线程数。类似于filter_threads但仅用于-filter_complex图形。默认值为可用 CPU 的数量

-stats

编码期间打印进度报告

-max_error_rate maximum

在所有输入中设置解码帧失败的比例,当超过时ffmpeg将返回退出代码69。超过此阈值不会终止处理。值的范围是0到1之间的浮点数。默认值为2/3

-bits_per_raw_sample number

设置每个原始样本的位数

-vol volume

改变音量 ,volume默认值是256,也就是它把音量分为256等分,例如要把音量放大为原来的两倍(2562):ffmpeg -vol 512 -y -i bugua.mp3 output.mp3

输入输出选项

选项

说明

例子

-f fmt

force format

设置输入容器是mp4 ffmpeg -i bugua.mp3 -f mp4 output.m4a

-c codec

codec name

设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -c ac3 output.m4a

-codec codec

codec name

设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -codec ac3 output.m4a

-pre preset

preset name

-

-map_metadata outfile[,metadata]:infile[,metadata]

set metadata information of outfile from infile

-

-t duration

record or transcode “duration” seconds of audio/video

设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3

-to time_stop

record or transcode stop time

设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3

-fs limit_size

set the limit file size in bytes

设置输出文件大小限制在0.1MB ffmpeg -y -i bugua.mp3 -fs 0.1MB output.mp3

-ss time_off

set the start time offset

设置从第50秒开始录制 fmpeg -ss 50 -y -i bugua.mp3 output.mp3

-sseof time_off

set the start time offset relative to EOF

设置从倒数第50秒开始录制 ffmpeg -sseof -50 -y -i bugua.mp3 output.mp3

-seek_timestamp

此选项使用-ss选项在输入文件中启用或禁用按时间戳搜索。默认情况下它是禁用的。如果启用,则-ss选项的参数被视为实际时间戳,并且不会被文件的开始时间偏移。这仅适用于不从时间戳 0 开始的文件,例如传输流

-

-timestamp time

在容器中设置录制时间戳

-metadata string=string

设置修改容器这一层的metadata

设置标题 ffmpeg -i in.avi -metadata title=“my title” out.flv

-program title=string:st=number…

添加或者修改program的Metadata

设置program标题 ffmpeg -y -i 1080p.mp4 -program title=“XXXXXX”:st=1 -c copy output.mp4

-target type

指定目标文件类型 (“vcd”, “svcd”, “dvd”, “dv” or “dv50” with optional prefixes “pal-”, “ntsc-” or “film-”)

ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

-apad

音频填充(追加)

在音频文件的最后追加10秒静音 ffmpeg -y -i bugua.mp3 -af “apad=pad_dur=10” output.mp3

-frames number

设置要输出的帧数

只写入200帧 ffmpeg -i 1080p.mp4 -frames 200 -c copy output.mp4

-filter filter_graph

设置简单的filter(不对音视频内容进行任何处理的filter)

把视频帧的PTS设置为原来的0.5倍 ffmpeg -y -i 1080p.mp4 -filter:v “setpts=0.5PTS” output.mp4

-filter_script filename

read stream filtergraph description from a file

-

-reinit_filter

reinit filtergraph on input parameter changes

-

-discard

允许从流中丢弃特定的流或帧。使用值all会丢弃所有的流,在解复用时从流中选择要丢弃的帧,并非所有解复用器都支持

去掉视频中的音频 ffmpeg -y -discard:a all -i 1080p.mp4 -c copy output.mp4

-disposition

设定特定的流作为默认流

使第二个音频流成为默认流 ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv

视频选项

选项

说明

例子

-vframes number

set the number of video frames to output

输出200帧 ffmpeg -y -i 1080p.mp4 -vframes 200 output.mp4

-r rate

set frame rate (Hz value, fraction or abbreviation)

设置输出帧率为10帧 ffmpeg -y -i 1080p.mp4 -r 10 -vframes 500 output.mp4

-fpsmax rate

set max frame rate (Hz value, fraction or abbreviation)

设置最大帧率为15帧 ffmpeg -y -i 1080p.mp4 -fpsmax 15 -vframes 500 output.mp4

-s size

set frame size (WxH or abbreviation)

把视频裁剪为640x480 ffmpeg -y -i 1080p.mp4 -s 640x480 -vframes 500 output.mp4

-aspect aspect

set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)

视频比例改为4:3 ffmpeg -y -i 1080p.mp4 -aspect 4:3 -vframes 500 output.mp4

-bits_per_raw_sample number

set the number of bits per raw sample

-

-vn

disable video

只输出音频 ffmpeg -y -i 1080p.mp4 -vn -c copy output.mp4

-vcodec codec

force video codec (‘copy’ to copy stream)

设置输出编码器为libx265 ffmpeg -y -i 1080p.mp4 -vframes 500 -vcodec libx265 output.mp4

-timecode hh:mm:ss[:;.]ff

set initial TimeCode value.

-

-pass n

select the pass number (1 to 3)

-

-vf filter_graph

set video filters

逆时针旋转 ffmpeg -y -i 1080p.mp4 -vframes 300 -vf “transpose=2” output.mp4

-ab bitrate

audio bitrate (please use -b:a)

设置音频输出码率为56k ffmpeg -y -i 1080p.mp4 -ab 56k -vn output.mp4

-b bitrate

video bitrate (please use -b:v)

设置视频输出码率为256k ffmpeg -y -i 1080p.mp4 -b 256k -an output.mp4

-dn

disable data

-

音频选项

选项

说明

例子

-aframes number

set the number of audio frames to output

只写入1000帧音频数据 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 output.mp4

-aq quality

set audio quality (不同的编码器使用不同的数字表示不同的码率)

这里以MP3为例,把码率设置为245kbps左右 ffmpeg -y -i bugua.mp3 -aq -0 output.mp3

-ar rate

set audio sampling rate (in Hz)

重采样为16k ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -ar 16000 output.mp4

-ac channels

set number of audio channels

改为双声道 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -ac 2 output.mp4

-an

disable audio

只输出视频 ffmpeg -y -i 1080p.mp4 -an -c copy output.mp4

-acodec codec

force audio codec (‘copy’ to copy stream)

强制使用ac3编码器 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -acodec ac3 output.mp4

-vol volume

change audio volume (256=normal)

把声音调为原来的2倍 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -vol 512 output.mp4

-af filter_graph

set audio filters

写入音频之前先进行afade处理 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -af afade output.mp4

副标题选项

选项

说明

例子

-s size

set frame size (WxH or abbreviation)

-

-sn

disable subtitle

-

-scodec codec

force subtitle codec (‘copy’ to copy stream)

-

-stag fourcc/tag

force subtitle tag/fourcc

-

-fix_sub_duration

fix subtitles duration

-

-canvas_size size

set canvas size (WxH or abbreviation)

-

-spre preset

set the subtitle options to the indicated preset

-

查看帮助文档

简单文档

可以用此命令查看详解:

ffmpeg --help

结果: 

Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:-h      -- print basic options-h long -- print more options-h full -- print all options (including all format and codec specific options, very long)-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocolSee man ffmpeg for detailed description of the options.Print help / information / capabilities:
-L                  show license
-h topic            show help
-? topic            show help
-help topic         show help
--help topic        show help
-version            show version
-buildconf          show build configuration
-formats            show available formats
-muxers             show available muxers
-demuxers           show available demuxers
-devices            show available devices
-codecs             show available codecs
-decoders           show available decoders
-encoders           show available encoders
-bsfs               show available bit stream filters
-protocols          show available protocols
-filters            show available filters
-pix_fmts           show available pixel formats
-layouts            show standard channel layouts
-sample_fmts        show available audio sample formats
-dispositions       show available stream dispositions
-colors             show available color names
-sources device     list sources of the input device
-sinks device       list sinks of the output device
-hwaccels           show available HW acceleration methodsGlobal options (affect whole program instead of just one file):
-loglevel loglevel  set logging level
-v loglevel         set logging level
-report             generate a report
-max_alloc bytes    set maximum size of a single allocated block
-y                  overwrite output files
-n                  never overwrite output files
-ignore_unknown     Ignore unknown stream types
-filter_threads     number of non-complex filter threads
-filter_complex_threads  number of threads for -filter_complex
-stats              print progress report during encoding
-max_error_rate maximum error rate  ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.Per-file main options:
-f fmt              force format
-c codec            codec name
-codec codec        codec name
-pre preset         preset name
-map_metadata outfile[,metadata]:infile[,metadata]  set metadata information of outfile from infile
-t duration         record or transcode "duration" seconds of audio/video
-to time_stop       record or transcode stop time
-fs limit_size      set the limit file size in bytes
-ss time_off        set the start time offset
-sseof time_off     set the start time offset relative to EOF
-seek_timestamp     enable/disable seeking by timestamp with -ss
-timestamp time     set the recording timestamp ('now' to set the current time)
-metadata string=string  add metadata
-program title=string:st=number...  add program with specified streams
-target type        specify target file type ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-")
-apad               audio pad
-frames number      set the number of frames to output
-filter filter_graph  set stream filtergraph
-filter_script filename  read stream filtergraph description from a file
-reinit_filter      reinit filtergraph on input parameter changes
-discard            discard
-disposition        dispositionVideo options:
-vframes number     set the number of video frames to output
-r rate             set frame rate (Hz value, fraction or abbreviation)
-fpsmax rate        set max frame rate (Hz value, fraction or abbreviation)
-s size             set frame size (WxH or abbreviation)
-aspect aspect      set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-display_rotation angle  set pure counter-clockwise rotation in degrees for stream(s)
-display_hflip      set display horizontal flip for stream(s) (overrides any display rotation if it is not set)
-display_vflip      set display vertical flip for stream(s) (overrides any display rotation if it is not set)
-vn                 disable video
-vcodec codec       force video codec ('copy' to copy stream)
-timecode hh:mm:ss[:;.]ff  set initial TimeCode value.
-pass n             select the pass number (1 to 3)
-vf filter_graph    set video filters
-b bitrate          video bitrate (please use -b:v)
-dn                 disable dataAudio options:
-aframes number     set the number of audio frames to output
-aq quality         set audio quality (codec-specific)
-ar rate            set audio sampling rate (in Hz)
-ac channels        set number of audio channels
-an                 disable audio
-acodec codec       force audio codec ('copy' to copy stream)
-ab bitrate         audio bitrate (please use -b:a)
-af filter_graph    set audio filtersSubtitle options:
-s size             set frame size (WxH or abbreviation)
-sn                 disable subtitle
-scodec codec       force subtitle codec ('copy' to copy stream)
-stag fourcc/tag    force subtitle tag/fourcc
-fix_sub_duration   fix subtitles duration
-canvas_size size   set canvas size (WxH or abbreviation)
-spre preset        set the subtitle options to the indicated preset

细节文档

命令

说明

ffmpeg -L

显示License

ffmpeg -version

显示当前版本

ffmpeg help -buildconf

显示编译此ffmpeg的configuration

ffmpeg help -formats

显示支持的文件格式,同时显示muxers和demuxers

ffmpeg help -muxers

显示支持的muxers格式

ffmpeg help -demuxers

显示支持的demuxers格式

ffmpeg help -devices

显示支持的设备,包括音视频设备

ffmpeg help -codecs

显示支持的格式,同时显示视频、音频、字幕、帧内编码、有损压缩和无损压缩的解编码支持情况

ffmpeg help -decoders

显示支持的解码器

ffmpeg help -encoders

显示支持的编码器

ffmpeg help -bsfs

显示支持的二进制流过滤器,例如h264_metadata、h264_mp4toannexb、hevc_mp4toannexb等

ffmpeg help -protocols

显示支持的可用的协议,区分Input和Output,例如file、http、hls、rtmp、rtp、pipe、tee等

ffmpeg help -filters

显示支持的可用的过滤器

ffmpeg help -pix_fmts

显示支持的可用的像素格式

ffmpeg help -layouts

显示支持的声道布局,例如mono、stereo、2.1、2.0、3.0、5.0、5.1等

ffmpeg help -sample_fmts

显示支持的音频采样格式,例如u8、s16、s32、flt等

ffmpeg help -colors

显示支持的颜色

ffmpeg help -sources device

列出输入设备的源

ffmpeg help -sinks device

列出输出设备的槽(节点)

ffmpeg help -hwaccels

显示可用的硬件加速方法

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

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

相关文章

基于YOLOv8深度学习的智慧课堂教师上课行为检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着人工智能技术的迅猛发展,智能课堂行为分析逐渐成为提高教学质量和提升教学效率的关键工具之一。在现代教学环境中,能够实时了解教师的课堂表现和行为,对于促进互动式教学和个性化辅导具有重要意义。传统的课堂行为分析依赖于人工观测&…

wireshark基础

免责声明: 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:https://longyusec.com/ 泷羽sec B站地址:https:/…

单例模式入门

单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的…

圆域函数的傅里叶变换和傅里叶逆变换

空域圆域函数的傅里叶变换 空域圆域函数(也称为空间中的圆形区域函数)通常指的是在二维空间中,以原点为中心、半径为 a a a的圆内取值为1,圆外取值为0的函数。这种函数可以表示为: f ( x , y ) { 1 if x 2 y 2 ≤ …

【大模型】深度解析 NLP 模型5大评估指标及 应用案例:从 BLEU、ROUGE、PPL 到METEOR、BERTScore

在自然语言处理(NLP)领域,无论是机器翻译、文本生成,还是问答系统开发,模型性能评估指标始终是开发者绕不开的工具。BLEU、ROUGE、PPL(困惑度)、METEOR 和 BERTScore 是五个最具代表性的指标&am…

黑马程序员Java项目实战《苍穹外卖》Day01

苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: ​ 管理端-外卖商家使用 ​ 用户端-点餐用户使用 当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一…

Java高级特性 - IO流

第1关 什么是IO流 BC,C 第2关 字节流-输入输出 第3关 字符流 - 输入输出 第4关 复制文件

BERT 详解

BERT简介 BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息&am…

LLM大模型意图识别:分类算法lora训练案例

参考: https://blog.csdn.net/weixin_42357472/article/details/141134380 (LLaMA-Factory 微调训练) https://modelscope.cn/competition/54/summary?seasonId56 https://github.com/coggle-club/notebooks/blob/main/notebooks/llm/RAG-BM…

(计算机网络)期末

计算机网络概述 物理层 信源就是发送方 信宿就是接收方 串行通信--一次只发一个单位的数据(串行输入) 并行通信--一次可以传输多个单位的数据 光纤--利用光的反射进行传输 传输之前,要对信源进行一个编码,收到信息之后要进行一个…

Rk3588 onnx转rknn,出现 No module named ‘rknn‘

一、操作步骤: rk3588 需要将yolo11 的模型onnx转rknn。 https://github.com/airockchip/rknn_model_zoo/tree/main/examples/yolo11 这个是用yolo11训练的模型,有80种类型。 完整下载下来后,在按文档描述下载模型下来: 然后进…

DDR3与MIG IP核详解(一)

一、ddr3(全称第三代双倍速率同步动态随机存储器): 1、特点:1:掉电无法保存数据,需要周期性的刷新。2:时钟上升沿和下降沿都会传输数据。 3:突发传输,突发长度 Burst Length一般为…

多模态和大模型原理

一、图文匹配原理 Clip 通过图像编码器和照片编码器将两者区分成N项,然后让它们相互内积,能够匹配得上的则内积值为1,不能够匹配上的则内积为-1,也就是负样本,如上图,除了对角线的正样本,周围…

15 go语言(golang) - 并发编程goroutine原理及数据安全

底层原理 Go 的 goroutine 是一种轻量级的线程实现,允许我们在程序中并发地执行函数。与传统的操作系统线程相比,goroutine 更加高效和易于使用。 轻量级调度 用户态调度:Go 运行时提供了自己的调度器,这意味着 goroutine 的创建…

Flink细粒度的资源管理

Apache Flink致力于为所有应用程序自动导出合理的默认资源需求。对于希望根据其特定场景微调其资源消耗的用户,Flink提供了细粒度的资源管理。这里我们就来看下细粒度的资源管理如何使用。(注意该功能目前仅对DataStream API有用) 1. 适用场景 使用细粒度的资源管理的可能…

《操作系统 - 清华大学》5 -5:缺页异常

文章目录 1. 缺页异常的处理流程2.在何处保存未被映射的页?3. 虚拟内存性能 1. 缺页异常的处理流程 缺页中断的处理过程: CPU读内存单元,在TLB中根据其虚拟地址匹配物理地址,未命中,读页表; 由于页表项的存在位为0,CP…

Linux-NFS

文章目录 NASNFSNFS配置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月27日12点50分 NAS 网络接入存储 共享存储文件存储 NAS设备包括 NAS引擎一个或多个网络接口一个操作系统…

OpenHarmony属性信息怎么修改?触觉智能RK3566鸿蒙开发板来演示

本文介绍在开源鸿蒙OpenHarmony系统下,修改产品属性信息的方法,触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0 Release系统,感兴趣…

杰发科技AC7803——不同晶振频率时钟的配置

计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…

面向对象进阶-抽象类

抽象方法 将共性行为(方法)抽取到父类,由于每个子类执行内容不一样,在父类不能确定具体的方法体,该方法可以定义为抽象方法。 抽象类:如果一个类中存在抽象方法,那么该 类必须声明为抽象类。…