FFmpeg 简单指令介绍
2020-07-27 本文已影响0人
毛先森
简介
FFmpeg 最早是由法国著名程序员
法布里斯·贝拉于 2000 年开发,FFmpeg 是音视频的一个工具宝库,集成了播放,视频裁剪等功能
安装程序
在 Ubuntu 虚拟机中使用 apt 安装 FFmpeg 程序,用于熟悉简单的指令
sudo apt install ffmpeg
ffprobe 查看基础信息
- ffprobe xxx.mp3
得到 mp3 文件的总时长,开始时间点,比特率,数据流的类型格式
Input #0, mp3, from 'test_format.mp3':
Metadata:
encoder : Lavf57.83.100
Duration: 00:04:17.25, start: 0.025057, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
- ffprobe -show_frames 显示帧信息
- ffprobe -show_packets 显示包信息
ffplay 播放
- ffplay xxxx.mp4
将出现播放器弹窗,方向键左右跳转 10s 的进度,上下键跳转 1 min 的进度
- ffplay xxx.mp4 ast 1
播放该视频文件的第一路音频流
- ffplay xxx.mp4 vst1
播放该视频文件的第一路视频流
ffplay 功能强大,上面我们使用它来播放 mp4 封装格式的文件,如果播放 YUV,PCM 等原始数据呢,其实也是可以的,但是我们必须要说明文件格式,声道等必要信息,使得 ffplay 能够正确地处理数据
音画同步
由于音频文件和视频文件会分开渲染,所以音画同步的问题是所有播放器都会遇到的,以前使用播放器看视频遇到过视频画面和声音对不上, 声音过慢的问题,就是出现了音画不同步
目前有三种方案实现音画同步:
- 以音频文件的主时间轴为同步源
- 以视频文件的主时间轴为同步源
- 以外部时钟为同步源
ffplay 也是默认以第一种方式来对齐
ffmpeg 音视频处理
我们使用 ffplay 播放视频,使用 ffprobe 输出文件基本信息,但当我们需要对一个视频文件进行转码或者裁剪等复杂处理时,上面的这两个库就无法实现了
- 剪切一段媒体文件,可以是视频或者音频
ffmepg -i xxx.mp4 -ss(指定偏移基点) 00:00:00.0 (时间) -codec copy -t 20 (时长:s) newxxx.mp4
该指令意味着以 xxx.mp4 文件的从时间点 0 为起点,偏移量为 20 s,裁剪生成 newxxx.mp4 文件,“-ss” 指定偏移时间
- 将一个视频切割成多份
ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -codec copy
small-2.mp4
- 提取视频文件中的音频文件
ffmpeg -i xxx.mp4 -vn -acodec copy xxx.aac
-acodec 音频编码
-vn 使用音频数据
提取时需要了解当前视频的音频格式,输出时不能随意指定音频文件的封装格式
- 将视频文件中音频静音
ffmpeg -i xxx.mp4 -an -vcodec copy xxxx.mp4
-an 不使用音频数据
-vcodec 视频编码
ffmpeg 还能够实现推拉流,视频加水印等复杂操作