音视频 ffmpeg ffplay ffprobe命令行

ffmpeg工具

命令格式

ffmpeg [全局选项] {[输入选项] -i input_url} ... {[输出选项] output_url} ...

帮助命令

# 查看解封装帮助(dhav ffmpeg4.2才有)
ffmpeg -h demuxer=dhav
ffmpeg -h demuxer=dshow
# 查看流过滤器帮助
ffmpeg -h bsf=h264_mp4toannexb
# 查看mp4封装器的选项帮助,比如movflags设置
ffmpeg -h muxer=mp4 -hide_banner
#
ffmpeg -h protocol=rtmp -hide_banner

常用操作

摄像头

# windows 查看dshow设备 录制
ffmpeg.exe -hide_banner -list_devices true -f dshow -i dummy
ffmpeg -f dshow -i video="" -vcodec libx264 mycamera.mkv
# mac 查看设备 录制
ffmpeg -hide_banner -list_devices true -f avfoundation -i dummy
ffmpeg -f avfoundation -framerate 25 -i "" mycamera.mp4
ffmpeg -f avfoundation -framerate 25 -i 0 mycamera.mp4
./ffmpeg -hide_banner -f avfoundation -framerate 30 -pixel_format nv12 -i "FaceTime高清摄像头(内建)" -vcodec mpeg4 mycam.mp4

分离音视频

# 分离音频 -vn 表示禁用视频
ffmpeg -i 1.mp4 -vn -y -acodec copy 1.aac
# 分离视频 -an 表示禁用音频
ffmpeg -i 1.mp4 -an -y -vcodec copy 1.mp4
# 获取annexb格式h264裸流
ffmpeg -i 1.mp4 -c:v copy -bsf:v h264_mp4toannexb -an 1.h264

导出图片

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

合并音视频

# 合并
ffmpeg -i 1.avi -i 1.mp3 -vcodec copy -acodec copy 2.avi

视频格式互转

# mp4 -> h264
ffmpeg -i 1.mp4 -vcodec copy -an -f h264 1.h264
# main/baseline/high - 无b帧,
ffmpeg -i 1.mp4 -vcodec libx264 -profile:v main -pix_fmt yuv420p -s 640x480 -an 2.mp4
ffmpeg -i 1.mp4 -vcodec libx264 -bf 0 -acodec copy 2.mp4
ffmpeg -i 1.mp4 -vcodec libx264 -x264opts "bframes=0" -an 2.mp4
#
ffmpeg -i 1.mp4 -c copy -f hls -hls_playlist_type vod -hls_time 6 -hls_flags single_file 2.m3u8

音频格式互转

# aac to pcm
ffmpeg -y -i 1.aac -acodec pcm_s16le -f s16le -ac 2 -ar 44100 1.pcm
ffmpeg -y -i 1.m4a -acodec pcm_f32le -f f32le -ac 2 -ar 44100 1.pcm
# pcm to aac
ffmpeg -y -acodec pcm_s16le -f s16le -ac 2 -ar 44100 -i 1.pcm 1.aac
# mp3 to aac
ffmpeg -hide_banner -i libai.mp3 -acodec aac libai.aac

视频操作

# 截图一段视频(从10s开始30s长的视频)
ffmpeg -i 1.mp4 -ss 10 -t 30 1_clip.mp4
# 添加字幕(未验证)
ffmpeg -i 1.avi -vf subtitles=titles.srt 1_srt.mp4

音频操作

图像缩放

ffmpeg -s 480x272  -pix_fmt yuv420p -i src01_480x272.yuv -sws_flags bilinear
       -s 1280x720 -pix_fmt yuv420p src01_bilinear_1280x720.yuv
ffmpeg -s 480x272  -pix_fmt yuv420p -i src01_480x272.yuv -sws_flags bicubic
       -s 1280x720 -pix_fmt yuv420p src01_bicubic_1280x720.yuv
ffmpeg -s 480x272  -pix_fmt yuv420p -i src01_480x272.yuv -sws_flags neighbor
       -s 1280x720 -pix_fmt yuv420p src01_neighbor_1280x720.yuv

滤镜

# 模糊
ffmpeg -i 1.mp4 -vf boxblur=1.5:1 2.mp4
ffmpeg -i 1.mp4 -vf -vf smartblur=5:0.8:0 2.mp4
# 降噪
ffmpeg -i 1.mp4 -vf mp=denoise3d  output.mp4
ffmpeg -i 1.mp4 -vf hqdn3d  output.mp4
# 色彩空间或色域
ffmpeg -i 1.mp4 -vf "scale=in_color_matrix=bt709:out_color_matrix=bt601" output.mp4

参数

-h full 显示所有帮助

-hide_banner 隐藏每次打印的banner

-devices                                         显示所有输入输出设备

-formats   -demuxers   -muxers     列表出所有demuxer和muxer、demuxer、muxer

-codecs   -encoders   -decoders    列表出所有编解码器、编码器、解码器

-hwaccels                                       列表出所有支持硬件加速

-pix_fmts                                        显示所有像素格式

-sample_fmts                                显示所有采样格式

-bsfs (h264_mp4toannexb)        显示所有比特流过滤器

-protocols                                      显示所有支持的输入输出协议

-filters                                            显示所有音视频滤镜

-layouts                                         显示音频通道布局

主要参数

-f                   输入输出格式

-y/-n             覆盖/不覆盖输出文件

-c/-codec     常见-c:v、c:v:1 libx264

-ss               起点时间,单位秒,或者00:00:00

-t                 输入输出时间段

-to               读到写到的时间点

-metadata   添加元信息   -metadata title="mytitle"或 -metadata:s:a:0 language=ger

视频参数

  • -vcodec 编解码器 libx264
  • -vf         音频过滤器

音频参数

  • -acodec 编解码器 libfaac
  • -ac         通道数    2
  • -ar         采样率     44100
  • -ab        比特率    128k
  • -af         音频过滤器

ffplay工具

播放指定格式音视频(-loop 0表示一直循环)

# 播放pcm音频
ffplay -ar 16000 -channels 1 -f s16le -i xxx.pcm
ffplay -ar 16000 -ac 1 -f s16le -i xxx.pcm

播放带滤镜音视频

# 视频播放速度加快两倍(只加速视频,不加速音频)
ffplay -i input.mp4 -vf setpts=PTS/2
# 音频播放速度加快两倍
ffplay -i input.mp3 -af atempo=2
# 翻转
ffplay -i input.mp3 -vf hflip
ffplay -i input.mp3 -vf vflip
# 旋转
ffplay -i input.mp3 -vf transpose=1

摄像头和桌面

ffplay -f dshow -i video=""
ffplay -f gdigrab -i desktop
ffplay -f avfoundation -framerate 25 "FaceTime HD Camera"
ffplay -f avfoundation -framerate 25 "Capture screen 0"
# 指定索引 视频 音频
ffplay -f avfoundation -framerate 25 0
ffplay -f avfoundation -framerate 25 :0
# 视频和音频一起录制
ffplay -f avfoundation -framerate 25 -capture_cursor 1 "0:0"

播放网络地址

ffplay rtsp://yuan:[email protected]

 ffprobe

# 显示流信息
ffprobe.exe -of xml -show_streams test.dav
# 查看是否含有B帧
ffprobe -v quiet -show_frames -select_streams v test.mp4 | find "pict_type=B"
#
ffprobe -show_format -show_streams libai.aac

 参考

ffmpeg文档

你可能感兴趣的:(音视频,ffmpeg,ffplay)