## ffmpeg 输入输出

### avfoundation 参数
```Shell
-list_devices <TRUE|FALSE>
如果设置为 true，则会给出所有可用输入设备的列表，显示所有设备名称和索引。

-video_device_index <INDEX>
通过索引指定视频设备。覆盖输入文件名中给出的任何内容。

-audio_device_index <INDEX>
通过索引指定音频设备。覆盖输入文件名中给出的任何内容

-pixel_format <FORMAT>
TODO: 有哪些 pixel_format

-framerate
设置抓取帧率。默认为ntsc，对应帧速率为30000/1001

-video_size
设置视频帧大小。

-capture_cursor
捕获鼠标指针。默认值为 0。

-capture_mouse_clicks
捕获屏幕鼠标点击。默认值为 0。

-capture_raw_data
捕获原始设备数据。默认值为 0。
```

#### 打印支持的设备列表并退出
```Shell
ffmpeg -f avfoundation -list_devices true -i ""
```

#### 录制音视频
```Shell
##### 将视频设备 0 中的视频和音频设备 0 中的音频录制到 out.avi 中
ffmpeg -f avfoundation -i "0:0" out.avi


##### 将视频设备 2 中的视频和音频设备 1 中的音频录制到 out.avi 中
ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi


##### 使用像素格式 bgr0 从系统默认视频设备录制视频，并且不将任何音频录制到 out.avi 中
ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
```

### lavfi 参数
```Shell

```

#### 生成老电视测试信号
```Shell
ffmpeg -f lavfi -i testsrc -t 5 -f lavfi -i sine=r=44100 -t 5 -f flv -vcodec h264 -acodec aac abc.mp4

ffmpeg -f lavfi -i 'nullsrc,geq=random(1)*255:128:128' -t 5 -f lavfi -i sine=r=44100 -t 5 -f flv -vcodec h264 -acodec aac abc.mp4
```