FFmpeg常用命令
FFmpeg 常用命令汇总
录制视频
1.录制屏幕-i 指定从哪儿采集数据,它是一个文件索引号-r 指定帧率ffmpeg -f avfoundation -i 1 -r 30 out.yuv2.播放yuv数据需指定分辨率与像素格式ffplay -s 3360x2100 -pix_fmt uyvy422 out.yuv3.查询设备列表ffmpeg -f avfoundation -list_devices true -i ""
AVFoundation indev @ 0x7ff068403c00] AVFoundation video devices:[AVFoundation indev @ 0x7ff068403c00] [0] FaceTime HD Camera[AVFoundation indev @ 0x7ff068403c00] [1] Capture screen 0[AVFoundation indev @ 0x7ff068403c00] AVFoundation audio devices:[AVFoundation indev @ 0x7ff068403c00] [0] 外置麦克风[AVFoundation indev @ 0x7ff068403c00] [1] MacBook Pro 麦克风
录制音频
1.录制音频命令ffmpeg -f avfoundation -i :1 out.wav2.录制音视频ffmpeg -f avfoundation -i 1:1 -r 30 out.mp4
分解与复用命令
1.ffmpeg -i abc.flv -acodec copy -vcodec copy out.mp42.ffmpeg -i abc.flv -acodec copy -vn out.aac3.ffmpeg -i abc.flv -vcodec copy -an out.mp4
处理原始数据
1.抽取视频ffmpeg -i out.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv2.抽取音频ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
滤镜命令
*.应用:水印,画中画*.ffmpeg滤镜:拿到解码后的数据帧,加滤镜得到滤镜后的数据帧在编码*滤镜命令:原高度-200ffmpeg -i xx.mp4 -vf crop=in_w-200:in_h-200 xx.mp41.2视频加水印ffmpeg -i abc.mp4 -vf "movie=abc.png[watermark];[in][watermark] overlay=main_w-overlay_w -10:main_h-overlay_h-10[out]" out.mp4*另一种加水印的方法ffmpeg -i abc.mp4 -i abc.png -filter_complex 'overlay=x=10:y=main_h-overlay_h-10' output.mp4参数解析:-filter_complex相比vf,适合更加复杂的滤镜功能,如同时对视频进行裁剪并旋转。main_w为视频宽度,overlay_w要添加的图片的水印宽度,main_h:视频高度,overlay_h:要添加图片的水印高度
音视频裁剪
*.ffmpeg -i abc.mp4 -ss 00:00:00 -t 10 xx.ts-ss:截取开始时间-t: 间隔时间,以s为单位
音视频合并
*.ffmpeg -f concat -i inputs.txt yy.mp4inputs.txt 为合并列表inputs文件格式:file '1.ts'file '2.ts'
图片/视频互转命令
*视频转图片ffmpeg -i abc.mp4 -r 1 -f image2 image-%3d.jpeg-r 帧率-f 图片格式*图片转视频ffmpeg -i image-%3d.jpeg out.mp4
直播 推流/拉流
*直播推流ffmpeg -re -i abc.mp4 -c copy -f flv rtmp://server/live/streamName*直播拉流ffmpeg -i rtmp://server/live/xxxxx -c copy dump.flv*播放湖南卫视ffplay rtmp://58.200.131.2:1935/livetv/hunantv
补充:RTMP,RTSP,HTTP协议
三个协议都属于TCP/IP五层体系结构中应用层的协议。一般情况下直播用RTMP,RTSP,点播用HTTP
RTMP协议
*是流媒体协议,一般传输flv,f4v格式流,一般在TCP1个通道上传输命令和数据
RTSP协议
*流媒体协议,一般传输的是ts,mp4格式的流,一般需要2-3个通道,命令和数据通道分离。
HTTP协议
*HTTP协议没有特定的传输流,一般需要2-3个通道,命令和通道分离。