FFmpeg音视频处理的基本命令使用
文章目录
FFmpeg参数
主要参数
- -i 设定输入流
- -f : 强制输入或输出文件的格式。
ffmpeg -formats 可以列出所有的formats.
对于输入,如果不指定-f, ffmpeg 会根据输入数据(来自于输入文件,或输入设备或其它协议)来判断数据的封装格式.
对于输出,如果不指定-f, ffmpeg 也可以通过输出文件名进行推导.
-ss 开始时间
-t 时间长度
音频参数
-a a指的是audio。
- -acodec < codec_name > :设定声音编解码器,(编码器设定为”copy“,保持原有的编解码)
- copy:copy:用于指定输出视频流和输入视频流的编码格式保持一致。
- -an: (audio no)疏略音频,只保留视频。
- -ar <音频采样率>:指定音频的采样率。例
ffmpeg -i test.mp4 -ar 44100
- -ac <整数>: (audio channel):指定音频声道数量。 例
ffmpeg -i test.mpr -ac
-c:a <编码器名字>: 指定音频的编码器。
视频参数
-v v指的是video-vn:(video no)忽略视频,只保留音频。
- -vcodec < codec_name >: 设定视频编解码器(编码器设定为”copy“表示不进行编解码,即保持原来的编解码格式)。
- copy:copy:用于指定输出视频流和输入视频流的编码格式保持一致。
- -pix_fmt <像素格式>:指定视频像素格式
- -c:v <编码器>: 指定视频编码器。(-c:v copy。 保持原有的)
- -vf <滤镜>: 指定路径名字。例 ffmpeg -i input.mp4 -vf crop=in_w-100:in_h-100 output.mp4
- -r <帧率>:设定帧速率。
其他参数
- -re: 要求按照既定速率处理输入数据,这个速率即是输入文件的帧率
格式值
声音格式
- s16le
s16le是一种无压缩的声音格式,全称为signed 16-bit little-endian,意思是有符号的16位音频数据用小端字节序来存储。这种格式通常用于存储语音、音效等低质量的音频数据,因为它可以提供音频采样的全范围动态范围,从-32768到32767,能够提供足够的音量和质量,同时比其他无损或有损音频格式的文件大小较小。
滤镜值
- crop
FFmpeg 的 crop 滤镜可以用于裁剪视频,其使用方法如下:
1、基本语法:crop=< width >:<height>:<x>:<y>
其中,<width>
表示裁剪后视频的宽度,<height>
表示裁剪后视频的高度,<x>
表示从视频左侧开始裁剪的像素数量,<y>
表示从视频顶部开始裁剪的像素数量。
例如,下面的命令将从输入的视频文件中裁剪出宽度为 500,高度为 500,左上角坐标为 (100,100) 的视频,并将裁剪后的视频输出为 output.mp4:ffmpeg -i input.mp4 -vf crop=500:500:100:100 output.mp4
2、输入视频时使用滤镜:-vf "crop=<width>:<height>:<x>:<y>"
例如,要对输入的视频裁剪掉右侧和底部各 100 像素,可以输入以下命令:
ffmpeg -i input.mp4 -vf crop=in_w-100:in_h-100 output.mp4
在这个命令中,in_w 和 in_h 表示输入视频的宽度和高度。
注意,crop 滤镜也可以用于裁剪音频或图片。如果要裁剪视频中的特定部分,请先使用 FFmpeg 的 trim 滤镜裁剪为所需的范围,然后再使用 crop 滤镜裁剪到所需的大小。例如,trim=start_frame=100:end_frame=200,crop=320:240:100:100 表示从视频的第 100 帧开始裁剪,裁剪到第 200 帧,然后将宽度裁剪为 320 像素,高度为 240 像素,裁剪掉左边 100 像素和顶部 100 像素。
常见命令
查询命令
录制命令
录制视频
windows 设备
1、使用 gdigrab :ffmpeg -f gdigrab -i desktop -r 30 out.yuv
-f 指定采集数据的设备
Windows下可以使用gdigrab(给予GDI(图形设备接口(Graphics Device Interface))的抓屏设备)
ffmpeg -devices 命令查询当前可用采集的设备有哪些。
-i 表示查看输入设备,可以指定数字,也可以指定设备名字。
ffmpeg -list_devices true -f dshow -i dummy,查看可用设备的清单
- -r表示帧率
- out.yuv表示存储数据的文件。YUV表示原始数据格式。没有任何的压缩。
执行命令如下图,所示。
播放刚才录制的视频
原始数据未指定分辨率和播放格式,播放器无法解析,可能会播放异常。
播放视频文件指定分辨率和格式。就是录制视频生成out.yuv文件显示的分辨率和格式信息。
- -video_size
指定分辨率。
- -pixel_format
指定视频像素格式。
执行播放命令
ffplay -video_size 1920x1080 -pixel_format bgra ./out.yuv
按q或ctrl+c停止录制
录制声音
1、查询录音设备
支持的录音设备为(麦克风 (Realtek High Definition Audio))
2、录制声音
ffmpeg -f dshow -i audio="麦克风 (Realtek High Definition Audio)" out.wav
3、播放声音
ffplay ./out.wav
按q或ctrl+c停止录制
录制音视频
ffmpeg -f gdigrab -s 1920x1080 -i desktop -f dshow -i audio="麦克风 (Realtek High Definition Audio)" out.mp4
指定录制视频和音频的信息。
分解/复用命令
一个已经封装格式的音视频文件,例如mp4、flv格式。Demuxer 拆解,解封装之后拿到编码数据,decoder解码后拿到原始数据(高度还原的数据,不是真正的原始数据,真正的原始数据是相机或者麦克风手机的数据),然后再指定编码格式encoder编码,最后指定封装格式muxer就变成最后的输出文件了。
分解复用就是对解封装后的编码数据操作。可以转格式,单独抽取音频或者视频。
- mp4 转 flv
ffmpeg -i out/media.mp4 -vcodec copy -acodec copy media.flv - mp4 转 mov
ffmpeg -i out/media.mp4 -vcodec copy -acodec copy media.mov - 从flv中抽取视频
ffmpeg -i out/media.flv -vcodec copy -an out/meida_video.h264 - 从flv中抽取音频
ffmpeg -i out/media.flv -acodec copy -vn out/meida_audio.aac - aac 转 mp3
ffmpeg -i out/meida_audio.aac -acodec mp3 out/meida_audio.mp3
处理原始数据命令
原始数据在这里指的就是FFmpeg解码后的数据,对于视频来说就是YUV数据,属于音频来说就PCM数据。
提前YUV数据
ffmpeg -i input.mp4 -an -c:v rewvideo -pix_fmt yuv420p out.yuv
既然是提取原始数据,所以要指定格式。
ffmpeg提取PCM数据
提取PCM命令如下:
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f sl6le out.pcm
当播放的时候可能会出现错误:out.pcm: Invalid data found when processing nput
因为你是原始的数据嘛,播放器不知道你采样频率,声道数,这些信息,所以会出错。
生成pcm数据需要指定这些参数,同样播放pcm数据也需要告诉ffplay这些对应的参数。
播放命令
ffplay -ar 44100 -ac 2 -f s16le out.pcm
滤镜命令
滤镜使用的大致流程:拿到解码后的数据帧,过滤,拿到过滤后的数据,编码再输出。
命令使用:
ffmpeg -i input.mp4 -vf <指定滤镜> -c:v libx264 -c:a copy out.mp4
ffmpeg -i input.mp4 -vf crop=500:500:0:0 -c:v libx264 -c:a copy out.mp4
意思就是输入input.mp4文件,裁剪出宽度为 500,高度为 500,左上角坐标为 (0,0) 的视频,视频编码指定为 libx264 ,音频编码保持不变。并将裁剪后的视频输出为 output.mp4
裁剪与合并命令
ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.mp4
这个命令意思是 从 input.mp4的0时0分0秒开始截取10秒的视频。
ffmpeg -f concat -i input.txt out.flv
input.txt内容是文件列表,记录了要合并的文件。内容为”file fileName”形式。
这条命令就是把t1.ts和t2.ts合并。
图片/视频互转命令
视频转图片
ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jpeg
- -r 设定帧速率,视频转换出图片的帧率,-r 1 表示每秒转出为1张图片。
- -f 告诉ffmeg 转出的格式。 image2是一种图片格式。
- image-%3d.jpeg 是生成图片的命名。
图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
直播推/拉流
直播推流
ffmpeg -re -i out.mp4 -c copy -f flv trmp://server/live/streamName
直播拉流
ffmpeg -i remp://server/live/streamName -c copy output.flv
ffprobe
ffprobe是ffmpeg提供的三大工具之一,用来查看音视频文件的各种信息,比如:封装格式、音频/视频流信息、数据包信息等。
查看音视频文件的封装格式
ffprobe -show_format inputFile
查看音视频文件的流信息
ffprobe -show_streams inputFile
- 分享
- 举报
-
浏览量:1104次2023-12-21 17:20:27
-
2024-01-17 10:40:55
-
浏览量:4405次2021-04-25 16:35:51
-
浏览量:4925次2021-04-26 17:29:53
-
浏览量:7432次2021-07-02 15:09:39
-
浏览量:1080次2023-12-26 16:33:04
-
浏览量:1966次2022-11-21 17:11:41
-
浏览量:5459次2021-04-27 16:31:59
-
浏览量:3489次2020-08-03 19:28:14
-
浏览量:2056次2020-08-04 20:27:13
-
浏览量:1342次2023-01-12 17:45:30
-
浏览量:1396次2024-02-27 17:03:43
-
浏览量:592次2023-10-24 17:47:15
-
浏览量:684次2023-10-30 15:06:52
-
浏览量:1219次2024-02-22 15:52:02
-
浏览量:11711次2022-06-10 21:26:04
-
浏览量:757次2023-10-23 16:21:43
-
浏览量:5393次2021-04-23 14:10:42
-
浏览量:2953次2020-07-27 15:26:51
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
一休摸鱼
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明