常用ffmpeg使用场景

# 生成缩略图
无可用单个命令支持
# 生成截图
# 只截取一帧
ffmpeg -ss 00:05:00.00 -i "ii.mkv" -frames:v 1 -s 1920x1080 -f image2 image-%3d.png
# 每100秒截取一帧(慢)
ffmpeg -i "ii.mkv" -f image2 -vf fps=fps=1/100 -s 1920x1080 image-%3d.png
# 从第一分开始,持续2分钟,每20秒截取一帧(慢)
ffmpeg -ss 01:00 -t 02:00 -i ii.mkv -f image2 -r 0.05 %3d.jpg
https://trac.ffmpeg.org/wiki/Seeking
https://stackoverflow.com/questions/45004159/ffmpeg-ss-and-t-for-cutting-mp3
# 视频分割
# 截取0-30秒视频
ffmpeg -ss 00:00:00 -t 00:00:30 -i ii.mkv -vcodec copy -acodec copy ii.mp4
# 添加水印
ffmpeg -i ii.mp4 -i logo.png -filter_complex [0:v][1:v]overlay=main_w-overlay_w-100:main_h-overlay_h-100[out] -map [out] -map 0:a -codec:a copy -c:v h264_qsv output1.mp4
ffmpeg -i ii.mp4 -vf "movie=logo.png,format=yuva444p,colorchannelmixer=aa=0.6[wm];[in][wm]overlay=10:30[out]" -codec:a copy -c:v h264_qsv output2.mp4
# 水印坐标右小角为(0,0)
# -vf:表示设置视频滤镜(vf即video filter得缩写)
# aa : 表示水印的透明程度,值为1表示不透明,0表示全透明
# overlay : 水印参数
# main_w-overlay_w-10 : 水印在x轴的位置,也可以写成x=main_w-overlay_w-10
# main_h-overlay_h-10 : 水印在y轴的位置

# 添加字体水印
ffmpeg -i ii.mp4 -vf "drawtext=fontsize=100:fontfile=lazy.ttf:text='hello world':x=20:y=20:fontcolor=green:box=1:boxcolor=yellow" -c:v h264_qsv output2.mp4
# 精度到毫秒 drawtext=fontsize=160:text='%{pts\:hms}'
ffmpeg -i ii.mp4 -vf "drawtext=fontsize=160:text='%{localtime\:%T}'" -c:v h264_qsv output2.mp4
# fontfile: 字体类型
# font: 字体类型
# text: 要添加的文字内容
# fontsize: 字体大小
# fontcolor: 字体颜色
# textfile: 文字文件
# box: 文字区域背景框
# boxcolor: 展示字体的区域块的颜色
# x: x坐标
# y: y坐标
https://cloud.tencent.com/developer/article/1774971

# 修改水印图片的尺寸
ffmpeg -i logo.png -strict -2 -s 108x22 logo1.png

# 添加字幕
ffmpeg -i ii.mp4 -vf subtitles=ii.ass -c:v h264_qsv out1.mkv
https://cloud.tencent.com/developer/article/1612431
# 制作字幕
https://github.com/SubtitleEdit/subtitleedit
# 配置
https://github.com/zhengoogle/tech-docs/issues/8
https://arctime.org/index.html
https://aegi.vmoe.info/
[最好用的字幕添加软件是哪个](https://zhuanlan.zhihu.com/p/240417302)
[强烈推荐 I 10个免费实用的字幕制作工具](https://zhuanlan.zhihu.com/p/164430770)

# 硬件加速
# NVIDIA
ffmpeg -i ii.mkv -vf "drawtext=fontsize=100:text='HELLO':x=20:y=20" -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i ii.mkv -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
ffmpeg -i ii.mkv -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
ffmpeg -i ii.mkv -c:a copy -c:v h264_qsv -b:v 5M output.mp4
ffmpeg -i ii.mkv -c:a copy -c:v copy -b:v 5M output.mp4
ffmpeg -i ii.mkv -b:v 5M output.mp4
# 驱动(cuda驱动加速编解码)
https://developer.nvidia.com/cuda-toolkit-archive
https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/
# intel QSV
ffmpeg -i ii.mp4 -vf "drawtext=fontsize=100:text='HELLO':x=20:y=20" -c:v h264_qsv output.mp4
https://trac.ffmpeg.org/wiki/Hardware/QuickSync
# AMD
ffmpeg -i ii.mp4 -vf "drawtext=fontsize=100:text='HELLO':x=20:y=20" -c:v h264_amf output.mp4


# 视频播放
ffplay rtmp://myserver/vod/sample
ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4

posted @ 2022-02-09 17:02  zhen-Android  阅读(121)  评论(0编辑  收藏  举报