你不可能从现在预测到未来,只有回头看时,才会发现事物之间的联系。所以你必须相信,那些生命中的点点滴滴,将会在你未来的生命里,以某种方式串联起来。你必须始终相信一些东西——你的勇气、宿命、生活、因缘,随便什么,它们将给你追寻内心真正所想的自信,带你走离平凡,变得与众不同。
今天介绍一个小知识,在linux下用FFmpeg进行音频视频处理。
首先介绍一下FFmpeg,引用百度百科的一段介绍,它是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,并利用libavformat进行音频/视频格式转码。
FFmpeg功能非常强大,包括音视频采集、格式转换、视频截图、视频水印等功能,我们常用的暴风影音、QQ影音、格式工厂等,都用FFmpeg。
FFmpeg官网地址:https://www.ffmpeg.org
FFmpeg github地址:https://github.com/FFmpeg/FFmpeg
FFmpeg目前最新版本为4.0,在CentOS上,6版本通过yum安装的FFmpeg版本为0.6,7版本通过yum安装的版本为2.6,如果想用较新的版本,需要编译安装,今天这里由于不是主要讲FFmpeg,所以不再多讲FFmpeg的安装,想要安装方法的,回复FFmpeg安装方法获取。
这里给大家提供一个Dockerfile,直接用docker来使用FFmpeg。
你没有看错,就是这么简单,这里使用alpine轻量系统,构建后的镜像只有52M
而且可以使用任意你想使用的版本。
这里也不讲Dockerfile和docker相关知识,如果想了解的,可以留言,留言多的话,下次整理。
到这里ffmpeg就可以正常使用了,下面看一下ffmpeg的功能:
获取音视频信息
ffmpeg -i media.mp4
将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
从视频抽出声音,并存为mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
将wav转换为mp3
ffmpeg -i sound.wav -vn -ar 44100 -ac -2 -ab 192 -f mp3 sound.mp3
将avi转换成mpg
ffmpeg -i video.avi video.mpg
合成视频和音频
ffmpeg -i sound.wav -i video.avi video_finale.mpg
合成多个音频
ffmpeg -i media1.mp3 -i media2.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 media3.mp3
注意:这样合成的音频是会重叠的
音频拼接
ffmpeg -i media1.m4a -i media2.m4a -i media3.m4a -filter_complex '[0:0][1:0][2:0] concat=n=3:v=0:a=1 [a]' -map [a] hechen.mp3"
flv推rtmp流
ffmpeg -re -i test_22m.flv -vcodec copy -acodec copy -f flv -y rtmp://cuplayer:1935/live2/livestream
取视频30帧转换成gif
ffmpeg -i test.avi -vframes 30 -y -f gif a.gif
视频添加boxblur滤镜
ffmpeg -i input.mpg -vf boxblur=1.5:1 output.mp4
视频添加smartblur滤镜
ffmpeg -i input.jpg -vf smartblur=5:0.8:0 output.png
denoise3d降噪处理
ffmpeg -i input.avi -vf mp=denoise3d output.mp4
hqdn3d降噪处理
ffmpeg -i input.avi -vf hqdn3d output.mp4
以上是FFmpeg常用功能,还有更多功能,可参考官方文档。
另外需要注意的是FFmpeg在低版本中存在任意文件读取漏洞,通过FFmpeg可将系统重要文件入/etc/passwd等文件内容读取并输出到视频中。使用旧版本的尽快更新到新版本。
NEWS