NotePublic/Software/Applications/FFMPEG/FFMPEG_的基本使用.md

134 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FFMPEG 的基本使用
## 安装
### 安装 FFMPEG
```bash
# Manjaro
sudo pacman ffmpeg
```
### Intel Quick Sync Video
若想使用 Intel GPU 进行硬件编解码加速,需要安装 intel-media-sdk
```bash
# Manjaro
sudo pacman -S intel-media-sdk
```
### NVIDIA NVENC/NVDEC
若想使用 NVIDIA GPU 进行硬件编解码加速,需要安装 nvidia-utils
```bash
# Manjaro
sudo pacman -S nvidia-utils
```
## 主要参数
* -i 设定输入流
* -f 设定输出格式
* -ss 开始时间
视频参数:
* -c:v 是 -vcodec 的缩写,设定视频编解码器,未设定时则使用与输入流相同的编解码器
* -vn 不处理视频
* -b 设定视频流量默认为200Kbit/s
* -r 设定帧速率默认为25
* -s 设定画面的宽与高
* -aspect 设定画面的比例
音频参数:
* -c:a 是 -acodec 的缩写,设定声音编解码器,未设定时则使用与输入流相同的编解码器
* -an 不处理音频
* -ar 设定采样率
* -ac 设定声音的 Channel 数
## 获取媒体文件信息
```bash
# 显示视频编码、尺寸、音轨等.
ffprobe -i <file>
```
## 转码
若需采用与源文件视频和音频编码一致的输出文件可使用下列命令,其输出的音频质量和视频质量与源文件一样。
```bash
ffmpeg -y -i <input file> -c:v copy -c:a copy -f mp4 <output file>
```
* copy 指采用相同的制式
若对音频或视频转码,可使用下列命令:
```bash
ffmpeg -y -i <input file> -c:v <video codec> -c:a <audio codec> <output file>
```
### 编/解码器类型
编解码器类型可通过命令:
```bash
ffmpeg -encoders
ffmpeg -decoders
```
查看,常用的有
Audio Codec:
* aac
* ac3
* flac
Video Codec:
* h263
* libx264
* libx265
* h264_qsv: Intel Quick Sync Video 硬件加速器
* hevc_qsv: Intel Quick Sync Video 硬件加速器
* mpeg2_qsv: Intel Quick Sync Video 硬件加速器
### 使用硬件加速转码
```bash
ffmpeg -y -hwaccel <hw acc methods> -c:v <hw video decoder> -c:a <audio decoder> -i <input file> -c:v <hw video encoder> -c:a <audio encoder> <output file>
```
其中 hw acc methods 可用
```bash
ffmpeg -hwaccels
```
命令查看。
## 分离视频音频流
```bash
# 分离视频流
ffmpeg -i <input file> -vcodec copy -an <output file>
# 分离音频流
ffmpeg -i <input file> -acodec copy -vn <output file>
```
## 视频截成图片
```bash
# -ss 指示开始时间,如 00:00:05
# -i 指定输入文件,如 ideo.mp4
# -f 指定文件格式,如 image2
# -r 指定截取频率1为每1秒截取一张10为每100ms截取一张0.5为每2s截取一张
# output 为输出文件,如 out%3d.jpg输出文件将以out001.jpg、out002.jpg等命名
./ffmpeg -i <input media> -ss <start time> -f <format> -r <rate> <output>
```