FFmpeg简介以及命令工具使用

最近要了解FFmpeg里面的技术细节问题,所以在读《FFmpeg从入门到精通这本书》,后面会有一些列的文章来笔记实践具体的技术细节问题。

FFmpeg安装

关于在Mac下的FFmpeg的安装之前的文章有提到过查看这里我就使用命令进行了安装但是这样默认安装完后会有一些库和工具没有安装上。我这篇文章安装的时候FFmpeg还是3.4.2的版本,在写这篇文章的时候已经是4.0的版本了。
于是我使用更新命令更新到了4.0版本:

brew upgrade ffmpeg

于是在目录下面有两个版本的FFmpeg了并且安装的4.0版本的工具库是这样的:




连我们以后要使用的ffplay这个工具都没有,怎么处理呢?我这样做来生成这个工具命令的。

brew reinstall ffmpeg --with-sdl2

可以通过命令行brew info ffmpeg查看它可以带一些什么参数,看了之后一目了然知道后面要用到什么库就来重新安装一下。

因为在安装FFmpeg的时候在后面可以带参数,所以我重新安装了一下ffmpeg并且带了一个可以使用ffplay工具的参数–with-sdl2,等待安装完成在bin目录下面看到了ffplay这个命令啦。

当然我们也可以通过不使用brew工具来进行安装,使用手动编译的方式来使用FFmpeg参考之前的文章:查看
配置好了之后可以通过命令ffmpeg -h查看支持的一些常用的命令操作。例如查看支持的解码支持:

ffmpeg -decoders

FFmpeg工具使用基础

这里我们主要了解三个主要的FFmpeg工具:

  • ffmpeg:做音视频编解码方便使用,很多转码也是使用ffmpeg,可以通过ffmpeg –help查看它支持的基础信息,还有高级参数的查看使用ffmpeg –help long要一次查看所以的参数可以使用ffmpeg –help full
  • ffprobe:进行音视频数据分析的常用参数
  • ffplay:播放音视频的时候的一系列操作命令

ffmpeg

ffmpeg基础常用命令

  • ffmpeg -formats
    使用ffmpeg转码的时候,有时候会遇到无法解析的视频文件或者无法生成视频文件,可以通过这个命令查看是否支持对应的文件格式。

  • ffmpeg -codecs
    查看支持的编码器和解码器,例如查看是否支持H.264编解码器。

  • ffmpeg -filters
    查看FFmpeg支持哪些滤镜

  • ffmpeg -h muxer=flv
    查看FLV封装器的参数支持,同理查看编解码器的参数支持为ffmpeg -h encoder=h264

  • ffmpeg -i input.mp4 -f mp3 -vn output.mp3
    从MP4中提取出mp3音频文件

ffmpeg封装转换

ffmpeg封装转换功能在AVFormat模块中,通过libavformat库进行Mux和Demux
ffmpeg编解码功能通过AVCodec来完成,通过libavcodec库进行Encode和Decode

下面列举一个进行视频文件封装与编码的例子:

ffmpeg -i ~/Movies/i_am_you.rmvb -vcodec mpeg4 -b:v 200k -r 15 -an ~/Movies/output.mp4

输出信息如下:




- 转封装格式从RMVB为MP4格式
- 视频编码从RV40转为MPEG4格式
- 视频码率从1531kbit/s转为200kbit/s
- 视频帧率从24fps转为15fps
- 转码后的文件不包含音频(-an 参数)

ffprobe

ffprobe是多媒体信息查看工具,主要用来查看多媒体文件信息,可以通过ffprobe –help查看详细的帮助信息。列举几个常见的命令

  • ffprobe -show_packets filename
    查看多媒体数据包信息

  • ffprobe -show_data filename
    查看多媒体文件数据内容 可以和上面的命令组合查看每个包的具体二进制数据ffprobe -show_data -show_packets filename

  • ffprobe -show_format filename
    查看文件封装格式

  • ffprobe -show_frames filename
    查看视频文件中的帧信息

  • ffprobe -show_streams filename
    查看多媒体文件中的流信息

  • ffprobe -show_streams -select_streams v -of xml filename
    使用select_stream可以查看音频(a)视频(v)字幕(s)的信息 -of xml 以xml形式来显示

ffplay

ffplay在FFmpeg中常用来作为播放器,其实同样可以通过很多音视频数据的图形化分析,可以看到视频图像的运动估计方向,音频数据的波形等

ffplay常用参数

通过命令ffplay –help来查看支持的一些列参数

ffplay使用示例

  • ffplay -ss 30 -t 10 filename
    视频从30秒开始播放,播放十秒钟

  • ffplay -window_title “Hello Lyman” filename
    视频播放时的播放器窗口显示标题为自定义标题

  • ffplay rtmp://live.hkstv.hk.lxdns.com/live/hks
    打开网络直播流

  • time ffplay -window_title “Hello Lyman” -ss 20 -t 10 -autoexit filename
    从20秒播放一个视频,播放时长为10秒,播放完成后自动退出,播放窗口标题为 Hello Lyman,通过time来查看命令运行时长

  • ffplay -window_title “Hello Lyman” -vf “subtitles=input.srt” output.mp4
    通过filter将字幕文件加载到播放数据中。我在执行完这条命令后出现错误no such filter subtitles 大概意思是没有字幕的filter 于是我执行命令brew reinstall ffmpeg --with-libass把字幕库编译进来
    但是最后这条命令还是运行出错了出错原因为:

Unable to open ~/Movies/input2.srt
Error initializing filter 'subtitles' with args '~/Movies/input2.srt'

不知道是不是我这个字幕有问题 但是我在网上下载了字幕还是有问题
- ffplay -showmode 1 filename.mp3
播放音频的时候将会把解码后的音频数据以音频波形的形式显示出来

  • ffplay -vismv pf filename
    查看B帧预测与P帧预测信息测试失败

猜你喜欢

转载自blog.csdn.net/lyman_ye/article/details/80229711
今日推荐