本人学识肤浅,FFmpeg
这么高深的东西,不是我一两篇博客就能说清楚的。那我为什么还是要写这篇博客呢?因为我想为那些想去了解音视频,但是又无从下手的同学提供一个入口。再次声明,小弟学识肤浅,有讲解不到位的地方还望各位大神多多指点。先附上FFmpeg
最好的学习资料
FFmpeg介绍
A complete, cross-platform solution to record, convert and stream audio and video.(官网介绍)
一套录制、转换、流化音视频的完整解决方案(翻译的不好勿喷)
FFmpeg
最早由Fabrice Bellard
发起,现在由Michael Niedermayer
维护的开源计算机程序。FFmpeg
有着非常强大的功能包括:视频采集、视频格式转换、视频抓图、给视频加水印等。不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器。目前市场上多数直播应用都采用的这套技术方案。支持的网络协议和视频格式也是非常多。
如何安装FFmpeg
废话不多说了,我们先将Ffmpeg
安装在自己的电脑上试一下就知道它到底有多强大了。下面介绍几个不同平台对FFmpeg
的安装工具。大家可以对应自己的使用的平台进行安装,这里我使用的Mac
,其他平台没有亲自试验过。
ubuntu : apt-get
centos : yum
arch : pacman
mac : brew
windows : binary
安装完以后我们可以在Terminal
中输入brew list
命令查看是否包含了FFmpeg
工具

当然我们也可以直接输入
ffmpeg
查看更加详细的信息
在这些信息中我们可以看到
version
、configuration
等信息。接下来介绍一个
FFmpeg
最简单的用法,Terminal
中输入ffmpeg -i videoDirectory

这里我们可以查看
test.mp4
这个视频创建时间
、视频格式
、比特率
、Audio Stream
、Video Stream
等信息。
FFmpeg的简单使用
转换视频格式
Converting video and audio has never been so easy.
fffmpeg -i {inputVideoPath} -b:v {outputVideoCodeRate} {outputVideoPath}
一行命令即可完成音视频的格式转换,具体的log
信息我们就不在这里分析了。
这里顺便说一下常用参数
参数 | 说明 |
---|---|
-h | 帮助 |
-i filename | 输入文件 |
-t duration | 设置处理时间 hh:mm:ss |
-ss position | 设置起始时间 hh:mm:ss |
-b:v bitrate | 设置视频码率 |
-b:a bitrate | 设置音频码率 |
-r fps | 设置帧率 |
-s wxh | 设置帧大小 WxH |
-c:v codec | 设置视频编码器 |
-c:a codec | 设置音频编码器 |
-ar freq | 设置音频采样率 |
当然官方文档有更加详细的文档http://ffmpeg.org/ffmpeg.html
提取音视频字幕
ffmpeg -i input_file -vcodec copy -an -sn output_file_video //提取视频
ffmpeg -i input_file -map 0:v:0 output_file_video //提取视频
ffmpeg -i input_file -acodec copy -vn -sn output_file_audio //提取音频
ffmpeg -i input_file -map 0:a:0 output_file_aideo //提取音频
ffmpeg -i input_file -scodec copy -an -vn output_file_srt //提取字幕
ffmpeg -i input_file -map 0:s:0 output_file_srt //提取字幕
一个视频文件一般都会包含视频流和音频流,我们可以通过上面的命令来分离音视频流。当然需要注意的是在提取视频和视频的时候,我们最好是使用ffmpeg -i inputFile
来查看一下文件的中视频流和音频流的格式。上面的提取方法不能帮我们转化视频和音频的编码格式,当然我们在提取音视频的时候依然可以加上码率处理时间等参数。上面的参数我解释一下
参数 | 说明 |
---|---|
-vcodec | 指定视频编解('copy' to copy stream) |
-acodec | 指定音频编码('copy' to copy stream) |
-an | 取消音频 |
-vn | 取消视频 |
-sn | 取消字幕 |
-map | 0:v/a/s:0 选择其中一个视频/音频/字幕流输出 |
更加详细的文档当然是官方的了http://ffmpeg.org/ffmpeg.html
我自己找了一个视频试验了一下,因为我这个视频是没有字幕的,看上去原文件大小等于音频大小加视频大小。具体的命令和log
就不在这里展示了。

音视频字幕合并
我们能把别人提取出来那么我们就应该也要能把他在组装成一个完整的视频。
ffmpeg –i video_file –i audio_file -i str_file –vcodec copy –acodec copy -scodec copy output_file //音视频字幕合并
参数我就不重复解释了。我也只是刚开始接触,如果想更加升入的学习详细参考http://ffmpeg.org/ffmpeg.html
网友评论