区块链技术博客
www.b2bchain.cn

修订.多媒体开发(4):在视频上显示文字或图片–ffmpeg命令求职学习资料

D0b2wT.gif

本文介绍了修订.多媒体开发(4):在视频上显示文字或图片–ffmpeg命令求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

小白:我录了段视频,里面用的音乐是有版权的,而且快过期了,能把音乐去掉吗?

小程拿到视频后,一个快捷键打开命令终端,快速打下一行命令:

ffmpeg -i 小白.flv -vcodec copy -an -f mp4 quiet.mp4

一个只有视频图像的文件就诞生了。

声画分离,这当然只是ffmpeg命令的一个应用场景。

那么,FFmpeg是什么呢?

来看看百度百科的解释:

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的”FF”代表”Fast Forward”。

小程用自己的话,再来翻译一下:

FFmpeg是一个开源项目,一直有人在加新功能、优化、改bug。这个项目,可以进行音视频的录制、编码、流化、解码、效果处理、重采样等一系列的操作……

基本上,有音视频功能的应用,都跟FFmpeg扯上关系,比如暴风影音、QQ影音、mplayer、格式工厂等等。

小白:我可不管谁在用,我只要自己能用就行。

小程:那FFmpeg的开源协议LGPL跟耻辱柱,你也不想听了?

小白:LGPL?老公漂亮?

开源项目都制定自己的开源协议,这里我不细说了,你觉得有必要的话可以去搜索了解。

本文的重点在于,介绍如何使用ffmpeg命令(FFmpeg程序),实现一些常用的音视频操作功能,比如在视频上添加文字或水印。

我的开发环境是mac,以下的介绍都默认在mac系统上操作,但FFmpeg命令基本是平台无差别的。

生成FFmpeg程序有两个办法,一个是使用源码编译生成,另一个是直接安装,我分别介绍这两种方法。

(一)源码编译出FFmpeg,并实现水印添加

这个办法是下载FFmpeg源码下来,再编译生成FFmpeg程序。如果想使用FFmpeg来组装自己的程序,这个办法是必经之路。

我这里介绍怎么用ffmepg命令来给视频添加文字或水印,为了实现这个功能,在编译FFmpeg时需要增加特定的参数设置。由此可见,为了满足不同的需求,可以调整编译FFmpeg的编译选项。

小白:把文字写到视频上?还不简单,你要什么颜色,我有彩色笔。

小程:我是说,在视频帧上加入文字,不是让你在屏幕上画个大叉!

在视频帧上加入文字,可选择的办法有几个,比如可以找一找“编辑视频加广告”、或视频大师之类的工具,也可以写程序来实现(比如提取出所有帧,再对图片处理,再整合所有图片),这里介绍的是直接用ffmpeg命令来实现。

这时,需要使用FFmpeg的drawtext滤镜来实现添加字幕。

滤镜,可以理解为视频的编辑功能(视频效果处理),是FFmpeg强大的功能之一。

先下载FFmpeg的源码

git clone git://source.ffmpeg.org/ffmpeg.git FFmpeg

在FFmpeg目录下面,可以看到FFmpeg的编译配置程序configure。

(1)支持滤镜filter

要保证ffmpeg程序支持filter,否则ffmpeg在使用drawtext时,会看到这样的提示:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

找不到drawtext滤镜

这时,查看FFmpeg配置后(即执行./configure后)生成的头文件config.h(如果配置过就会有这个文件),可以看到:

#define CONFIG_DRAWTEXT_FILTER 0

这是还没有打开drawtext滤镜的表现。

那怎么样让ffmpeg程序支持filter呢?

首先,需要安装yasm,如果当前的macos没有这个执行程序的话(可以用wihch yasm 来查看一下)。yasm是一个汇编编译器,我会在FFmpeg编译给移动平台使用时再介绍一下yasm,现在直接安装即可:

brew install yasm

你如果不了解brew的话,可以搜索homebrew进行了解。

安装yasm后,就可以配置FFmpeg,让它支持filter(drawtext依赖于libfreetype):

./configure –enable-libfreetype –enable-avfilter

这时,在配置输出中(执行./configure),可以看到:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

配置增加了drawtext

而此时,config.h中是这样:

#define CONFIG_DRAWTEXT_FILTER 1

接着,编译出ffmpeg工具即可:

make

小程不建议执行make install来安装到系统,因为在介绍第二种安装ffmpeg程序的办法时,会给系统安装一个ffmpeg。所以,只执行make在当前目录生成ffmpeg即可。

查一下ffmpeg程序,有没有支持到drawtext滤镜:

./ffmpeg -filters

可以看到,已经有这一项:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

是否支持了drawtext

(2)使用drawtext滤镜

以一个视频为例,在没有加字幕前,这个视频是这样的:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

演示视频

小白:我录了段视频,里面用的音乐是有版权的,而且快过期了,能把音乐去掉吗?

小程拿到视频后,一个快捷键打开命令终端,快速打下一行命令:

ffmpeg -i 小白.flv -vcodec copy -an -f mp4 quiet.mp4

一个只有视频图像的文件就诞生了。

声画分离,这当然只是ffmpeg命令的一个应用场景。

那么,FFmpeg是什么呢?

来看看百度百科的解释:

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的”FF”代表”Fast Forward”。

小程用自己的话,再来翻译一下:

FFmpeg是一个开源项目,一直有人在加新功能、优化、改bug。这个项目,可以进行音视频的录制、编码、流化、解码、效果处理、重采样等一系列的操作……

基本上,有音视频功能的应用,都跟FFmpeg扯上关系,比如暴风影音、QQ影音、mplayer、格式工厂等等。

小白:我可不管谁在用,我只要自己能用就行。

小程:那FFmpeg的开源协议LGPL跟耻辱柱,你也不想听了?

小白:LGPL?老公漂亮?

开源项目都制定自己的开源协议,这里我不细说了,你觉得有必要的话可以去搜索了解。

本文的重点在于,介绍如何使用ffmpeg命令(FFmpeg程序),实现一些常用的音视频操作功能,比如在视频上添加文字或水印。

我的开发环境是mac,以下的介绍都默认在mac系统上操作,但FFmpeg命令基本是平台无差别的。

生成FFmpeg程序有两个办法,一个是使用源码编译生成,另一个是直接安装,我分别介绍这两种方法。

(一)源码编译出FFmpeg,并实现水印添加

这个办法是下载FFmpeg源码下来,再编译生成FFmpeg程序。如果想使用FFmpeg来组装自己的程序,这个办法是必经之路。

我这里介绍怎么用ffmepg命令来给视频添加文字或水印,为了实现这个功能,在编译FFmpeg时需要增加特定的参数设置。由此可见,为了满足不同的需求,可以调整编译FFmpeg的编译选项。

小白:把文字写到视频上?还不简单,你要什么颜色,我有彩色笔。

小程:我是说,在视频帧上加入文字,不是让你在屏幕上画个大叉!

在视频帧上加入文字,可选择的办法有几个,比如可以找一找“编辑视频加广告”、或视频大师之类的工具,也可以写程序来实现(比如提取出所有帧,再对图片处理,再整合所有图片),这里介绍的是直接用ffmpeg命令来实现。

这时,需要使用FFmpeg的drawtext滤镜来实现添加字幕。

滤镜,可以理解为视频的编辑功能(视频效果处理),是FFmpeg强大的功能之一。

先下载FFmpeg的源码

git clone git://source.ffmpeg.org/ffmpeg.git FFmpeg

在FFmpeg目录下面,可以看到FFmpeg的编译配置程序configure。

(1)支持滤镜filter

要保证ffmpeg程序支持filter,否则ffmpeg在使用drawtext时,会看到这样的提示:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

找不到drawtext滤镜

这时,查看FFmpeg配置后(即执行./configure后)生成的头文件config.h(如果配置过就会有这个文件),可以看到:

#define CONFIG_DRAWTEXT_FILTER 0

这是还没有打开drawtext滤镜的表现。

那怎么样让ffmpeg程序支持filter呢?

首先,需要安装yasm,如果当前的macos没有这个执行程序的话(可以用wihch yasm 来查看一下)。yasm是一个汇编编译器,我会在FFmpeg编译给移动平台使用时再介绍一下yasm,现在直接安装即可:

brew install yasm

你如果不了解brew的话,可以搜索homebrew进行了解。

安装yasm后,就可以配置FFmpeg,让它支持filter(drawtext依赖于libfreetype):

./configure –enable-libfreetype –enable-avfilter

这时,在配置输出中(执行./configure),可以看到:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

配置增加了drawtext

而此时,config.h中是这样:

#define CONFIG_DRAWTEXT_FILTER 1

接着,编译出ffmpeg工具即可:

make

小程不建议执行make install来安装到系统,因为在介绍第二种安装ffmpeg程序的办法时,会给系统安装一个ffmpeg。所以,只执行make在当前目录生成ffmpeg即可。

查一下ffmpeg程序,有没有支持到drawtext滤镜:

./ffmpeg -filters

可以看到,已经有这一项:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

是否支持了drawtext

(2)使用drawtext滤镜

以一个视频为例,在没有加字幕前,这个视频是这样的:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

演示视频

小白:我录了段视频,里面用的音乐是有版权的,而且快过期了,能把音乐去掉吗?

小程拿到视频后,一个快捷键打开命令终端,快速打下一行命令:

ffmpeg -i 小白.flv -vcodec copy -an -f mp4 quiet.mp4

一个只有视频图像的文件就诞生了。

声画分离,这当然只是ffmpeg命令的一个应用场景。

那么,FFmpeg是什么呢?

来看看百度百科的解释:

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的”FF”代表”Fast Forward”。

小程用自己的话,再来翻译一下:

FFmpeg是一个开源项目,一直有人在加新功能、优化、改bug。这个项目,可以进行音视频的录制、编码、流化、解码、效果处理、重采样等一系列的操作……

基本上,有音视频功能的应用,都跟FFmpeg扯上关系,比如暴风影音、QQ影音、mplayer、格式工厂等等。

小白:我可不管谁在用,我只要自己能用就行。

小程:那FFmpeg的开源协议LGPL跟耻辱柱,你也不想听了?

小白:LGPL?老公漂亮?

开源项目都制定自己的开源协议,这里我不细说了,你觉得有必要的话可以去搜索了解。

本文的重点在于,介绍如何使用ffmpeg命令(FFmpeg程序),实现一些常用的音视频操作功能,比如在视频上添加文字或水印。

我的开发环境是mac,以下的介绍都默认在mac系统上操作,但FFmpeg命令基本是平台无差别的。

生成FFmpeg程序有两个办法,一个是使用源码编译生成,另一个是直接安装,我分别介绍这两种方法。

(一)源码编译出FFmpeg,并实现水印添加

这个办法是下载FFmpeg源码下来,再编译生成FFmpeg程序。如果想使用FFmpeg来组装自己的程序,这个办法是必经之路。

我这里介绍怎么用ffmepg命令来给视频添加文字或水印,为了实现这个功能,在编译FFmpeg时需要增加特定的参数设置。由此可见,为了满足不同的需求,可以调整编译FFmpeg的编译选项。

小白:把文字写到视频上?还不简单,你要什么颜色,我有彩色笔。

小程:我是说,在视频帧上加入文字,不是让你在屏幕上画个大叉!

在视频帧上加入文字,可选择的办法有几个,比如可以找一找“编辑视频加广告”、或视频大师之类的工具,也可以写程序来实现(比如提取出所有帧,再对图片处理,再整合所有图片),这里介绍的是直接用ffmpeg命令来实现。

这时,需要使用FFmpeg的drawtext滤镜来实现添加字幕。

滤镜,可以理解为视频的编辑功能(视频效果处理),是FFmpeg强大的功能之一。

先下载FFmpeg的源码

git clone git://source.ffmpeg.org/ffmpeg.git FFmpeg

在FFmpeg目录下面,可以看到FFmpeg的编译配置程序configure。

(1)支持滤镜filter

要保证ffmpeg程序支持filter,否则ffmpeg在使用drawtext时,会看到这样的提示:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

找不到drawtext滤镜

这时,查看FFmpeg配置后(即执行./configure后)生成的头文件config.h(如果配置过就会有这个文件),可以看到:

#define CONFIG_DRAWTEXT_FILTER 0

这是还没有打开drawtext滤镜的表现。

那怎么样让ffmpeg程序支持filter呢?

首先,需要安装yasm,如果当前的macos没有这个执行程序的话(可以用wihch yasm 来查看一下)。yasm是一个汇编编译器,我会在FFmpeg编译给移动平台使用时再介绍一下yasm,现在直接安装即可:

brew install yasm

你如果不了解brew的话,可以搜索homebrew进行了解。

安装yasm后,就可以配置FFmpeg,让它支持filter(drawtext依赖于libfreetype):

./configure –enable-libfreetype –enable-avfilter

这时,在配置输出中(执行./configure),可以看到:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

配置增加了drawtext

而此时,config.h中是这样:

#define CONFIG_DRAWTEXT_FILTER 1

接着,编译出ffmpeg工具即可:

make

小程不建议执行make install来安装到系统,因为在介绍第二种安装ffmpeg程序的办法时,会给系统安装一个ffmpeg。所以,只执行make在当前目录生成ffmpeg即可。

查一下ffmpeg程序,有没有支持到drawtext滤镜:

./ffmpeg -filters

可以看到,已经有这一项:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

是否支持了drawtext

(2)使用drawtext滤镜

以一个视频为例,在没有加字幕前,这个视频是这样的:
修订.多媒体开发(4):在视频上显示文字或图片--ffmpeg命令

演示视频

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 修订.多媒体开发(4):在视频上显示文字或图片–ffmpeg命令求职学习资料
分享到: 更多 (0)
D0b2wT.gif

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们