2022-02-24 FFmpeg操作

参数描述

参数名称 参数内容 描述
-i 1.mp4 指定此次操作的输入文件
-re 控制读取 AVpacket 的速度,按照帧率速度读取文件 AVpacket。如果有多个流,以最慢的帧率为准。或者 以本地帧频读数据,主要用于模拟捕获设备
-y 操作过程中询问类型选择yes
out.avi 一般放在命令最后,作为此次操作的输出文件
-ss 00:00:10 指定开始时间,单位是s
-t 00:01:50 指定结束时间,单位是s
-ss 10 指定开始时间,单位是s
-t 80 指定持续时间,单位是s
-acodec copy 指定音频编码,copy表示使用原音频编码
-vcodec copy 指定视频编码,copy表示使用原视频编码
ac 2 音频通道选择(1=单通道,2=立体声)
-vframes 1 选择第几帧
-stream_loop -1 循环次数,-1表示无限循环
-formats 查看所有支持的容器格式
-codecs 查看所有编解码器
-filters 查看所有可用的filter
-pix_fmts 查看所有支持的图片格式
-sample_fmts 查看所有支持的像素格式

查看支持处理的文件格式

ffmpeg.exe -formats

图像合并成视频

.\ffmpeg.exe -y -framerate 25 -i image%d.png out.avi
2022-02-24_102813.png

查看视频信息

ffmpeg.exe -i 1.mp4
2022-06-10_144746.png

音频格式转换

flac转MP3

ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3

从视频中截取某一时间段

-ss 00:00:00=开始时间
-t 00:01:50=结束时间
-vcodec copy=视频编解码使用原格式
-acodec copy=音频编码使用原音频编码
以下2种方式等价,时间格式支持HH:mm:ss和秒值

ffmpeg -i src.mp3 -ss 00:00:00 -t 00:01:50 -vcodec copy -acodec copy result.mp3
ffmpeg -i src.mp3 -ss 0 -t 90 -vcodec copy -acodec copy result.mp3

视频中截图

-ss 截图的时间,单位秒
-y 如果这个图片存在,是否覆盖,如果不加这个参数,遇到同名文件就会提示你是否覆盖
-vframes 第几帧,因为输入的时间是秒单位,在这1秒内视频中有很多帧,这里输入你要的第几帧
out.bmp 输出图像的路径

ffmpeg.exe -ss 00:10:00 -i 1.mp4 -y  -vframes 1 out.bmp

![2022-06-10_145636.png](https://upload-images.jianshu.io/upload_images/23281417-[图片上传中...(2022-06-29_133510.png-2699a3-1656480919446-0)]
255accfbe22036b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2022-06-10_145646.png

本地视频循环推流到RTMP服务器

-stream_loop -1=循环推送,如果不加这个参数,视频结束后就停止了,加了过后视频结束后又重新开始
rtmp://localhost:29991/hf_dav/test=RTMP服务器地址

ffmpeg.exe -re -stream_loop -1 -i 1.mp4 -f flv rtmp://localhost:29991/hf_dav/test

本地视频循环推流到RTSP服务器

ffmpeg.exe -re -stream_loop -1 -i 1.mp4 -f rtsp rtsp://localhost:554/rtsp_test

推声卡音频到RTMP服务器

Windows

"audio=virtual-audio-capturer"=通过名称指定声卡设备,加双引号是因为很多时候声卡设备名称中会包含空格,可以通过加双引号将这个参数标识数来。同理在其他参数中如果包含空格时也可以这样做,比如路径。
-acodec aac=音频编码

ffmpeg.exe -f dshow -i "audio=virtual-audio-capturer" -acodec aac -ac 2 -f flv rtmp://localhost:29991/hf_dav/ai

银河麒麟V10

执行上述命令时提示 Unknown input format: 'dshow'
查看后发现在麒麟中FFmpeg没有dshow模块,但是有一个alsa模块,这个模块在Windows中是没有的。
所以在麒麟中可以同理的进行推流
-i hw:0=指定声卡设备,笔者也不知道在麒麟中怎么找声卡,网上有人说就用这个,试了一下好像是可以的

ffmpeg -f alsa -i hw:0 -acodec aac -ac 2 -f flv rtmp://localhost:81/push/test

枚举设备中的音视频设备

如下图中列出了设备中的2个video和一个audio设备

ffmpeg -list_devices true -f dshow -i dummy
2022-06-29_133510.png

提取音视频

可以将视频文件中的音视频分离
-an=不处理音频
-vn=不处理视频

//提取视频流
ffmpeg -i in.mp4 -vcodec copy -an out.mp4
//提取音频流
ffmpeg -i in.mp4 -acodec copy -vn out.mp3

合并音视频文件

ffmpeg –i in.mp3 –i in.mp4 –vcodec copy –acodec copy out.mp4

RTSP视频流录制

将RTSP视频流保存到本地视频文件中,RTMP应该也同理吧

ffmpeg –i rtsp://localhost:81/stream –vcodec copy out.mp4

多个视频文件拼接

创建一个in.txt文件
里面添加需要合并的每个文件内容

file 'in_1.mp4'
file 'in_2.mp4'
...
ffmpeg  -f concat -i in.txt  -c copy out.mp4

你可能感兴趣的:(2022-02-24 FFmpeg操作)