ffmpeg命令1

ffmpeg命令参数:
主要参数 作用
-i 设置输入流
-f 设置输出格式
-ss 设置开始时间
-t 设置时间长度
音频参数 作用
-aframes 设置输出的音频帧数
-b:a 设置音频码率
-ar 设置采样率
-ac 设置声音的channel数
-acodec 设置声音编解码器,cpoy表示原始编解码数据必须被拷贝
-an 不处理音频
-af 音频过滤器

例子:

ffmpeg -i test.mp4 -b:a 192k -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out.mp3
视频参数 作用
-vframes 设置输出的视频帧数
-b 设置视频码率
-b:v 设置视频码率
-r 设置帧速率
-s 设置画面的宽与高
-vn 不处理音频
-aspect 设置横纵比4:3,16:9,1.3333:1.7777
-vcodec 设置视频编解码器,cpoy表示原始编解码数据必须被拷贝
-vf 视频过滤器

例子:

ffmpeg -i test.mp4 -vframes 300 -b:v 300k -r 30 -s 640x480 -aspect 16:9 -vcodec libx265
ffmpeg提取音视频数据:

保留封装格式:
ffmpeg -i test.mp4 -acodec copy -vn -audio.mp4
ffmpeg -i test.mp4 -vcodec copy -an video.mp4

提取视频:
保留编码格式:ffmepg -i test.mp4 -vcodec copy -an test_copy.h264
强制格式:ffmpeg -i test.mp4 -vcodec libx264 -an test.h264

提取音频:
保留编码格式:ffmpeg -i test.mp4 -acodec copy -vn test.aac
强制格式:ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3

ffmpeg命令提取像素格式

提取YUV:
提取3秒数据,分辨率和原视频一致:
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
提取3秒数据,分辨率转为320x240
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv

提取RGB:
提取3秒数据,分辨率转为320x240
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb

RGB和YUV之间的转换:
ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24_320x240_2.rgb

提取PCM:
ffmpeg -i test.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm
ffmpeg -i test.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav
ffmpeg -i test.mp3 -ar 48000 -ac -codec:a pcm_s16le out2_s16le.wav
ffmpeg -i test.mp3 -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le 48000_2_f32le_2.pcm
后缀格式可不为pcm,目的是为了好识别

ffmpeg命令转封装

保持编码格式:
ffmpeg -i test.mp4 -vcodec copy -acode copy test_copy.ts
ffmpeg -i test.mp4 -codec copy test_copy2.ts
若没字幕流的话上述两条命令是相等的

改变编码格式:
ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv

修改帧率:
ffmpeg -i test.mp4 -r 15 output2.mp4

修改视频码率:
ffmpeg -i test.mp4 -b 400k output_b.mkv
ffmpeg -i test.mp4 -b:v 400k output_bv.mkv

修改音频码率:
ffmpeg -i test.mp4 -b:a 192k output_ba.mp4
如果不想重新编码video,需要加上-vcodec copy

修改音视频码率:
ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4

修改视频分辨率:
ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4

修改音频采样率:
ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4

ffmpeg拼接文件

以MP4格式进行拼接:
方法一:ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -codec copy out_mp4.mp4
方法二:ffmpeg -f concat -i mp4list.txt -codec copy out_mp42.mp4

以TS格式进行拼接:
方法1:ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out_ts.mp4
方法2:ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4

以FLV格式进行拼接:
方法1:ffmpeg -i "concat:1.flv|2.flv|3.flv" -codec copy out_flv.mp4
方法2:ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4

方法1只适用于部分封装格式,比如TS
拼接建议:

  1. 使用方法2进行拼接
  2. 转成TS格式再进行拼接

不同编码拼接要点:

  1. 视频分辨率可以不同,但编码格式需统一
  2. 音频编码格式需统一,音频参数(采样率/声道等)也需统一
ffmpeg图片和视频转换

截取一张图片:
ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg
-vframes 帧 如果大于1 那么 输出加%03d test%03d.jpg, C语言格式

转换视频为图片(每帧一张图):
ffmpeg -i test.mp4 -t 5 -s 640x360 -r 15 frame%03d.jpg

图片转换为视频:
ffmpeg -f image2 -i frame%03d.jpg -r 25 video.mp4

从视频中生成GIF图片:
ffmpeg -i test.mp4 -t 5 -r 1 image1.gif
ffmpeg -i test.mp4 -t 5 -r 25 -s 640x360 image2.gif

将 GIF 转化为 视频:
ffmpeg -f gif -i image2.gif image2.mp4

ffmpeg视频录制

查看可用设备名字:
ffmpeg -list_devices true -f dshow -i dummy

录制视频(默认参数):
桌面:ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4
摄像头: ffmpeg -f dshow -i video="Integrated Camera" -y v-out2.flv (要根据自己摄像头名称)

录制声音(默认参数):
系统声音:ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac
系统+麦克风声音:
ffmpeg -f dshow -i audio="麦克风阵列 (2- Realtek High Definition Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 a-out2.aac

同时录制声音和视频:
ffmpeg -f dshow -i audio="麦克风阵列 (2- Realtek High Definition 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

查看视频录制可选参数:
ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"

查看音频录制可选参数:

  1. ffmpeg -f dshow -list_options true -i audio="virtual-audio-capturer“
  2. ffmpeg -f dshow -list_options true -i audio="麦克风阵列 (2- Realtek High Definition Audio)"
ffmpeg拉流

直播拉流:
ffplay rtmp://server/live/streamName
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
对于不是rtmp的协议 -c copy要谨慎使用,若没有用-c copy,ffmpeg会根据指定的文件后缀,自动生成相应的编码格式

ffmpeg推流

ffmpeg -re -i out.mp4 -c copy flv rtmp://server/live/streamName
-re,表示按时间戳读取文件

你可能感兴趣的:(ffmpeg命令1)