// 录制屏幕
// -f: 指定使用 avfoundation 采集数据
// -i:指定从哪儿采集数据,它是一个文件索引号 1 是屏幕的索引号
// -r: 指定帧率
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
// 视频播放
// -video_size 视频大小
// -pixel_format 视频格式
ffplay -video_size 3584x2240 -pixel_format uyvy422 out.yuv
// 查看设备索引号
ffmpeg -f avfoundation -list_devices true -i ""
// 分解与复用
// 通过解复用 将 mov 格式文件 转成 flv 或其他格式的过程
// -vcodec copy 视频编码处理方式 copy指不做任何改变
// -acodec copy 音频编码处理方式 copy指不做任何改变
// -vn 不抽取视频
// -av 不抽取音频
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
// 处理原始数据
// 提取 视频 原始数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
// 提取 音频 原始数据
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
// 播放原始数据需要在ffplay 后面加上 原始数据的参数
// 播放原始音频数据,需要添加通道数、采样率、存储大小
ffplay -ac 2 -ar 48000 -f s16le out.pcm
// 播放原始视频数据,需要添加视频大小,部分可能还需要带上像素编码格式 pixel_format
ffplay -video_size 1920x1080 out.yuv
// 滤镜命令
// 整个过程大致为:拿到解码数据帧 , 进行过滤生产过滤后的数据帧,然后重新编码获得编码后的数据帧,最后进行输出
// 视频裁剪命令
ffmpeg -i in.move -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
// -vf 视频裁剪
// -c:v 视频编码器
// -c:a 音频编码器
// 音视频裁剪合并
// 裁剪
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
// 拼接 ffmpeg -f concat -i inputs.txt out.flv
// inputs.txt 是文件列表,记录所有想合并在一起的文件名称文件格式 "file filename" // 例如 file '1.ts'
// 图片视频互转命令
// 视频分解为图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
// 图片合并成视频
ffmpeg -i image-$3d.jpeg out.mp4
// 直播推拉流
// 直播推流
// -re 与原视频的帧率保持同步
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
// 直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv