简单整理FFmpeg相关命令集

发布时间:2024年01月16日

FFmpeg相关命令集

简单整理了FFmpeg相关命令,主要包括ffplay播放控制和媒体播放命令、ffmpeg命令相关参数以及常用的提取音视频等命令。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案,有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
在这里插入图片描述

FFmpeg整体结构:
FFmpeg整体结构
ffmpeg/ffplay/ffprobe区别

  • ffmpeg:Hyper fast Audio and Video encoder超快音视频编码器
  • ffplay:Simple media player简单媒体播放器
  • ffprobe:Simple multimedia streams analyzer简单多媒体流分析器

ffmpeg音视频处理流程

在这里插入图片描述

1.ffmpeg命令分类查询

命令参数内容命令参数内容
-version版本-bsfs可用比特流filter
-buildconf编译配置-protocols显示可用的协议
-formats显示可用格式( muxers+demuxers)-filters显示可用的过滤器 可用的过滤器
-muxers显示可用复用器-pix_fmts显示可用的像素格式
-demuxers显示可用解复用器-layouts显示标准声道名称
-codecs显示可用编解码器( decoders+encoders)-sample_fmts显示可用的音频采样格式
-decoders显示可用解码器-colors显示可用的颜色名称
-encoders显示可用编码器

2.ffplay命令

2.1 ffplay播放控制

选项说明选项说明
q, ESC退出播放t循环切换字幕流
f全屏切换c循环切换节目
p, SPC暂停w循环切换过滤器或显示模式
m静音切换s逐帧播放
9, 09减少音量,0增加音量left/right向后/向前拖动10秒
down/up向后/向前拖动1分钟鼠标右键单击拖动与显示宽度对应百分比的文件进行播放
a循环切换音频流鼠标左键双击全屏切换
v循环切换视频流

2.2 ffplay命令选项

选项说明
-x width强制显示宽带。
-y height强制显示高度。
-pixel_format format格式设置像素格式
-an禁用音频(不播放声音)
-vn禁用视频(不播放视频)
-sn禁用字幕(不显示字幕)
-ss pos根据设置的秒进行定位拖动,注意时间单位:比如’55’ 55 seconds, ‘12:03:45’ ,12 hours, 03 minutes and 45 seconds, ‘23.189’ 23.189 second
-t duration设置播放视频/音频长度,时间单位如 -ss选项
-nodisp关闭图形化显示窗口,视频将不显示
-noborder无边框窗口
-volume vol设置起始音量。音量范围[0 ~100]
-f fmt强制使用设置的格式进行解析。比如-f s16le
-window_title title设置窗口标题(默认为输入文件名)
-showmode mode设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。缺省为0,如果视频不存在则自动选择2

2.3常用ffplay媒体播放命令

  1.播放本地文件
    ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
    ffplay buweishui.mp3
  2.播放网络流
    ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
  3.播放YUV数据
    ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv
    (-pixel_format 指定像素格式,-framerate 帧率)
  4.播放RGB数据
    ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgb
    ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb
  5.播放PCM数据
    ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
  6.音视频同时变速
    ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2
  1.双宫格
	ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v]setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320" out2.mp4
  2.四宫格
	ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v] setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS, scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" out3.mp4

3 ffmpeg命令

3.1ffmpeg命令参数说明

ffmpeg命令行参数解释:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[ options ][ -i input_file ]]… {[ options ] output_file}…

1.主要参数

-i设定输入流
-f设定输出格式(format)
-ss开始时间
-t时间长度

2.音频参数

-aframes设置要输出的音频帧数
-b:a音频码率
-ar设定采样率
-ac设定声音的Channel数
-acodec设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。
-an不处理音频
-af音频过滤器

3.视频参数

-vframes设置要输出的视频帧数
-b设定视频码率
-b:v视频码(与上一条一样)
-r设定帧速率
-s设定画面的宽与高
-vn不处理视频
-aspect aspect设置横纵比 4:3 16:9 或 1.3333 1.7777
-vcodec设定视频编解码器,如果用copy表示原始编解码数据必须被拷贝。
-vf视频过滤器

3.2 ffmpeg命令提取音视频数据

  1.保留封装格式
	  ffmpeg -i test.mp4 -acodec copy -vn audio.mp4
	  ffmpeg -i test.mp4 -vcodec copy -an video.mp4
  2.提取视频 
	  保留编码格式:ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264
	  指定格式:ffmpeg -i test.mp4 -vcodec libx264 -an test.h264
  3.提取音频
	  保留编码格式:ffmpeg -i test.mp4 -acodec copy -vn test.aac
	  指定格式:ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3

3.3 ffmpeg常用命令

  1.保持编码格式
	  ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts 
	  ffmpeg -i test.mp4 -codec copy test_copy2.ts
  2.修改音视频码率
	  ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4
  3.修改视频分辨率
	  ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4
  4.修改音频采样率
	  ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4
  5.截取视频
	  ffmpeg -i believe.mp4 -ss 00:03:00 -t 10 -codec copy 1.mp4
  1.mp4转ts
	  ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.ts
  2.mp4转flv
	  ffmpeg -i 1.mp4 -codec copy 1.flv
  1.截取一张352x240尺寸大小的,格式为jpg的图片
	  ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
  2.把视频的前30帧转换成一个Animated Gif
	  ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
  3.截取指定时间的缩微图
  	  ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg

3.4 音视频录制

  1.录制视频(默认参数)
	 桌面:ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4
	 摄像头: ffmpeg -f dshow -i video="Integrated Webcam" -y v-out2.flv (要根据自己摄像头名称)
  2.录制声音(默认参数)
	 系统声音:ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac
	 系统+麦克风声音:ffmpeg -f dshow -i audio="麦克风 (Realtek Audio)"-f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first: dropout_transition=2 a-out2.aac
  3.同时录制声音和视频(默认参数)
	 ffmpeg -f dshow -i audio="麦克风(Realtek Audio)" -f dshow -i audio="virtual-audio- capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder" -y av-out.flv
文章来源:https://blog.csdn.net/qq_45087381/article/details/135557884
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。