FFmpeg命令行(ffmpeg、ffplay、ffprobe)

ffmpeg命令行

A command line tool to convert multimedia files between formats.

名称 命令 解释
查看当前设备输入信息 ffmpeg -f avfoundation -list_devices true -i “”
Mac设备录制 ffmpeg -f avfoundation -i “:” output.mkv
采集屏幕 ffmpeg -f avfoundation -i 1 -r 15 out.yuv -i (0 摄像头、1 自带屏幕 、2 外接屏幕-1、 3 外接屏幕-2)
yuv采样视频分辨率和颜色空间转换 ffmpeg -video_size 2560x1440 -pix_fmt uyvy422 -i out.yuv -s 1920x1080 -pix_fmt yuv420p out.yuv
编码视频帧率控制 ffmpeg -r 80 -i input output ffmpeg -i input -r 20 output -r 所在位置不同,决定其参数是对输入视频还是输出视频起作用。放在输入前,降低fps,增加视频时长:使其输出文件的时长分别为原来的一半和两倍,即播放速度为原来的两倍和一半。放在输入后,降低fps,视频时长不变,丢帧,质量变差:这样输出文件的码流理论上为输入文件的一半左右。
Mac视频硬编码 ffmpeg -r 5 -s 1920x1080 -i ppt.yuv -b 1000000 -profile high -coder cabac -vcodec h264_videotoolbox -y out.h264
生成带有移动矢量的视频 ffmpeg -flags2 +export_mvs -i input.mp4 -vf codecview=mv=pf+bf+bb output.mp4
计算两个YUV的psnr ffmpeg -s 720x1280 -i input.yuv -s 720x1280 -i input2.yuv -lavfi psnr=“psnr.log” -f null -
截取原视频中其中一段视频 ffmpeg -s 720x1280 -i input.yuv -ss 00:00:00 -to 00:00:40 output.yuv 将文件从 50 秒开始剪切 20 秒,输入到新文件,-ss 是指定时间,-t 是指定时长
视频去水印 ffmpeg -i test.mp4 -vf delogo=x=?:y=?:w=?:h=?:show=? out.mp4 x,y logo的位置;w,h logo的宽高;show当设置为1时,将在屏幕上绘制一个绿色矩形,以简化查找正确的x、y、w和h参数。默认值为0。
把视频每一帧转换成图片 ffmpeg -i input.mp4 ‘out.bmp’
视频转gif ffmpeg -i small.mp4 small.gif
视频剪切 ffmpeg -i input.mp4 -vf crop=410:720 -y out.mp4 crop的参数格式为w: h: x :y;w和h为输出视频的宽和高;x和y是视频中的某点,将该点作为基准点,向右下进行裁剪得到输出视频,如果x和y不写,则默认居中。
旋转transpose ffmpeg -i input.jpg -vf transpose=2 -y out.jpg 旋转后没有黑底;transpose=0 逆时针旋转90°,然后垂直翻转; transpose=1 顺时针旋转90°; transpose=2 逆时针旋转90°; transpose=3 顺时针旋转90° 然后垂直翻转。
旋转rotate ffmpeg -i input.jpg -vf rotate=PI/3 -y out.jpg 旋转后带有黑底,视频/图片的原始宽高并没有改变。

ffprobe 命令行

A simple multimedia stream analyzer.

名称 命令 解释
查看视频帧frame信息 ffprobe -show_frames input.h264
查看视频流streams信息 ffprobe -show_streams input.h264

ffplay命令行

A simple media player based on SDL and the FFmpeg libraries.

名称 命令 解释
Show license ffplay -L
帮助 ffplay -h
查看运动矢量mv信息 ffplay -flags2 +export_mvs output.h264 -vf codecview=mv=pf
宏块MB信息打印到本地txt中 ffplay -debug mb_type thinkvision-2560x1440.mp4 2>mv.txt
播放yuv ffplay -f rawvideo -video_size 2560x1440 -pixel_format uyvy422 out.yuv
ffplay 播放 aac ffplay -f f32le -ac 1 -ar 44100 test.aac -ac指定通道个数,-ar指定采样率
ffplay 播放 rgb ffplay -f rawvideo -pixel_format rgb24 -video_size 480x480 texture.rgb
指定窗口大小播放 ffplay -x 400 output.mp4 指定播放窗口500像素大小

批量转码/转封装脚本(并删除原始文件)

#!/bin/bash
for i in *.mkv;
 do echo"${i%.*}.mp4"; 
 ffmpeg -i "$i" -codec copy "${i%.*}.mp4";
 rm -rf "${i%.*}.mkv";
 done

猜你喜欢

转载自blog.csdn.net/yanceyxin/article/details/126453647