美文网首页
ffmpeg 常用操作命令总结

ffmpeg 常用操作命令总结

作者: 西5d | 来源:发表于2020-07-15 19:05 被阅读0次

ffmpeg介绍

ffmpeg 是一个非常流行且好用的图像、音视频处理工具。可以实现视频分割,截图,转码,合并,水印处理等常见媒体操作。它的作者也是一个非常厉害的人,感兴趣的同学可以查查。

背景

由于最近有接触到相关功能,开始了解ffmpeg的一些功能,也踩了很多坑,在这里简单做个记录。

常用命令

  1. 截图
ffmpeg -ss 00:43:55 -i video.mp4  -f image2  -vframes 1 -y frame.png

注意将ss放到最前面可以加快速度, -y代表覆盖文件 -vframes代表帧数 -i代表输入,即in;-ss也可以使用单个数字,代表秒数,从0开始计算。

  1. 去固定水印
ffmpeg -i video.mp4 -vf "delogo=x=1680:y=60:w=160:h=55"  -y  new_1.mp4

这里-vf表示video filter, 其中delogo的参数代表水印的坐标和大小,把视频左上角作为坐标原点,横向为x轴,纵向为y轴。这种情况除非预先知道水印的位置和大小,否则不是特别方便,当然,准确识别水印位置也是一个难点,不是很轻易能实现的。
可能根据某些ffmpeg版本不同,需要加-strict experimental 参数,一种情况是比较老的版本音频ACC属于实验阶段,可以按情况设置或者升级ffmpeg版本。

  1. 获取视频时长
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 new_out.mp4

ffprobe 是ffmpeg 配套的一个工具,可以查看一些内容信息。上面的命令可以直接获得秒为单位的视频时长

  1. 获取视频信息并优化展示
    ffprobe -v quiet -print_format json -show_format -show_streams pianpian.mp4
    这里-v代表日志级别,可以使用debug用来分析某些异常; 上面的命令会以json格式输出formatstream两项的信息.
  2. 转码再生成m3u8
    先转为ts格式:
ffmpeg -y -i video.mp4 -c:v copy -c:a copy -vbsf h264_mp4toannexb output.ts

这里 -c:v, -c:a分别代表视频,音频格式,copy代表原视频格式, -vbsf或者-bsf:v(-bsf:a),表示bitstream filter,转码格式。
转换m3u8:

ffmpeg -i output.ts  -c copy -map 0 -f segment -segment_list index.m3u8 -segment_time 10 video_sgs/video-%03d.ts

中间参数没有太了解,功能是将视频分段并生成m3u8文件, 包括设置分段视频的长度。

  1. 视频分帧
ffmpeg -i src01.avi %d.jpg

将视频所有帧保存为图片。 注意整体内容可能比较大,实验中19MB的1280*720视频,分帧后的图片有3.8G。

  1. 视频加文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=simhei.ttf:text='雷':x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2" drawtext.mp4

可以给水印设置字体,大小,颜色等。 字体颜色可以用RGB代码,比如fontcolor=#FFFF00,如果要设置透明度可以这样写:fontcolor=#FFFFFF@0.6,表示0.6的透明度,取值为0.1-1.0
shadowy表示阴影。

注意: 这里冒号:是关键字,如果是要加到水印里,需要转义,用四个\下面是一个例子

ffmpeg -i source.mp4 -vf "drawtext=fontfile=MicroYaHei.ttf:text=By\\\\:三峡不好人:x=1240:y=44:fontsize=73:fontcolor=#FFFFFF@0.8"  -y drawtext_out.mp4
  1. ffmpeg限制cpu数
    ffmpeg在去水印,加水印的时候,默认都是占满可用CPU的,某些情况下需要限制CPU数。网上文章乱七八糟,各种抄,很多说用-threads 参数,但说的不明不白。 以下亲测,-threads参数放到 -y 前面是可以生效的, Linux 可以用top -H -p <pid> 看运行线程数来验证, 同时可以用uptime比较限制线程和不限制的CPU使用率。 如下是限制为2个线程。
ffmpeg -i source.mp4 -vf "drawtext=fontfile=MicroYaHei.ttf:text=By\\\\:三峡不好人:x=1240:y=44:fontsize=73:fontcolor=#FFFFFF@0.8"  -threads 2  -y drawtext_out.mp4

总结

好了,以上就是ffmpeg一些命令的介绍,主要是使用中遇到所做的总结,也不算深入。如果更高级的用法可以参考相关文档。

参考文档

  1. 设置颜色 https://ffmpeg.org/ffmpeg-utils.html#color-syntax
  2. ffmpeg Documentation https://ffmpeg.org/ffmpeg.html

相关文章

  • ffmpeg 常用操作命令总结

    ffmpeg介绍 ffmpeg 是一个非常流行且好用的图像、音视频处理工具。可以实现视频分割,截图,转码,合并,水...

  • ffmpeg基础使用

    参考ffmpeg常用命令ffmpeg参数中文详细解释[总结]FFMPEG视音频编解码零基础学习方法 一、安装 打开...

  • docker常用命令总结

    参考链接 Docker 常用命令与操作 docker常用命令总结——安装、镜像、容器基本操作

  • FFmpeg命令行的使用(二)

    FFmpeg常用命令: 列出ffmpeg支持的所有格式:ffmpeg -formatsffmpeg -format...

  • ios ffmpeg 音视频学习

    一、ffmpeg 在mac上的安装 二、ffmpeg的常用的命令

  • Mongodb 常用命令汇总 2020-08-14

    [toc] Mongodb 常用命令 基础操作命令 索引命令 数组命令 库和集合命令 循环命令 命令总结

  • Mac 终端命令大全

    说明 学习FFmpeg时,需要在终端执行命令。这里记录的是 Mac 终端命令行的介绍,方便大家了解终端的常用操作、...

  • Shell命令汇总

    1、一般常用命令 (1)Shell 常用命令总结 (2)Shell的18条常用命令整理 2、文件操作常用命令 (1...

  • 【FFmpeg】FFmpeg常用基本命令

    【FFmpeg】FFmpeg常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcod...

  • FFmpeg常用使用命令

    记录下本人用到过的 FFmpeg常用使用命令 ffmpeg参数说明:

网友评论

      本文标题:ffmpeg 常用操作命令总结

      本文链接:https://www.haomeiwen.com/subject/yqbjhktx.html