FFmpeg常见命令行

1、ffmpeg命令行 视频生成图片

ffmpeg -i test.mp4 -r 25 -f image2 data/image%3d.jpg

这个命令行使用FFmpeg工具将视频文件(test.mp4)转换为一系列图像文件。

让我们逐个解释每个参数的含义:

  • -i test.mp4: 指定输入文件为test.mp4。-i是FFmpeg用于指定输入文件的选项。
  • -r 25: 设置输出图像的帧率为25帧/秒。-r是FFmpeg用于设置帧率的选项。
  • -f image2: 指定输出格式为image2,表示输出为一系列图像文件。-f是FFmpeg用于指定输出格式的选项。
  • data/image%3d.jpg: 指定输出文件的路径和命名模式。data是输出目录,image%3d.jpg是输出文件名的模式。%3d表示以三位数字序列作为文件名中的一部分,从001开始递增。

该命令行将读取test.mp4视频文件,并以每秒25帧的帧率将其转换为一系列图像文件,保存在data目录下,文件名以image001.jpgimage002.jpg等方式命名。

扩展:
在FFmpeg中,-f参数用于指定输出文件的格式。这个参数后面可以跟随不同的参数值来选择所需的输出格式。

以下是一些常用的-f参数值及其对应的输出格式:

  • image2: 将输出设置为一系列图像文件。
  • mp4: 输出为MP4格式的视频文件。
  • avi: 输出为AVI格式的视频文件。
  • mov: 输出为MOV格式的视频文件。
  • flv: 输出为FLV格式的视频文件。
  • matroska: 输出为Matroska格式(MKV)的视频文件。
  • mpeg: 输出为MPEG格式的视频文件。
  • gif: 输出为GIF动画文件。
  • wav: 输出为WAV音频文件。
  • mp3: 输出为MP3音频文件。
  • aac: 输出为AAC音频文件。

这只是其中的一些常见示例,实际上还有许多其他支持的输出格式可以在FFmpeg中使用。你可以通过输入ffmpeg -formats命令来查看FFmpeg支持的所有格式和编解码器

2、ffmpeg命令行 图片合并视频

ffmpeg -r 25 -f image2 -i data/image%3d.jpg -vcodec libx264 -s 1920*1080 -g 100 -keyint_min 25 -sc_threshold 0 -pix_fmt yuv420p out.mp4

这个命令使用FFmpeg工具将一系列图像文件(data/image001.jpg,data/image002.jpg,…)合并为一个视频文件(out.mp4)。

让我们逐个解释每个参数的含义:

  • -r 25: 设置输出视频的帧率为25帧/秒。这意味着每秒将有25个图像帧被添加到视频中。
  • -f image2: 指定输入格式为image2,表示输入为一系列图像文件。
  • -i data/image%3d.jpg: 指定输入文件的路径和命名模式。%3d表示以三位数字序列作为文件名中的一部分,从001开始递增。例如,data/image001.jpgdata/image002.jpg等。
  • -vcodec libx264: 设置视频编码器为libx264,用于将图像序列编码为H.264视频格式。
  • -s 1920x1080: 设置输出视频的分辨率为1920x1080像素。
  • -g 100: 设置关键帧间隔为100帧。这意味着每100帧会有一个关键帧,其他帧则通过对前一关键帧的变化进行压缩。
  • -keyint_min 25: 设置最小关键帧间隔为25帧。
  • -sc_threshold 0: 设置场景切换阈值为0。这将禁用场景切换检测。
  • -pix_fmt yuv420p: 设置输出视频的像素格式为YUV420P。这是一种常见的像素格式,广泛支持播放和编码。
  • out.mp4: 指定输出文件为out.mp4。

综上所述,该命令将以每秒25帧的帧率读取data目录下的图像文件,并使用libx264编码器将其合并为一个1920x1080分辨率的视频文件(out.mp4)。关键帧间隔为100帧,最小关键帧间隔为25帧。所有帧都被视为关键帧,且没有场景切换检测。输出视频的像素格式设置为YUV420P。

3、推拉流

  • 查看摄像头列表
ffmpeg -list_devices true -f dshow -i dummy

这个命令使用FFmpeg工具来列出可用的音视频设备列表。

让我们逐个解释每个参数的含义:

  • -list_devices true: 启用设备列表功能,将列出可用的音视频设备。
  • -f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。
  • -i dummy: 指定一个虚拟的输入设备名称为"dummy"。这里使用dummy设备只是为了触发设备列表的输出,而不是实际打开设备进行采集。

综上所述,该命令将使用FFmpeg工具以DirectShow格式尝试打开名为"dummy"的虚拟输入设备,从而触发设备列表的输出。该列表将包含系统中可用的音视频设备信息。

  • 播放摄像头
 ffplay -f dshow -i video="HP 5MP Camera"

这个命令使用FFplay工具来播放一个名为"FULL HD webcam"的视频设备。

让我们逐个解释每个参数的含义:

  • -f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。
  • -i video="FULL HD webcam": 指定视频输入设备名称为"FULL HD webcam"。video=是用于指定视频设备的前缀,后面跟随设备名称。

综上所述,该命令将使用FFplay工具以DirectShow格式打开名为"FULL HD webcam"的视频设备,并开始播放该视频设备的内容。

  • 查看摄像头的分辨率格式
ffmpeg -list_options true -f dshow -i video="HP 5MP Camera"

这个命令使用FFmpeg工具来列出指定视频设备的可用选项。

让我们逐个解释每个参数的含义:

  • -list_options true: 启用选项列表功能,将列出指定设备的可用选项。
  • -f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。
  • -i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。

综上所述,该命令将使用FFmpeg工具以DirectShow格式尝试打开名为"HP 5MP Camera"的视频设备,并列出该设备的可用选项信息。这些选项可以包括视频分辨率、帧率、亮度、对比度等相关设置。

  • 摄像头推流到RTMP服务
ffmpeg -f dshow -i video="HP 5MP Camera" -vcodec libx264 -acodec aac -ar 44100 -ac 1 -r 25 -s 1920*1080 -f flv rtmp://192.168.1.9/live/desktop

这个命令使用FFmpeg工具从名为"HP 5MP Camera"的视频设备采集视频,并通过RTMP协议将其实时推流到指定的服务器地址。

让我们逐个解释每个参数的含义:

  • -f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。
  • -i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。
  • -vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。
  • -acodec aac: 设置音频编码器为AAC,用于对音频进行AAC编码。
  • -ar 44100: 设置音频采样率为44100 Hz。
  • -ac 1: 设置音频通道数为1,即单声道。
  • -r 25: 设置输出视频的帧率为25帧/秒。
  • -s 1920x1080: 设置输出视频的分辨率为1920x1080像素。
  • -f flv: 指定输出格式为FLV(Flash Video)。
  • rtmp://192.168.1.9/live/desktop: 指定目标服务器的RTMP推流地址。

综上所述,该命令将从名为"HP 5MP Camera"的视频设备采集视频和音频数据,并对其进行H.264和AAC编码。然后,它将以25帧/秒的帧率、1920x1080分辨率的格式,通过RTMP协议推流到指定的服务器地址(rtmp://192.168.1.9/live/desktop)。这样,在指定的服务器上可以接收和处理该实时视频流。

  • 摄像头推流到RTSP(rtp over tcp)
ffmpeg -f dshow -i video="HP 5MP Camera" -rtsp_transport tcp -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -f rtsp rtsp://127.0.0.1:8554/webcam

这个命令使用FFmpeg工具从名为"HP 5MP Camera"的视频设备采集视频和音频,并将其通过RTSP协议进行实时传输。

让我们逐个解释每个参数的含义:

  • -f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。
  • -i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。
  • -rtsp_transport tcp: 指定RTSP传输使用TCP协议。默认情况下,FFmpeg使用UDP协议进行RTSP传输,但通过指定此参数,我们可以强制使用TCP协议。
  • -vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。
  • -preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。
  • -acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。
  • -ar 44100: 设置音频采样率为44100 Hz。
  • -ac 1: 设置音频通道数为1,即单声道。
  • -r 25: 设置输出视频的帧率为25帧/秒。
  • -f rtsp: 指定输出格式为RTSP(Real-Time Streaming Protocol)。
  • rtsp://127.0.0.1:8554/webcam: 指定目标服务器的RTSP地址。

综上所述,该命令将从名为"HP 5MP Camera"的视频设备采集视频和音频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTSP协议将编码后的数据以25帧/秒的帧率实时传输到指定的RTSP地址(rtsp://127.0.0.1:8554/webcam)。这样,在指定的服务器上可以接收并播放该实时视频流。

  • windows桌面推流到RTMP服务
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -s 1920*1080 -f flv rtmp://127.0.0.1/live/desktop

这个命令使用FFmpeg工具从桌面(屏幕)采集视频,并将其编码为H.264格式,音频编码为MP3格式,然后通过RTMP协议将其实时推流到指定的服务器地址。

让我们逐个解释每个参数的含义:

  • -f gdigrab: 指定输入格式为gdigrab,用于从桌面采集视频。
  • -i desktop: 指定采集源为桌面。
  • -vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。
  • -preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。
  • -acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。
  • -ar 44100: 设置音频采样率为44100 Hz。
  • -ac 1: 设置音频通道数为1,即单声道。
  • -r 25: 设置输出视频的帧率为25帧/秒。
  • -s 1920x1080: 设置输出视频的分辨率为1920x1080像素。
  • -f flv: 指定输出格式为FLV(Flash Video)。
  • rtmp://127.0.0.1/live/desktop: 指定目标服务器的RTMP推流地址。

综上所述,该命令将从桌面采集视频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTMP协议将编码后的数据以25帧/秒的帧率实时推流到指定的RTMP服务器地址(rtmp://127.0.0.1/live/desktop)。这样,在指定的服务器上可以接收并播放来自桌面的实时视频流。

  • windows桌面推流到RTSP服务(rtp over udp)
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -s 1920*1080 -f rtsp rtsp://127.0.0.1:8554/live/desktop

这个命令使用FFmpeg工具从桌面(屏幕)采集视频,并将其编码为H.264格式,音频编码为MP3格式,然后通过RTSP协议将其实时传输到指定的RTSP地址。

让我们逐个解释每个参数的含义:

  • -f gdigrab: 指定输入格式为gdigrab,用于从桌面采集视频。
  • -i desktop: 指定采集源为桌面。
  • -vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。
  • -preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。
  • -acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。
  • -ar 44100: 设置音频采样率为44100 Hz。
  • -ac 1: 设置音频通道数为1,即单声道。
  • -r 25: 设置输出视频的帧率为25帧/秒。
  • -f rtsp: 指定输出格式为RTSP(Real-Time Streaming Protocol)。
  • rtsp://127.0.0.1:8554/live/desktop: 指定目标RTSP地址。

综上所述,该命令将从桌面采集视频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTSP协议将编码后的数据以25帧/秒的帧率实时传输到指定的RTSP地址(rtsp://127.0.0.1:8554/live/desktop)。这样,在指定的RTSP服务器上可以接收并播放来自桌面的实时视频流。

  • RTMP推流
ffmpeg -re -i input.flv -f flv -r 25 -s 1920*1080 -an "rtmp://127.0.0.1/live/test"

这个命令使用FFmpeg工具将输入的FLV文件实时推流到指定的RTMP服务器地址。

让我们逐个解释每个参数的含义:

  • -re: 将输入文件以实时模式读取。这将按照文件的原始帧率进行处理,而不是尽可能快地处理。
  • -i input.flv: 指定输入文件为input.flv。你需要将此命令中的input.flv替换为实际的输入文件路径和名称。
  • -f flv: 指定输出格式为FLV(Flash Video)。
  • -r 25: 设置输出视频的帧率为25帧/秒。
  • -s 1920x1080: 设置输出视频的分辨率为1920x1080像素。
  • -an: 禁用音频流。这将确保在推流过程中没有音频被传输。
  • "rtmp://127.0.0.1/live/test": 指定目标RTMP服务器的地址和流名称。你可以根据需要修改此地址和流名称。

综上所述,该命令将以实时模式读取FLV文件,并将其作为FLV格式的视频流通过RTMP协议实时推流到指定的RTMP服务器地址。输出的视频帧率为25帧/秒,分辨率为1920x1080像素,同时禁用了音频流的传输。请确保替换input.flv为实际的输入文件路径和名称,并根据需要修改RTMP服务器地址和流名称。

  • 本地视频文件RTSP循环推流(tcp)
ffmpeg -re -stream_loop -1 -i test.mp4 -rtsp_transport tcp -vcodec h264 -acodec copy -f rtsp rtsp://127.0.0.1:8554/live/test

这是一个使用FFmpeg命令行工具将MP4视频文件通过RTSP协议进行传输的命令。下面是每个选项的解释:

  • -re:以实时速度读取输入文件。
  • -stream_loop -1:设置输入文件循环播放,直到手动停止命令。
  • -i test.mp4:指定输入文件为test.mp4。
  • -rtsp_transport tcp:指定使用TCP传输协议进行RTSP传输。
  • -vcodec h264:使用H.264编码器进行视频编码。
  • -acodec copy:直接复制音频流,不进行重新编码。
  • -f rtsp:将输出格式设置为RTSP。
  • rtsp://127.0.0.1:8554/live/test:指定输出目标为RTSP服务器的地址和流名称。

通过执行该命令,你可以将test.mp4文件的视频流通过RTSP协议传输到本地主机上的名为"test"的RTSP流。请确保已经安装并正确配置了RTSP服务器来接收并处理该流。

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

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

相关文章

NetAdvangate Infragisticss 控件在工程移动到别的机器上,引用失效问题

1.这是一个Bug。因为其他控件,比如DevExpress不存在这个问题。 2.解决的方法也很简单,先把无法找到的引用记录下来,然后把这些应用删除,最后重新把它们引用进来就行了。不过,这样一来,工程每次移动到别的机…

sharepoint被阻止的文件类型解释说明

可限制上载或下载特定文件类型。每个 Web 应用程序都维护一个基于文件扩展名的阻止文件类型列表。例如,由于扩展名为 .exe 的文件可能会在客户端计算机上运行并可能包含恶意代码,因此可阻止此类文件。 默认情况下,会阻止许多文件类型&#xf…

zabbix 监控使用宏自动发现网卡并进行监控

一、自动发现网卡并进行监控 首先新建一个模板 1、探索规则名称为Network interface discovery 键值为net.if.discovery 2、filter处要把宏给添加上{#IFNAME} matches Network interfaces for discovery 3、新建项目原型 创建网卡进来的流量的监控项 Incoming network…

转:flex [Inspectable]标签详解

flex里的[Inspectable]标签用于为as类的属性定义一些可供flex代码提示等使用的信息,比如属性的类型啦合法值啦默认值啦之类的,[Inspectable]标签可以用在属性上,也可以用在getter/setter方法上,写法如下: [Inspectable…

zabbix使用宏自动发现挂载的文件系统并进行监控

首先创建模板 在模板里创建探索规则 Mounted filesystem discovery vfs.fs.discovery filters 为和/或者 {#FSTYPE} matches File systems for discovery 项目原型1 Free disk space on {#FSNAME} vfs.fs.size[{#FSNAME},free] 数字的无正负的 十进制数字 单位是…

关于zabbix_get 的介绍

zabbix_get是zabbix服务端来获取客户端的命令或者是客户端获取获取客户端的值。 默认安装的zabbix的配置文件是在/usr/local/etc/zabbix_agentd.conf,在/usr/local/bin下有zabbix_get和zabbix——sender,日志文件是在/tmp/zabbix_agentd.log 只要是出问题了&#…

linux下的pdf分割合并软件

经常处理一些pdf格式的比赛题目,有时候只需要里面不连续的几个题目,这时候就想到了pdf的分割合并。 于是找到了pdftk,可以去它的主页看看http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ 还有vim的插件,地址是http://www.ac…

rsync+inotify实现服务器之间文件实时同步

原文转自http://dl528888.blog.51cto.com/2382721/771533/ 之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件…

总结一下HtmlAgilityPack

参考:http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html 关于 XPath Axes,child和descendant的区别在于child只包含下一级的子节点,而descendant包含所有的子节点,下一级,再下一级,再下一级…

vmware workstation克隆linux后修改网卡为eth0方法

原文出自http://www.2cto.com/os/201306/222812.htmlvmware workstation克隆linux后修改网卡为eth0方法场景: vmware workstation 8, guest OS:CentOS 6.2. Host OS:windows 7 问题: 克隆RHEL 6.3 后网卡名字有两个eth0和eth1,实际起作用的是eth1,eth0是…

zabbix监控特定进程

原文出自http://www.2cto.com/os/201405/302249.html 由于一些服务器上跑着一些重要程序,需要对它们进行监控,公司用的是zabbix监控,之前都是在zabbix中添加自定义脚本对特定程序进行监控,最近看了zabbix的官方文档,发…

linux简单几个小命令

踢除其他用户]pkill -kill -t tty 退除所有人[查看系统版本]cat /etc/issue | awk {if(NR1)print $1 FS $3}//NR:行数 FS:空格[快速删除]rsync --delete-before -a -H -v --progress --stats[查看逻辑CPU个数]cat /proc/cpuinfo |grep "processor"|sort -u|wc -l[查看…

OMA 设备管理的通知发起的会话OMA Device Management Notification Initiated Session

介绍 一些设备不能持续侦听是否有需要连接的服务器。有的设备基于安全考虑不希望“开放一个端口”(比如主动接受连接)。无论如何,大多数设备可以接受未经请求的信息,有时也叫做“通知”。比如一些手持设备可以接收SMS文本短信息。…

zabbix中常用到的几个key:

1、监控端口的:net.tcp.port[,3306]/usr/local/zabbix/bin/ -s192.168.8.120 -knet.tcp.port[,3306] 返回1为192.168.8.120的端口3306存在,0为不存在2、监控进程的:proc.num[mysqld]/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc…

【zabbix个性化监控之一】TCP连接数

一、在被监控端上设置 主要命令: netstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}1netstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}输出内容: TIME_WAIT 100 CLOSE_WAIT 5 FIN_WAIT1 6 ESTABLISHED 161 S…

石头剪刀布 -2013编程之美全国测试赛 每日一练

Description:石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。 一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有规律的,比如:“石头-布-石…

CentOS 6.4下PXE+Kickstart无人值守安装操作系统

原文出自http://http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html 一、简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持…

CSS3属性box-shadow使用教程

CSS3的box-shadow属性可以让我们轻松实现图层阴影效果。我们来实战详解一下这个属性。 1. box-shadow属性的浏览器兼容性 先来看一个这个属性的浏览器兼容性: Opera: 不知道是从哪个版本开始支持的,我在发这篇文章测试的时候,正好更新了Opera到最新的10.…

实战Zabbix-Server数据库MySQL的libdata1文件过大

原文出自http://www.linuxidc.com/Linux/2014-12/110353.htm zabbix自动清理30天前的数据 zabbix属于一个细度化的监控工具,其入库数据随着细度的增加相应的入库数据量也会较大,当数据量到一定时候的时候其反映速度会比较慢,尽管其监控服务在…

RadioButtonList Enabled=false 文字背景

RadioButtonList有个属性RepeatLayout"Flow",可以防止控件与前面的文本换行,但是,使用这个属性之后,有个奇怪的问题,RadioButtonList 在Enabledfalse时,文字成灰色,在打印时&#xff…