1,拷贝音视频
ffmpeg -i input_file -c copy out_file
参数 -i 后面跟输入文件(可以是本地文件,也可以是网络文件)
-c copy 复制 快速复制输入文件到输出文件,如不写,则会同播放速率复制文件
输出文件 可以和输入文件一样格式,可以不一样,比如输入mp4,可以直接输出mp3
2,音视频解码编码
ffmpeg -i 输入文件 -vcodec copy -acodec copy 输出文件
参数 -vcodec copy 视频编码解码 copy 保持原来格式
-acodec copy 音频编码解码 copy 保持原来格式
不同的编码解码格式
3,查看摄像机和麦克的名称
ffmpeg -list_devices true -f dshow -i dummy
查看摄像机和麦克的名称,window麦克信息会出现乱码,可以通过系统设备查看名称
项目中通过 node 的 childprocess 获取详细信息,通过split截取信息后,麦克并没有乱码情况
4,推流本地摄像头头和麦克风指定编码解码格式到推流地址
ffmpeg -f -re -i dshow videoName" -f dshow -re -i audio="麦克Name" -vcodec libx264 -acodec acc -f flv "推流地址"
参数 -re 指定发送频率,实时发送,如果不指定-re,以20倍速发送
-f dshow 输入设备
-f flv 强制转换为flv
-f 指定输入文件的容器格式
5,推流本地视频到推流地址
ffmpeg -re -i a.mp4 -vcodec libx264 -acodec copy -f flv "推流地址"
6,将直播媒体保存至本地文件
ffmpeg -i "http://lexue-play.chatopera.com/live/123.flv" -c copy dump.flv
7,分离提取视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_video //分离音频流
-an 禁掉声音 -vn 禁掉视频
8,将音频转为单声道
ffmpeg -i a.mp3 -ac 1 ad.mp3
将音频转换为单声道 -ac 设置声道数
9,将文件每5秒保存一张图片到当前目录下
ffmpeg -i a.mp4 -vf fps=1/5 thumb%04d.jpg -hide_banner
10,设置视频参数
ffmpeg -i a.mp4 -ar 16000 -acodec copy -vn acok.mp4
ffmpeg -i acok.mp4 -ab 16 -acodec copy acobit.mp4
设置视频 -ar 采集率:定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示
码率: 就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。可以理解为取样率,单位时间取样率越高,精度越高,处理的文件越接近原始文件
-b 比特率:每秒传送的比特数,每秒传送数据就越多,画质就越清晰
-ab 记录声音动态范围,常见8位,16位,位数越高,声音保真度越高
11,视频剪辑
等待50秒,播放50秒开始的视频(不符合业务要求)
ffmpeg -re -i a.mp4 -ss 00:00:50 -vcodec libx264 -acodec copy -f flv -async 1 "推流地址"
不等待50秒,直接播放50秒开始的视频(符合业务要求)
ffmpeg -ss 00:00:50 -re -i a.mp4 -vcodec libx264 -acodec copy -f flv -async 1 "推流地址"
-ss 写在ffmpeg后面 先跳过,再推流
-ss 写在-i后面,循环一直等到 等待时间后,再推流
12,把视频的前30帧转换成一个Gif图
ffmpeg -i 输入文件 -vframes 30 -y -f output.gif
参数 -vframes 指定帧数
-y 覆盖
调用本地摄像头拍照
ffmpeg -f dshow -i video="Integrated Webcam" -y localID.png