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.rhkb.cn/news/482198.html

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

相关文章

JAVA篇08 —— String类

欢迎来到我的主页:【一只认真写代码的程序猿】 本篇文章收录于专栏【小小爪哇】 如果这篇文章对你有帮助,希望点赞收藏加关注啦~ 目录 1 String概述 1.1 String特性 1.2 String常用方法 2 StringBuffer类 2.1 String与StringBuffer互转 2.2 Stri…

Flink四大基石之Time (时间语义) 的使用详解

目录 一、引言 二、Time 的分类及 EventTime 的重要性 Time 分类详述 EventTime 重要性凸显 三、Watermark 机制详解 核心原理 Watermark能解决什么问题,如何解决的? Watermark图解原理 举例 总结 多并行度的水印触发 Watermark代码演示 需求 代码演示&#xff…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中,将TXT格式的文本文件内容转换为Excel格式(即CSV文件)是一项常见的数据处理任务,适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel(CSV&#x…

CENet及多模态情感计算实战

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

共享售卖机语音芯片方案选型:WTN6020引领智能化交互新风尚

在共享经济蓬勃发展的今天,共享售卖机作为便捷购物的新形式,正逐步渗透到人们生活的各个角落。为了提升用户体验,增强设备的智能化和互动性,增加共享售卖机的语音功能就显得尤为重要。 共享售卖机语音方案选型: WTN602…

云备份实战项目

文章目录 前言一、整体项目简介二、服务端环境及功能简介三、 客户端环境及功能简介四、服务端文件管理类的实现1. 获取文件大小,最后一次修改时间,最后一次访问时间,文件名称,以及文件内容的读写等功能2. 判断文件是否存在&#…

【Linux】死锁、读写锁、自旋锁

文章目录 1. 死锁1.1 概念1.2 死锁形成的四个必要条件1.3 避免死锁 2. 读者写者问题与读写锁2.1 读者写者问题2.2 读写锁的使用2.3 读写策略 3. 自旋锁3.1 概念3.2 原理3.3 自旋锁的使用3.4 优点与缺点 1. 死锁 1.1 概念 死锁是指在⼀组进程中的各个进程均占有不会释放的资源…

通俗易懂:序列标注与命名实体识别(NER)概述及标注方法解析

目录 一、序列标注(Sequence Tagging)二、命名实体识别(Named Entity Recognition,NER)**命名实体识别的作用****命名实体识别的常见实体类别** : 三、标签类型四、序列标注的三种常见方法1. **BIO&#xf…

设计模式学习[10]---迪米特法则+外观模式

文章目录 前言1. 迪米特法则2. 外观模式2.1 原理阐述2.2 举例说明 总结 前言 之前有写到过 依赖倒置原则,这篇博客中涉及到的迪米特法则和外观模式更像是这个依赖倒置原则的一个拓展。 设计模式的原则嘛,总归还是高内聚低耦合,下面就来阐述…

JUnit介绍:单元测试

1、什么是单元测试 单元测试是针对最小的功能单元编写测试代码(Java 程序最小的功能单元是方法)单元测试就是针对单个Java方法的测试。 2、为什么要使用单元测试 确保单个方法运行正常; 如果修改了代码,只需要确保其对应的单元…

用Transformers和FastAPI快速搭建后端算法api

用Transformers和FastAPI快速搭建后端算法api 如果你对自然语言处理 (NLP, Natural Language Processing) 感兴趣,想要了解ChatGPT是怎么来的,想要搭建自己的聊天机器人,想要做分类、翻译、摘要等各种NLP任务,Huggingface的Trans…

架构师:Dubbo 服务请求失败处理的实践指南

1、简述 在分布式服务中,服务调用失败是不可避免的,可能由于网络抖动、服务不可用等原因导致。Dubbo 作为一款高性能的 RPC 框架,提供了多种机制来处理服务请求失败问题。本文将介绍如何在 Dubbo 中优雅地处理服务请求失败,并结合具体实践步骤进行讲解。 2、常见处理方式 …

shell语法(1)bash

shell是我们通过命令行与操作系统沟通的语言,是一种解释型语言 shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用 Linux系统中一般默认使用bash为脚本解释器 在Linux中创建一个.sh文件,例如vim test.sh…

探索文件系统,Python os库是你的瑞士军刀

文章目录 探索文件系统,Python os库是你的瑞士军刀第一部分:背景介绍第二部分:os库是什么?第三部分:如何安装os库?第四部分:简单库函数使用方法1. 获取当前工作目录2. 改变当前工作目录3. 列出目…

Paper -- 建筑物高度估计 -- 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算

论文题目: Building height estimation from street-view imagery using deep learning, image processing and automated geospatial analysis 中文题目: 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算 作者: Ala’a Al-Habashna, Ryan Murdoch 作者单位: …

FTP介绍与配置

前言: FTP是用来传送文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。 介绍 FTP的应用 在企业网络中部署一台FTP服务器,将网络设备配置为FTP客户端,则可以使用FTP来备份或更新VRP文件和配置文件…

DDD领域应用理论实践分析回顾

目录 一、DDD的重要性 (一)拥抱互联网黑话(抓痛点、谈愿景、搞方法论) (二)DDD真的重要吗? 二、领域驱动设计DDD在B端营销系统的实践 (一)设计落地步骤 &#xff0…

【聚类】K-Means 聚类(无监督)及K-Means ++

1. 原理 2. 算法步骤 3. 目标函数 4. 优缺点 import torch import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.decomposition import PCA import torch.nn as nn# 数据准备 # 生成数据:100 个张量&#xff0c…

C++学习日记---第14天(蓝桥杯备赛)

笔记复习 1.对象的初始化和清理 对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用后果是未知,同样的使用完一个对象或者变量,没有及时清理,也会造成一定的安全问题 构造函数&…

网络安全防护指南:筑牢网络安全防线(5/10)

一、网络安全的基本概念 (一)网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…