FFMpeg的常用命令与使用

FFMpeg 常用命令的理解与使用

ffprobe

输出封装格式信息

ffprobe -show_format xxx

// 以json格式输出

ffprobe -print_format json xxx

// 输出流信息

ffprobe -show_frames xxx

// 输出包信息

ffprobe -show_packets xxx

ffplay

ffplay xxx -loop n   循环播放
ffplay  xxx  -ast 1  播放第一路音频流
ffplay  xxx  -vst 1  播放第一路视频流

音视频的裁剪
第一种方式:将input.mov 从第50秒开始剪切20s 的时间,输出到output.mov 中,其中-ss 制定偏移时间,-t 指定的偏移时长

ffmpeg -ss 00:00:50 -t 00:00:20 -i video.mov -vcodec copy -acodec copy  tmp.mp4

调整视频的速度
调整tps为原来的1.11倍, 音频为原来的0.9倍,具体需求具体对待,不然可能会音画不同步

ffmpeg -i tmp.mp4 -filter_complex "[0:v]setpts=1.11*PTS[v];[0:a]atempo=0.9[a]" -map "[v]" -map "[a]" output.mp4

将input.mov 切割多个视频

ffmpeg -i  input.mov -ss 00:00:20 -c copy small-1.mov -ss 00:00:10 -codec copy small-2.mov

提取一个视频的音频文件

ffmpeg -I video.mov -vn -acodec copy video_record.m4a

提取一个视频的视频,让其静音

ffmpeg -I video.mov -an -vcodec copy video_noSound.mp4

从MP4文件中抽取视频流导出为H264裸数据

ffmpeg -I video.mov -an -vcodec copy -bsf:v h264_mp4toannexb output2.h264

将音频和H264裸数据整合到一起

ffmpeg -i video_audio.m4a -i output2.h264  -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f mp4 outputVideo.mp4

重点: 将音频文件的编码格式做转换

ffmpeg -i audio.wav -acodec libfdk_aac output.aac

从WAV音频文件导出PCM裸数据

ffmpeg -I input.wav -acodec pcm_s16le -f s16le output.pcm

重新编码视频文件,复制音频流,同时封装到MP4格式的文件

ffmpeg -I input.flv -vcodec libx264 -acodec copy output.mp4

将一个mp4 文件转换为gif格式的图
按照分辨率不动宽度改为100,帧率改为10(-r) 只处理前5秒钟(-t) 的视频,生成gif

ffmpeg -I input.mpv -vf scale=100:-1 -t 5 -r 10 image.gif

将视频的画面部分生成图片,比如要分析视频的每一帧展示什么内容的时候
每4秒生成一张

ffmpeg -I output.mp4 -r 0.25 frames_%04.png

使用一组图片可以组成一个gif

Ffmpeg -I frames_%04d.png -r 5 output.gif

改变音量效果,将音量缩小一半

ffmpeg -I input.mav -af ‘volume=0.5’ output.wav

将两路声音合并,时间按照较短的时间合并

ffmpeg -I vocal.wav -I vocal2.wav -filter_compex amix=inputs=2:duration=shortest output.wav

将声音进行变速但不变调效果器的使用
速度变为原来的0.5倍,时间就是2倍

ffmpeg -I vocal.wav -filter_compex atempo=0.5 output.wav

为视频增加水印

ffmpeg -I input.mp4 -I xxx.png -filter_compex ‘[0:v][1:v]overlay=main_w-overlay_w-10:10:1[out]’ -map ‘[out]’ output.mp4

将一张RGBA格式的数据转换为JPEG

ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -I texture.rgb -f image2 -vcodec mjpeg output.jpg

将YUV格式的数据转换为JPEG

ffmpeg -f rawvideo -pix_fmt yuv420p -s 480*480 -I texture.yuv -f image2 -vcodec mjepg output.jpg

将一段视频推送到流媒体服务器上

ffmpeg -re -I input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxxxxx

将流媒体服务器上的流dump到本地

ffmpeg -I http://xssssssss.flv -acodec copy -vcodec copy -f flv xxx.flv

// 视频的合并
//截取从头开始的30s

ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4 

//截取从30s开始的30s

ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4

//进行视频的合并

 ffmpeg -f concat -i list.txt -c copy concat.mp4

list.txt 内容如下

file ./split.mp4
file ./split1.mp4

文章摘自:

<音视频开发进阶指南>

你可能感兴趣的:(FFMpeg的常用命令与使用)