赞
踩
构成FFmpeg主要有三个部分:
分别是:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe。
为各个不同平台编译完成的库。如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:
无论是编译出来的可执行程序还是SDK,都是由这些源代码编译出来的。FFmpeg的源代码由C语言实现,主要在Linux平台上进行开发。FFmpeg不是一个孤立的工程,它还存在多个依赖的第三方工程来增强它自身的功能。在当前这一系列的博文/视频中,我们暂时不会涉及太多源代码相关的内容,主要以FFmpeg的工具和SDK的调用为主。到下一系列我们将专门研究如何编译源代码并根据源代码来进行二次开发。
在官网上我们可以找到”Download”页面,该页上可以下载FFmpeg的工具、库和源代码等。在选择”Windows Packages”下的Windows Builds后,会跳转到Windows版本的下载页面:
在下载页面上,我们可以看到,对于32位和64位版本,分别提供了三种不同的模式:static、shared和dev
ffplay是一个极为简单的音视频媒体播放器。ffplay.exe使用了ffmpeg库和SDL库开发成的,可以用作FFmpeg API的测试工具。
ffplay的使用方法,最简单的是直接按照默认格式播放某一个音视频文件或流:
ffplay.exe -i ../video/IMG_0886.MOV
除此之外,ffplay还支持传入各种参数来控制播放行为。比较常用的参数有:
ffplay.exe -f rawvideo -video_size 176*144 -i walk_qcif.yuv
ffmpeg.bat内容:
ffplay.exe -i IMG_0886.MOV -x 352 -y 288 -window_title "paly"
其他参数可以参考官网的文档:https://www.ffmpeg.org/ffplay.html或下载包里的文档
ffprobe可以提供简单的音视频文件分析功能。最简单的方法同ffplay类似:
ffprobe.exe -i ../video/IMG_0886.MOV
分析完成后,ffprobe会显示音视频文件中包含的每个码流的信息,包括编码格式、像素分辨率、码率、帧率等信息:
ffmpeg.exe可谓是整个工程的核心所在,它的主要功能是完成音视频各种各样的转换操作。
ffmpeg.exe可以将视频文件由原格式转换为其他格式,如从avi转为mp4等:
ffmpeg -i ../video/IMG_0886.MOV ../video/output_mpeg4_mp3.avi
这里,ffmpeg默认将视频编码格式选择为mpeg4,音频转码格式为mp3。如果我们希望保留原始编码,需要增加参数-c copy,表明不做任何转码操作:
ffmpeg -i ../video/IMG_0886.MOV -c copy ../video/output_copy.avi
如果我们希望将视频转换为其他编码格式,则需要在参数中指定目标格式-c:v libx265或-vcodec libx265
ffmpeg -i ../video/IMG_0886.MOV -c:v mjpeg ../video/output_copy.avi
ffmpeg支持的所有编码器格式可以通过以下命令查看:
ffmpeg.exe -encoders
ffmpeg可以将视频中的音频和视频流分别提取出来。需要在命令行中添加参数-an和-vn,分别表示屏蔽音频和视频流:
@REM 提取视频流
ffmpeg -i ../video/IMG_0886.MOV -c:v copy -an ../video/IMG_0886_v.MOV
@REM 提取音频流
ffmpeg -i ../video/IMG_0886.MOV -c:a copy -vn ../video/IMG_0886_a.aac
使用ffmpeg命令并指定参数-ss(起始点)和-t(需要截取的时间),分别表示截取开始时刻和截取时长
@REM 视频截取
ffmpeg -ss 5 -t 5 -i ../video/IMG_0886.MOV -c copy ../video/IMG_0886_cut.MOV
注:-ss要写在-i之前
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。