欢迎光临散文网 会员登陆 & 注册

ffmpeg

2021-11-05 16:48 作者:收藏学习区  | 我要投稿

# ffmpeg包的常用命令


ffmpeg  裁剪转换合并提取

ffplay  播放

ffprobe  显示文件参数


它们的命令行参数大多通用


# ffmpeg命令的基本工作流程


file==>demux==>decode==>filter==>encode==>mux

如,一个mp4文件有视频流和音频流,demux就是把它俩分开,然后各自解码,各自filter,各自编码,最后再mux到一个文件里。


# 命令行参数的时间格式


[-]s[.m]  秒数(-表示是负数,s是整数部分,.m是小数部分)

[-][hh:]mm:ss.m  时分秒,-和.m同上


# ffmpeg命令行基本格式


ffmpeg global_options infile_options -i infile outfile_options outfile


## 例子


格式转换

        ffmpeg -i a.mp4 a.avi

提取音频

        ffmpeg -i a.mp4 -c copy a.mp3

截取视频

    生成一个30秒的视频(丢弃之后的部分)

        ffmpeg -i a.mp4 -c copy -t 30 b.mp4

    从视频倒数30秒开始截取(丢弃之前的部分)

        ffmpeg -sseof -30 -i a.mp4 -c copy b.mp4

    从1分25秒开始截取,生成一个时长2分7秒的视频

        ffmpeg -ss 1:25 -i a.mp4 -c copy -t 2:7 b.mp4

截图

    在1分25秒截图一张

        ffmpeg -ss 1:25 -i a.mp4 -frames 1 b.jpg

    从1分25秒开始的30秒内,每秒截图0.2张(即每5秒1张)宽W高H的图

        ffmpeg -ss 1:25 -t 30 -i a.mp4 -r 0.2 -s WxH -f image2 b_%03d.jpeg

    从1分25秒开始截一个10秒的动图

        ffmpeg -ss 1:25 -i a.mp4 -t 10 b.gif

图片合成视频

        ffmpeg -f image2 -framerate 0.33 -i b_%03d.jpeg -s WxH a.mp4

伸缩视频

    宽高比变为16:9

        ffmpeg -i a.mp4 -aspect 16:9 o.mp4

录屏

        ffmpeg -f x11grab -video_size cif -framerate 25 -i $DISPLAY screen.mp4


# 常用命令行参数


-hide_banner  不显示copyright notice, build options and library versions

-i url  输入文件的url(如:本地文件abc.mp4,摄像头/dev/video0)

-c codec  最常用的是-c copy(跳过decode-filter-encode,所以速度快)

-t time_duration  时长

-ss seek_start_time_position  开始时间(相对于开头)

-sseof time_position  开始时间(相对于末尾,大多使用负数)

-itsoffset time_offset  多用正数,表示delay

-framerate fps  多用于输入,输出多用-r fps


## 以下仅用于输出选项


-vn  禁用视频

-an  禁用音频

-sn  禁用字幕

-frames limit_output_frames

-to stop_output_at_time_position  这个不如-t好用

-fs limit_output_file_size

-r fps

-s wxh  输出尺寸为宽w高h

-map 0:0  选取第0个输入文件的第0个流


-filter filtergraph  参考man ffmpeg-filters,用ffmpeg -filters查看所有filters

-aspect width:height  宽高比


ffmpeg的评论 (共 条)

分享到微博请遵守国家法律