ffmpeg基本视频操作命令

(1)ffmpeg基础操作

生成m3u8切片(1)

ffmpeg  -i  input.mp4  -c:v  libx264  -c:a  copy  -f hls  -hls_time  10  -hls_list_size  0  -hls_start_number  0  input/index.m3u8

解析:-hls_time  n:  设置每片的长度,默认值为2,单位为秒

-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存所有片信息,默认值为5

-hls_start_number  n:设置播放列表中sequence number的值为number,默认值为0

-hls_wrap  n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0,这个选项能避免在磁盘上存储过多的片,且能限制写入磁盘的最多的片的数量。

生成m3u8切片(2)

ffmpeg  -i  input.mp4  --fflags   flush_packets  -max_delay  2  -flags  -global_header             -hls_time  5  -hls_list_size  0  -vcodec  libx264   -acodec  aac  -r  30  -g  60  index.m3u8

指定码率转换:

ffmpeg -i  input.mp4  -b:v  10M  -b:a 10M -c:v libx264   -c:v  aac  out.mp4

备注:命令行设计编解码时,-c:v copy不使用,否则如果指定的码率参数,分辨率参数等就会失败,难找原因

-b:v 10M 指定视频重新编码的码率为10M/s

-b:a  10M 指定音频重新编码的码率为10M/s

指定时间段录制:

ffmpeg  -i  input.mp4  -c:v copy  -c:a copy  -ss  00:10:20  -to 00:30:20  out.mp4

指定录制时长:

ffmpeg  -i input.mp4  -c:v copy -c:a copy -t 30 out.mp4

注:-t 30 表示指定30秒的录制时长

提取h264裸码流:

ffmpeg -i input.mp4  -c:v  copy  -bsf:v  h264_mp4toannexb  -an  out.h264

播放h264裸码流:

ffplay  -stats  -f  h264  out.h264

ffplay  -i  out.h264

提取aac裸码流

ffmpeg  -i  input.mp4  -acodec  copy  -vn  out.aac

注: -vn(disable video)

播放aac裸码流

ffplay  -i  out.aac

视频倒放,音频不变

ffmpeg  -i  input.mp4  -vf  reverse  input_video_reversed.mp4

音频倒放,视频不变

ffmpeg -i  input.mp4  -map  0  -c:v  copy  -af  "areverse"  input_audio_reversed.mp4

视频音频同时倒放

ffmpeg  -i  input.mp4  -vf  reverse  -af  areverse  input_reversed.mp4

提取h264裸码流(指定编码质量)

ffmpeg   -i  input.mp4  -an  -c:v  libx264  -crf  18  out.h264

注:-an (disable audio)

       -c:v  libx264(等价于-vcodec h264 或 -vcodec libx264)

       -crf  18 (固定质量值18)

转码->AVC(指定转码的部分参数)

ffmpeg  -i  input.mp4   -c:v  libx264  -preset  slow  -tune  film  -profile:v  main  out.mp4

注:-tune  film(主要配合视频类型和视觉优化的参数)

       -preset  slow

               编码预设,主要调节  编码速度和质量的平衡

               10个选项如下 从快到慢:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo

       -profile:v main

                h264有四种画质级别,分别是baseline,extend,main,high:

                1.Baseline  Profile:基本画质。支持I/P帧,只支持无交错(Progressive)和CAVLC;

                2.Extended Profile:进阶画质。支持I/P/B/SP/SI帧,只支持无交错(Progressive)和

                3.Main profile:主流画质。提供I/P/B帧,支持无交错(Progressive)和交错(Inter)

                4.High profile:高级画质。在main Profile的基础上增加8X8内部预测、自定义量化、

转码->HEVC

ffmpeg  -i  input.mp4 -c:v libx265  -c:a  copy out.mp4

转码->AVC(指定转码的部分参数)

ffmpeg -i  input.mp4  -c:v  libx264  -b:v  2048k  -vf  scale=1280:-1  -y  out.mp4

注:-vf  scale=1280:-1(指定输出视频的宽高,高-1代表按照比例自动适应)

       -b:v  2048k(指定输出视频的码率,即输出视频每秒的bit数)

查看当前支持的编码器

ffmpeg -codecs

查看当前支持的封装格式

ffmpeg  -formats

查看当前支持的滤镜

ffmpeg -filters

使用指定解码器播放视频

ffplay  -vcodec  h264  -i  out.mp4

查看指定解码器的相关参数

ffmpeg  -h  decoder=h264_cuvid

查看当前支持的硬件加速选项

ffmpeg -hwaccels

例如:mac核显支持的选项(videotoolbox)英伟达显卡支持的选项(cuvid)

使用cuvid进行解码和编码实现转码

ffmpeg -c:v  h264_cuvid  -i  input.mp4  -c:v  h264_nvenc  -b:v 2048k  -vf  scale=1280:-1  -y  out.mp4

注:-hwaccel cuvid(指定使用cuvid硬件加速)

       -c:v  h264_cuvid(使用h264_cuvid进行视频解码)

       -c:v  h264_nvenc(使用h264_nvenc进行视频编码)

       -b:v  2048k(指定输出视频的码率,即输出视频每秒的bit数)

       -vf  scale=1280:-1  (指定输出视频的宽度,高-1代表按照比例自动适应)

使用videotoolbox进行编码实现转码

ffmpeg  -i  input.mp4  -vcodec  h264_videotoolbox  -b:v  2048k  -vf  scale=1280k:-1  -y  out.mp4

注:-vcodec h264_videotoolbox(使用h264_videotoolbox进行视频编码)

       -b:v  2048k(指定输出视频的码率,即输出视频每秒的bit数)

       -vf  scale=1280:-1(指定输出视频的宽高,高-1代表按照比例自动适应)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值