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

FFmpeg一些常用的命令

官网:https://ffmpeg.org/
官网下载:https://ffmpeg.org/download.html
官网下载源码:https://www.ffmpeg.org/releases/

FFmpeg 实用命令 — FFmpeg 教程 文档

一、参数

1.1 FFmpeg 常用参数
参数说明备注
-i filename指定输入文件(或直接写文件名,用| 竖线分割),在Linux下当然也能指定:0.0(屏幕录制)或摄像头。
-c:a指定音频编码器 copy、mp3(libmp3lame)、aac、全称: codec of audio ;
copy是直接拷贝视频中的原始的音频,不涉及音频的编解码,复制速度会很快。
示例:-c:a aac 指定音频编码器;
-c:v指定视频编码器 copy、libx265-c:v copy 复制
-crf指定视频质量,范围为0-51,0为无损,23为默认值,数值越小,质量越高,文件越大
-f fmt设定输出格式(音频或者视频格式)。
-y覆盖已有文件。
-t duration指定时长。
-fs limit_size设置文件大小的上限。
-ss time_off从指定的时间(单位为秒)开始,也支持[-]hh:mm:ss[.xxx]的格式。
-re代表按照帧率发送,尤其在作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停地发送数据。
-map指定输出文件的流映射关系。如果没有-map选项,则ffmpeg采用默认的映射关系。
例如:“-map 1:0-map 1:1”要求将第二个输入文件的第一个流和第二个流写入输出文件。

1.2 FFmpeg 视频、图像参数
参数说明备注
-bitexact使用标准比特率。
-vb指定视频比特率(bits/s)
-r rate帧速率(fps)
-vframes设置要输出的视频帧数
-b:v设定视频码率64k
-bufsize缓存区大小-bufsize 6000K 或 -bufsize 64k
-s设定画面的宽与高
-vn去除视频流
-aspect aspect设置横纵比 4:3 16:9 或 1.3333 1.7777
-vcodec [none|copy|libx265 ...]指定视频编解码器。copy表示原始编解码数据必须被拷贝; libx265表示使用libx265编码器v是视频video,codec是解码器,后跟解码器名称
-vf视频过滤器
qp量化比例为0~51。qp越大,压缩越厉害,失真越严重,失去的信息越多,画面也就越模糊。
-hwaccels查询系统支持的硬件加速器(用显卡处理视频)
-codecs查询支持的编解码器
-maxrate每帧的最高(最大)码率-maxrate 5000K

1.3 FFmpeg 音频参数
参数说明备注
-acodec [none|copy|mp3|aac ...]设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。a指的是audio,codec指的是解码器,-acodec就是指定音频解码器
-aframes设置要输出的音频帧数
-b:a指定音频比特率-b:a 128k 指定128kb/s码率;-b:a 192k平均比特率为192kbps
-ar设定采样率-ar 44k 指定音频的采样频率为44kHz
-ac设定声音的Channel数
-an去除音频流即 -acodec none。合起来就是不指定音频解码器
-af音频过滤器

1.4 FFmpeg其他参数
参数说明备注
-safe 0防止Operation not permitted
-allowed_extensions ALL
-protocol_whitelist "file,http,crypto,tcp"
-strict experimental
-preset指定编码速度和质量的平衡,可选项有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow
-sn去除字幕流
-an去掉音频流,只保留视频
-dn去除数据流
-decoders查询系统支持的编码格式ffmpeg -decoders
-encoders查询系统支持的解码格式ffmpeg -encoders
ffmpeg -h encoder=mp3查询编码器 mp3 格式的详细信息
ffmpeg -h decoder=h264_qsv查询解码器 h264_qsv 格式的详细信息

二、常用命令

查看支持的硬件

ffmpeg -hwaccels

如果是nvidia的显卡并安装的对应驱动,也安装了cuda,则可以使用cuda跟h_264cuvid 解码器

 查看可用的对应格式解码器

ffmpeg -codecs | findstr "h264"

 

 利用硬件解码器的命令如下,以h264_cuvid为例:

ffmpeg -hwaccel cuda -vcodec h264_cuvid -i rtsp://admin:qwer1234@192.0.0.64/stream output.mp4

-hwaccel 选择硬件模式

-vcodec  选择解码器

-i   RTSP地址

output.mp4 保存成.mp4视频     

note:硬解码器必须与硬件环境对应如:cuda  对应 h264_cuvid

 

ffmpeg  -rtsp_transport udp -i srcUrl -fflags nobuffer -max_delay 1 -threads 5  -profile:v high  -preset superfast -tune zerolatency  -an -c:v h264 -crf 25 -s 1280*720   -f rtsp -bf 0  -g 5  -rtsp_transport udp dstUrl

ffmpeg  -rtsp_transport tcp -i rtsp://127.0.0.1:554/live/camera -fflags nobuffer -max_delay 1 -threads 5  -profile:v high  -preset superfast -tune zerolatency  -an -c:v h264 -crf 25 -s 1280*720   -f rtsp -bf 0  -g 5  -rtsp_transport tcp rtsp://127.0.0.1:554/live/camera2

ffmpeg  
-rtsp_transport tcp

-i srcUrl 
-fflags nobuffer 
-max_delay 1 
-threads 5  
-profile:v high  
-preset superfast 
-tune zerolatency  
-an

-c:v h264 
-crf 25 
-s 1280*720   
-f rtsp 
-bf 0  
-g 5  
-rtsp_transport udp dstUrl
    

-i          输入文件,这里指的就是视频文件。
-y        表示无需询问,直接覆盖输出文件(如果有原文件的话,如果没有使用输出文件,这个参数的作用是防止在执行过程中出现询问是否覆盖的问题)
-f         指定输出视频的格式。
-an      表示去除音频。
-codec    一个编码器/解码器名称或者一个特定值“copy”(只适用输出)。
-q:v 1    q是质量,v是视频,v的取值范围是[1, 35],取值1的时候,对应着最佳的视频质量。
-vcodec 表示视频编码器。-vcodec rawvideo 代表使用的是raw video编码器,表示输出文件格式为raw video,即无压缩的视频数据。
-pix_fmt 表示视频像素格式,使用bgr24格式,即每个像素由三个字节组成,分别表示蓝、绿、红三个颜色通道的亮度值。
-s 表示视频尺寸,这里使用字符串格式化将 width 和 height 代入到尺寸参数中。
-r 表示视频帧率,即每秒钟显示的帧数。
-c:v 表示视频编码器类型,这里我们使用的是libx264编码器。
-pix_fmt 表示视频像素格式。由于使用了libx264编码器,这里我们使用yuv420p格式,即420 Planar格式,每个像素需要包含YUV三个颜色通道的信息。
-preset 表示编码速度的快慢,这里我们使用的是ultrafast模式。ultrafast模式下编码速度最快,但是视频质量也最差;如果需要更高的视频质量,则可以使用更高级别的preset模式,但是编码速度也会相应降低。
-f 表示输出文件格式,这里我们使用的是flv格式。
-g 表示I帧间隔数,即每隔多少帧产生一个I帧。这里我们使用的是5,表示每隔5个帧产生一个I帧,可以提高视频帧率和压缩比。

-tune:告知输入视频的风格。风格包括:
animation:动画。提升去块(deblocking)强度与参考帧数量。
fastdecode:快速解码。禁用滤镜来加快解码。
film:电影。降低去块强度。
grain:颗粒。保留旧电影的颗粒感。
stillimage:静止图像。适用于相片幻灯片或类似主题的内容。
zerolatency:零延迟。适用于快速编码,或者低延迟流媒体内容。

 

 


http://www.kler.cn/a/419085.html

相关文章:

  • 项目代码第1讲:各个文件夹是什么意思?按照官方文档教程创建项目,各个文件夹的理解、框架自主生成的Controller(Restful风格)
  • Nextjs 前端设置正向代理 解决 跨域问题
  • 【Android】组件化嘻嘻嘻gradle耶耶耶
  • 基于单片机的微型电子琴建模
  • 论文概览 |《Urban Analytics and City Science》2023.05 Vol.50 Issue.4
  • 【海底地震仪】的发展越来越趋向于智能化、自主化、多功能化、小型化和便携化
  • ElasticSearch的学习
  • JAVA中HashMap、TreeMap、LinkedHashMap 的用法与注意事项
  • 简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署
  • AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。
  • MySQL索引与分区:性能优化的关键
  • openbmc dbus架构简析(二)
  • DDR3与MIG IP核详解(一)
  • ESP32-S3模组上跑通ES8388(12)
  • SpringBoot集成swagger3
  • 【Docker】部署nginx
  • 常用元器件使用方法36:USB转串口芯片CH340X
  • 【07】MySQL中的DQL(数据查询语言)详解
  • 【JavaWeb maven基础知识总结】
  • RabbitMQ rabbitmq.conf配置文件详解
  • 算法训练营day22(二叉树08:二叉搜索树的最近公共祖先,插入,删除)
  • spring boot3.3.5 logback-spring.xml 配置
  • git基本操作说明
  • 网络原理(1)(JavaEE)
  • 【leetcode100】螺旋矩阵
  • 数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义