FFmepg 转码播放等使用说明
话说几乎所有的视频播放软件都是ffmpeg的套壳
使用ffmpeg播放视频
ffplay [选项] ['输入文件']
- 主要选项
'-x width' 强制以 "width" 宽度显示
'-y height' 强制以 "height" 高度显示
'-an' 禁止音频
'-vn' 禁止视频
'-ss pos' 跳转到指定的位置(秒)
'-t duration' 播放 "duration" 秒音/视频
'-bytes' 按字节跳转
'-nodisp' 禁止图像显示(只输出音频)
'-f fmt' 强制使用 "fmt" 格式
'-window_title title' 设置窗口标题(默认为输入文件名)
'-loop number' 循环播放 "number" 次(0将一直循环)
'-showmode mode' 设置显示模式
可选的 mode :
'0, video' 显示视频
'1, waves' 显示音频波形
'2, rdft' 显示音频频带
默认值为 'video',你可以在播放进行时,按 "w" 键在这几种模式间切换
'-i input_file' 指定输入文件
- 一些高级选项
'-sync type' 设置主时钟为音频、视频、或者外部。默认为音频。主时钟用来进行音视频同步
'-threads count' 设置线程个数
'-autoexit' 播放完成后自动退出
'-exitonkeydown' 任意键按下时退出
'-exitonmousedown' 任意鼠标按键按下时退出
'-acodec codec_name' 强制指定音频解码器为 "codec_name"
'-vcodec codec_name' 强制指定视频解码器为 "codec_name"
'-scodec codec_name' 强制指定字幕解码器为 "codec_name"
- 一些快捷键
'q, ESC' 退出
'f' 全屏
'p, SPC' 暂停
'w' 切换显示模式(视频/音频波形/音频频带)
's' 步进到下一帧
'left/right' 快退/快进 10 秒
'down/up' 快退/快进 1 分钟
'page down/page up' 跳转到前一章/下一章(如果没有章节,快退/快进 10 分钟)
'mouse click' 跳转到鼠标点击的位置(根据鼠标在显示窗口点击的位置计算百分比)
转码
- mp4
ffmpeg -i 输入文件 -c:v libx265 输出文件
- 如果cpu是11代之后可以使用GPU加速的
hevc_qsv
,如下效率大约是纯cpu压缩的2.5倍左右
ffmpeg.exe -i "D:\周星驰《功夫》.mp4" -c:v hevc_qsv -c:a copy "D:\周星驰《功夫》_compress.mp4"
在此基础上,增加无损压缩。增加代码
ffmpeg.exe -i "D:\周星驰《功夫》.mp4" -c:v hevc_qsv -c:a copy "D:\周星驰《功夫》_compress.mp4" -x265-params lossless=1
Encode AVI to h.264 Video (Software Encoding)
ffmpeg -i input.avi -c:v libx264 output.mp4
Encode AVI to h.265 Video (Software Encoding)
ffmpeg -i input.avi -c:v libx265 output.mp4
Encode AVI to h.264 Video (AMD GPU Encoding)
ffmpeg -i input.avi -c:v h264_amf output.mp4
Encode AVI to h.265 Video (AMD GPU Encoding)
ffmpeg -i input.avi -c:v hevc_amf output.mp4
Encode AVI to h.264 Video (NVIDIA GPU Encoding)
ffmpeg -i input.avi -c:v h264_nvenc output.mp4
Encode AVI to h.265 Video (NVIDIA GPU Encoding)
ffmpeg -i input.avi -c:v hevc_nvenc output.mp4
截取
ffmpeg -i in.mp4 -ss 00:00:35 -t 00:05:04 -vcodec copy -acodec copy out.mp4
如果是从头开始截取可以省掉 -ss
参数,注意-t
参数是指截取的总时长