ffmpeg个人使用记录
发布日期:2021-09-14 23:18:04 浏览次数:1 分类:技术文章

本文共 2083 字,大约阅读时间需要 6 分钟。

  1. 剪辑视频
ffmpeg -ss 00:00:15 -i input.mkv -vcodec copy -acodec copy -t 00:00:30 out.mkv

ss表示 起始时间戳
-t表示 持续时间,单位为秒
-i表示 源文件名字
-codec copy 表示沿用原来的编码格式

ffmpeg -i test.mp4 -ss 10 -t 15 -codec copy cut.mp4

-ss:start time
-t :duration

参数优化
(1)将-ss, -t 参数放在-i参数之前
ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4
对输入文件执行seek操作,会seek到-ss设置的时间点前面的关键帧上。
时间不精确,但是不会出现黑屏
(2)accurate_seek
剪切时间更加精确
ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4
PS:accurate_seek必须放在-i参数之前
(3)avoid_negative_ts
如果编码格式采用的copy 最好加上 -avoid_negative_ts 1参数
ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy -avoid_negative_ts 1 cut.mp4

  1. 转码(使用默认参数)
ffmpeg -i input.mkv out.flv
  1. 循环推流
ffmpeg -stream_loop -1 -re -i /tmp/xxx.flv -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1:1935/live/test

-re 将输入的读取速度降低到输入的本地帧速率(对于直播很有用)
-stream_loop -1 选项可以指定循环读取视频源的次数,-1为无限循环

  1. 通过ffmpeg 直接将m3u8转成mp4 命令
ffmpeg  -i "http://xxxxxx/video/movie.m3u8" -vcodec copy -acodec copy -absf aac_adtstoasc  output.mp4
  1. 通过GPU实现视频转码命令
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -preset slow output.mkvffmpeg -hwaccel cuvid -c:v h264_cuvid -i  -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y 

-hwaccel cuvid:指定使用cuvid硬件加速
-c:v h264_cuvid:使用h264_cuvid进行视频解码
-c:v h264_nvenc:使用h264_nvenc进行视频编码
-vf scale_npp=1280:-1:指定输出视频的宽高,注意,这里和软解码时使用的-vf scale=x:x不一样
期间使用nvidia-smi查看显卡状态,能够看到ffmpeg确实是在使用GPU进行转码

  1. Linux下ffmpeg验证rtmp流命令
ffmpeg -i "rtmp://ip:port/live/stream" -acodec copy -vcodec copy -t 60 -f mp4 -y " test.mp4
  1. 去除视频黑边,裁剪尺寸:
ffmpeg -i xx.mp4 -vf crop=x1:x2:x3:x4 output.mp4

其中,x1和x2分别是输出的宽和高; x3和x4可不填

  1. 视频转GIF动图
ffmpeg -ss 00:00:03 -t 3 -i xxx.MP4 -s 640x360 -r  15  output.gif

-ss 00:00:03 表示从第 00 分钟 03 秒开始制作 GIF,支持小数点,如果不加该命令,则从 0 秒开始制作。
-t 3 表示把持续 3 秒的视频转换为 GIF,支持小数点,如果不加该命令,则把整个视频转为 GIF。
-i 表示 invert 的意思吧,转换
s 640x360 是 GIF 的分辨率,分辨率越高体积越大,如果不加该命令,则保持分辨率不变。
-r “15” 表示帧率,网上下载的视频帧率通常为 24,设为 15 效果挺好了,帧率越高体积越大,如果不加该命令,则保持帧率不变

  1. 图片合并为动图
ffmpeg -threads 2 -r 2 -i %d.jpg 11.gif -y

-threads 2:2 以两个线程进行运行, 加快处理的速度。
-y 对输出文件进行覆盖
-r 2 fps设置为2帧/秒(不同位置有不同含义)
-i %d.jpg 合并的图片文件,图片文件为 1.jpg 2.jpg ….

转载地址:https://blog.csdn.net/weixin_43451928/article/details/114586016 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:centos7 maven 安装方法
下一篇:linux下搭建nginx+rtmp服务器,并通过ffmpeg推流(Centos7)

发表评论

最新留言

感谢大佬
[***.238.104.143]2022年07月07日 14时46分38秒