FFMPEG简介
功能说明
Fmpeg是用于录制、转换和流化音频和视频的完整解决方案, 包括 libavcodec ,一套领先的音/视频编解码类库。FFmpeg 在Linux上开发,当可以在大多数操作系统下编译,包括Windows。
Note
- FFmpeg对GCC的依赖很强,所以就算是在Windows上, 用VC编译FFmpeg也不是一件轻松的事情。请尽量使用 GCC来编译FFmpeg,比较事半功倍。
包组成结构
FFmpeg主要由一下几个部分组成:
libavcodec:一个包含了所有FFmpeg音视频编解码器的库。为了保证最优性能和高可复用性,大多数编解码器从头开发的。
libavformat: 一个包含了所有的普通音视格式的解析器和 产生器的库。
三个实例程序,这三个实例较为复杂,基本可以作为API使用手册:
ffmpeg:命令行的视频格式转换程序。ffplay:视频播放程序。(需要SDL支持)ffserver:多媒体服务器
下载使用
下载地址
官网地址:http://ffmpeg.org/
git地址: https://github.com/FFmpeg/FFmpeg
ffmpeg命令
参数介绍
基本格式 | ||
---|---|---|
-formats | 输出所有可用格式 | |
-f fmt | 指定格式(音频或视频格式) | |
-i filename | 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头 | |
-y | 覆盖已有文件 | |
-t duration | 记录时长为t | |
-fs limit_size | 设置文件大小上限 | |
-ss time_off | 从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持 | |
-itsoffset time_off | 设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持 | |
-title string | 标题 | |
-timestamp time | 时间戳 | |
-author string | 作者 | |
-copyright string | 版权信息 | |
-comment string | 评论 | |
-album string | album名 | |
-v verbose | 与log相关的 | |
-target type | 设置目标文件类型(“vcd”, “svcd”, “dvd”, “dv”, “dv50”, “pal-vcd”, “ntsc-svcd”, …) | |
-dframes number | 设置要记录的帧数 |
常用命令
音频转换
ffmpeg -i my_audio.wav my_audio.mp3
视频转换
ffmpeg -i my_video.mpeg -s 500×500 my_video.flv
从视频中截取图片
分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264``ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间
视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi