闲来无事聊一聊FFmpeg(一)

作者: 小黑_Coder | 来源:发表于2016-12-28 00:23 被阅读512次

本人学识肤浅,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工具

brewList.png
当然我们也可以直接输入ffmpeg查看更加详细的信息
ffmpegDetail.png
在这些信息中我们可以看到versionconfiguration等信息。
接下来介绍一个FFmpeg最简单的用法,Terminal中输入ffmpeg -i videoDirectory
input.png
这里我们可以查看test.mp4这个视频创建时间视频格式比特率Audio StreamVideo 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就不在这里展示了。

提取音视频.png

音视频字幕合并

我们能把别人提取出来那么我们就应该也要能把他在组装成一个完整的视频。

ffmpeg –i video_file –i audio_file -i str_file –vcodec copy –acodec copy -scodec copy output_file //音视频字幕合并

参数我就不重复解释了。我也只是刚开始接触,如果想更加升入的学习详细参考http://ffmpeg.org/ffmpeg.html

相关文章

  • 闲来无事聊一聊FFmpeg(一)

    本人学识肤浅,FFmpeg这么高深的东西,不是我一两篇博客就能说清楚的。那我为什么还是要写这篇博客呢?因为我想为那...

  • 闲来无事聊一聊FFmpeg(二)

    继上一遍博客,我们对FFmpeg有一个初步的认识之后,这篇博客依然是初步认识FFmpeg好了大家也不要抱怨,只能怪...

  • 起早闲来无事一聊

    在简村,看到“日更达人”这名字,我就由衷地敬佩。 日更,它让我想到了古代守更人打更,公鸡打鸣。请...

  • 聊一聊

    就是这样,喜欢自我欺骗,明知道,真心想你,或者有事的人,会打电话给你。却还是忍不住的用微信,看一个人的消息和动态,...

  • 聊一聊

    记录一下,现在是女儿的生日。2020.7.25星期六 生日快乐我的小天使 微淼商学院说过最经典的话是:有些做商学院...

  • 聊一聊

    早在三天前师兄就告知我们今天上午老师会和我们在实验室聊一聊。校园卡余额不足,时间紧张未吃早餐,早上慌忙收拾赶紧到实...

  • 聊一聊

    大家好,我是野生梅花鹿。 马上就12点了,我决定用几分钟的时间随便写点啥~ 首先呢,是反省。 这个月,其实懒惰了很...

  • 聊一聊

    很久没写了,聊聊最近发生的事,十月份开始了一段长板之旅,一开始担心害怕摔,因为通过挑战一个个动作,挺有趣的,当你为...

  • 聊一聊

    疫情这些年,常常听到的是,哪哪被封控了之类,作为天选打工人,一直在正常上班搬砖中。 直至上周五晚接...

  • 聊一聊Block(一)

    一. Block的概念 1.1 带有自动变量的匿名函数。因为函数是对象,所以block本身也是一个对象 1.2 B...

网友评论

    本文标题:闲来无事聊一聊FFmpeg(一)

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