ffmpeg常用方法

2023-05-16

FFmpeg 是一款开源的音视频处理工具,可以处理各种格式的音视频文件,并且可以进行格式转换、剪切、合并、添加水印等多种操作。下面是 FFmpeg 的一些常用命令及其用法:

  1. 视频转码

将一个视频文件转换为另一种格式:

ffmpeg -i input.mp4 output.avi
  1. 剪切视频

将视频剪切成指定长度,以秒为单位:

ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4

其中,-ss 指定起始时间,-t 指定截取长度,-c copy 表示直接复制不重新编码。

  1. 视频截图

将视频的一帧作为图片保存下来:

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpg

其中,-vframes 1 表示只取一帧。

  1. 视频拼接

将多个视频文件拼接成一个:

ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4

其中,"concat:input1.mp4|input2.mp4|input3.mp4" 表示要拼接的文件列表,| 表示分隔符,-c copy 表示直接复制不重新编码。

  1. 音频提取

从视频文件中提取音频:

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

其中,-vn 表示不处理视频流,-acodec copy 表示直接复制音频流。

  1. 视频加水印

在视频上添加一个图片或文字作为水印:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

其中,-i watermark.png 指定水印图片,-filter_complex "overlay=10:10" 表示在视频的左上角添加水印图片。

  1. 去水印

-vf delogo 是使用 FFmpeg 自带的滤镜来进行水印去除的方式。该滤镜可以通过指定水印的位置和大小来去除视频中的水印。使用 -vf delogo 的基本步骤如下:

在命令行中运行以下命令,使用 FFmpeg 自带的 delogo 滤镜进行水印去除:

ffmpeg -i input.mp4 -vf "delogo=x=100:y=50:w=200:h=100" -c:a copy output.mp4

其中,-i input.mp4 指定输入文件名,-vf "delogo=x=100:y=50:w=200:h=100" 指定使用 delogo 滤镜进行水印去除,x、y、w、h 分别指定水印在视频中的位置和大小。-c:a copy 表示直接复制音频流,不重新编码。

需要注意的是,使用 -vf delogo 进行水印去除需要手动指定水印的位置和大小,因此需要先对视频进行分析和调试,以确定水印的具体参数。同时,不同的视频可能需要不同的参数设置,需要进行适当的调整。

delogo 是一个能够自动检测和去除视频中的水印的开源工具,基于 FFmpeg 和 OpenCV 开发。delogo 主要的优点是可以自动检测水印位置和大小,无需手动指定参数。使用 delogo 的基本步骤如下:

下载并安装 delogo 工具,可以参考官方文档:https://github.com/nowsecure/delogo

在命令行中运行以下命令,使用 delogo 进行水印去除:

delogo -i input.mp4 -o output.mp4

其中,-i input.mp4 指定输入文件名,-o output.mp4 指定输出文件名。delogo 会自动检测并去除视频中的水印,输出一个没有水印的视频文件。

需要注意的是,delogo 的去水印效果可能会受到视频质量和水印位置的影响,因此需要根据实际情况进行测试和调整。此外,delogo 的使用需要遵守开源许可协议。

  1. 合并音频和视频

ffmpeg -i video.mp4 -i audio.mp3 -c copy -map 0:v:0 -map 1:a:0  videoWithAudio.mp4

9. 改变音频流

-bsf:a 是 FFmpeg 工具中用于指定音频比特流过滤器的选项,可以在音频编解码过程中对音频比特流进行过滤和修改,以达到特定的处理目的。常用的音频比特流过滤器包括 aac_adtstoasc、aac_fixed、aac_latm、flv_aac等。

下面是 -bsf:a 的一些常见用法:

将 AAC 比特流格式转换为 MPEG-4 Audio 比特流格式:

ffmpeg -i input.mp4 -c:v copy -c:a aac -bsf:a aac_adtstoasc output.mp4

转换 AAC 音频流为 FLV 格式:

ffmpeg -i input.mp4 -c:v copy -c:a copy -bsf:a aac_adtstoasc -f flv output.flv

将音频采样率转换为指定值:

ffmpeg -i input.mp4 -c:v copy -c:a aac -bsf:a aac_adtstoasc -ar 44100 output.mp4

转换 MP3 音频流为 WAV 格式:

ffmpeg -i input.mp3 -c:v copy -c:a pcm_s16le -bsf:a aac_adtstoasc output.wav

需要注意的是,-bsf:a 选项需要与具体的音频比特流过滤器名称一起使用。不同的过滤器适用于不同的音频编码格式和处理需求,需要根据实际情况进行选择和调整。

10. 添加属性

要向视频中添加 title 等元数据属性,可以使用 FFmpeg 工具中的 -metadata 选项。该选项可以设置任意类型的元数据,包括 title、author、description 等等。

下面是使用 -metadata 选项添加 title 属性的基本命令格式:

ffmpeg -i input.mp4 -metadata title="My Video Title" -c:v copy -c:a copy output.mp4

其中,-i input.mp4 表示输入文件名,-metadata title="My Video Title" 表示添加 title 属性,并将属性值设置为 "My Video Title"。-c:v copy -c:a copy 表示对视频和音频流进行直接复制,不进行重新编码。output.mp4 表示输出文件名。

除了 title 属性外,也可以添加其他属性,例如:

ffmpeg -i input.mp4 -metadata title="My Video Title" -metadata author="John Doe" -metadata description="My video description" -c:v copy -c:a copy output.mp4

执行以上命令后,FFmpeg 会将 title、author 和 description 等元数据属性添加到输出文件中。

需要注意的是,不同的视频播放器和编辑软件支持的元数据属性类型和格式可能有所不同,因此需要根据实际需求进行选择和调整。

11. 容器格式

'mp4'、'webm' 和 'mkv' 都是常见的视频容器格式,它们的主要区别在于其特性和兼容性:

mp4:是一种流行的视频格式,由 MPEG-4 标准定义。它是一种通用格式,适用于多种设备和平台,包括电视、手机、平板电脑和计算机。 mp4 通常可以存储多个视频和音频流,支持高质量视频和音频编码,同时还具有较高的压缩效率和较小的文件大小。

webm:是一种用于 Web 的开放式多媒体格式,由谷歌主导开发。它是一种免费开源的格式,适用于 HTML5 视频播放器,并且支持 VP8 和 VP9 视频编码以及 Vorbis 和 Opus 音频编码。由于使用开源技术,webm 的实现成本相对较低。

mkv:是一种免费、开源的通用多媒体容器格式,可以容纳多种视频、音频和字幕流。它支持高质量视频编码,如 H.264、H.265 和 VP9,以及高质量音频编码,如 AC3 和 DTS。由于其灵活性和多功能性,mkv 被广泛用于高清视频的存储和分享。

总的来说,mp4 是一种通用格式,适用于多种设备和平台;webm 是一种开源格式,适用于 HTML5 视频播放器;而 mkv 则是一种免费、开源的通用多媒体格式,具有较高的灵活性和多功能性。在选择视频格式时,需要根据具体需求和兼容性要求进行选择。

12. 指定编码器

在 FFmpeg 中,-c:v libxvid 表示使用 Xvid 编码器对视频流进行编码。Xvid 是一种开源的 MPEG-4 视频编码器,它具有高质量视频编码和较小的文件大小,被广泛用于数字视频的压缩和传输。

-vtag XVID 选项表示为 Xvid 编码器添加标记(tag),用于指定视频流的编码格式。在 Xvid 编码器中,XVID 标记指定了视频流的 FourCC 编码格式,它是一种用于标识视频编解码器的四个字母的代码。在 Xvid 编码器中,XVID 标记表示使用 Xvid 编码格式进行视频编码。

需要注意的是,如果在使用 FFmpeg 进行视频编码时没有显式指定编码器和标记,FFmpeg 将会根据输出格式和默认选项自动选择编码器和标记。因此,如果需要使用特定的编码器和标记进行编码,应该在命令行中显式指定。

-c:s mov_text 表示使用 mov_text 子标题编解码器对视频流进行编码或解码。mov_text 是一种用于 QuickTime 和 MP4 视频容器格式的字幕格式,它可以存储文本字幕和样式信息,支持多种语言和字符集。

在 FFmpeg 中,-c:s 选项用于指定字幕编解码器,mov_text 是其中一种常见的字幕编解码器之一。通过指定 -c:s mov_text,FFmpeg 将会使用 mov_text 编解码器对视频流中的字幕进行编码或解码。

13. 字幕

在 FFmpeg 中,-map 选项用于指定输入文件中的流映射关系,其中 -0:s 表示禁用输入文件中的所有字幕流。具体来说,-0:s 表示禁用第一个输入文件中的所有字幕流,其中 -0 表示第一个输入文件,:s 表示字幕流类型。

这个选项通常用于从一个或多个输入文件中选择需要处理的流,而忽略其他不需要处理的流。在这种情况下,可以使用 -map 选项来指定需要处理的流,以及它们在输出文件中的顺序和位置。而通过 -map -0:s,可以将所有字幕流禁用,仅处理需要的流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg常用方法 的相关文章

随机推荐

  • Ubuntu 18.04 ROS Melodic中调用支持Python3的cv_bridge

    Ubuntu 18 04 ROS Melodic中调用支持Python3的cv bridge 0 背景1 编译自己的cv bridge功能包 Python 3 7 11 2 更新当前shell的环境变量3 附录Why use source
  • VIm自动生成python的文件头

    VIm自动生成python的文件头 我实现的效果如图所示 xff1a 思路是在vimrc配置文件中写相关的函数 xff0c 代码在下面贴出 按 wq保存退出以后 xff0c 会自动更新上次修改时间 34 新建py文件时插入文件头 autoc
  • 使用Dokcer配置Tensorflow-1.15环境并使用VSCode开发

    使用Dokcer配置Tensorflow 1 15环境 目前学术界大部分深度学习的开源代码都是基于Pytorch的 xff0c 但还有少部分工作或者以前的工作是基于Tensorflow 1 x的 xff0c 由于tensorflow的版本和
  • 使用VNC可视化Docker容器

    使用VNC可视化Docker容器 0 前言环境 xff1a 1 容器端配置1 1 启动Docker容器1 2 安装x111 3 安装桌面环境1 4 安装tightvncserver 2 配置VNC Server2 1 首先停止刚刚新建的虚拟
  • STM32 串口ISP下载方式解读

    xfeff xfeff http blog sina com cn s blog b09739ab0102v4rm html Flash Loader Demonstrator 下 载工具的安装 1 xff0e 硬件的连接和设置 串口ISP
  • with异常处理

    class A 39 39 39 此类的对象可以用 xff57 xff49 xff54 xff48 语句进行管理 39 39 39 def enter self print 34 已经进入with语句 34 return self def
  • telegram android 源码分析 (一)自动设置代理

    比如自动设置mtproxy代理 xff0c 冗长的代码我们怎么去找 xff1f 1 xff09 首先我们发现点代理链接能弹对话框 xff0c 们可以在strings xml中搜索得到 xff1a lt string name 61 34 U
  • NS3 的 ipv4-static-routing-test-suite 源码分析

    下面进行源码注释 xff1a End to end tests for Ipv4 static routing include 34 ns3 boolean h 34 include 34 ns3 config h 34 include 3
  • c语言向上取整计算方法

    用整数N 除以 M xff0c 要求向上取整数 1 xff09 int n 61 N 43 M 1 M xff1b 简化后就是 xff1a 2 xff09 int n 61 N 1 M 43 1 xff1b 最笨的办法 3 int n 61
  • 比std::qsort还快的快速排序(1千万整数1.7秒)——(快速排序栈溢出与递归优化)

    前几天发现老外的开源项目中事件队列中用的就是std qsort排序 xff0c 后续插入时候使用了堆方式 快速排序实际应用中是比堆排序要快的 xff0c 这主要是因为硬件层次会对数据执行高速缓存 xff0c 数据使用一二三级高速缓存比访问内
  • C#使用ProtoBuf

    1 Google ProtoBuf 经过测试 xff0c protobuf比json存储效率还是要高 xff0c 即时号称最快的fastjson也没有protobuf快 xff0c 这里为了使用 c 做一个客户端兼容 xff0c 所以也需要
  • 多线程如何实现高性能计数器(无锁)

    多线程协作免不了使用计数器 xff0c 通常的代码 xff0c c 43 43 一般会使用锁 xff0c 或者原子变量操作 xff1a std mutex mutexCounter int count void add std lock g
  • ubuntu18/20 下如何生成core文件

    ubuntu18 20 下如何生成core文件 一 设置 原理 xff1a https blog csdn net Sunnyside article details 118439302 原来在ubuntu14 ubuntu16上只需要一步
  • c++的字节序与符号位的问题

    看这样一道题 xff1a include lt stdio h gt int main void int w h int i 61 0xa1b2c3d4 char p 61 char amp i for int j 61 0 j lt 4
  • docker镜像之带vnc的ubuntu

    docker镜像 之 带vnc图形界面ubuntu 前言 xff1a 为了在图形界面中使用firefox xff0c 需要找一个带rdp或者vnc的ubuntu xff0c 最好是gnome的界面 xff0c 折腾了3天 xff0c 终于找
  • STM32中,关于中断函数调用全局变量的问题

    xfeff xfeff https blog csdn net leo liu006 article details 79334905 首先是问题的描述 xff1a 硬件单片机型号 xff0c STM32F103VET6 xff0c IDE
  • python使用selenium以及selenium-wire做质量与性能检测

    python天生就是适合用来做爬虫 xff0c 结合selenium真是如虎添翼 xff1b 1 安装库 pip install selenium pip install selenium wire 2 xff09 添加驱动 xff0c 比
  • 编写http workshop脚本从网页缓存里解析音乐

    前一篇文章 编写http workshop脚本从网站下载音乐 示范了如何使用HttpClient访问API 以及Json数据的解析 今天我们通过解析一个网页展示如何使用内置的LibXml2的功能解析HTML 提取我们关心的内容 这里随便搜了
  • pytorch环境搭建若干

    备注 xff1a 不要使用python3 11不支持 xff0c pip会说找不到合适的版本 xff1b python官网不提供旧版的下载了 xff0c 说是win7以后无法使用 xff0c 都是扯淡 xff0c 有其他地方可以下载pyth
  • ffmpeg常用方法

    FFmpeg 是一款开源的音视频处理工具 xff0c 可以处理各种格式的音视频文件 xff0c 并且可以进行格式转换 剪切 合并 添加水印等多种操作 下面是 FFmpeg 的一些常用命令及其用法 xff1a 视频转码 将一个视频文件转换为另