视频分分合合,视频打码,视频静音,视频提取有用的多个有用片段再生成等。。。。看看有没有适合你需求的?
1:将视频分割为两个部分,让这上部分视频和下部分视频想法
./ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
2:普通的将MP4转avi
./ffmpeg -i input.mp4 output.avi
./ffmpeg -i input.mp4 -f avi output.dat //转换了后缀名,同样可以作为视频输出 起重-f就是为了约束本质的格式
3:可以看出视频的很多信息,具体明天可以查询下 更多的了解
ffprobe -show_streams D:\Resources\B.mp4
4:画中画的两种体现形式
例:ffmpeg -i D:\Resources\B.mp4 -i D:\Resources\12.mp4 -filter_complex "[0:v][1:v] overlay=10:10:enable='between(t,1,20)' [v0];[v0][1:v] overlay=100:100:enable='between(t,21,40)' [v0]" -map "[v0]" D:\Resources\14.mp4 -y
例:ffmpeg -i D:\Resources\B.mp4 -i D:\Resources\12.mp4 -filter_complex "[0:v][1:v] overlay=10:10:enable='between(t,10,40)' [v0]" -map "[v0]" D:\Resources\14.mp4 -y
例:ffmpeg -i D:\Resources\B.mp4 -vf scale=800:-1 D:/Resources\12.mp4 -y
5:定位定时模糊化
FFMPEG -i http://172.22.9.202/live-record/video/20211218/110191092268531857.mp4 -filter_complex "[0:v]crop=w=333:h=167:x=208:y=92,boxblur=luma_radius=min(333\,167)/4 [c1];[0:v]crop=w=294:h=147:x=204:y=198,boxblur=luma_radius=14 [c2];[0:v][c1]overlay=208:92:enable='between(t,34,38)'[v0];[v0][c2]overlay=204:198:enable='between(t,99,103)'[v0]" -map "[v0]" D:\Resources\12.mp4 -y
6:定位定时模糊化以及定时静音
FFMPEG -i http://172.22.9.202/live-record/video/20211218/110191092268531857.mp4 -filter_complex "[0:v]crop=w=333:h=167:x=208:y=92,boxblur=luma_radius=min(333\,167)/4 [c1];[0:v]crop=w=294:h=147:x=204:y=198,boxblur=luma_radius=14 [c2];[0:v][c1]overlay=208:92:enable='between(t,34,38)'[v0];[v0][c2]overlay=204:198:enable='between(t,99,103)'[v0];[0:a]volume=enable='between(t,100,200)+between(t,400,450)':volume=0[outa]" -map "[v0]" -map "[outa]" D:\Resources\12.mp4 -y
7:定时静音
FFMPEG -i http://172.22.9.202/live-record/video/20211218/110191092268531857.mp4 -filter_complex "[0:a]volume=enable='between(t,100,200)+between(t,400,450)':volume=0[outa]" -map "[outa]" D:\Resources\12.mp4 -y
8:视频信息转化
ffmpeg -i D:\Resources\B.rmvb -vcodec mpeg4 -b:v 200k -r 15 -an D:\Resources\14.mp4 -y
视频格式mpeg4转MP4
视频编码rv40转mpeg4geshi
视频帧率转换为15fps
视频码率转换为200kbit/s
-an不包含音频
9:输出封装信息格式
ffprobe -show_format D:\Resources\B.mp4
10:输出包信息
ffprobe -show_packets D:\Resources\B.mp4
11:输出流信息
ffprobe -show_frames D:\Resources\B.mp4
12:截取视频
ffmpeg -i D:\Resources\B.mp4 -ss 00:00:20 -t 15 -c copy D:\Resources\B1.mp4 -ss 00:00:10 -t 20 -codec copy D:\Resources\B2.mp4
13:从视频文件提取好H264裸数据
ffmpeg -I video.mov -an -vcodec copy -bsf:v h264_mp4toannexb output2.h264
14:将音频和裸数据合并
ffmpeg -i video_audio.m4a -i output2.h264 -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f mp4 outputVideo.mp4
15:将音频格式转换
ffmpeg -i audio.wav -acodec libfdk_aac output.aac
16:将音频转为pcm裸数据
ffmpeg -I input.wav -acodec pcm_s16le -f s16le output.pcm
17:视频和pcm合并
ffmpeg -I input.flv -vcodec libx264 -acodec copy output.mp4
18:将视频转gif
ffmpeg -i D:\Resources\A.mp4 -vf scale=200:-1 -t 3 -r 10 D:\Resources\A.gif -y
19:视频没1/4生成图片
ffmpeg -i output.mp4 -r 0.25 frames_%04.png
20:png和合成一个gif
ffmpeg -i frames_%04d.png -r 5 output.gif
21:整体改变音量
ffmpeg -I input.mav -af ‘volume=0.5’ output.wav
22:添加水印
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
23:将YUV格式的数据转换为JPEG
ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -I texture.rgb -f image2 -vcodec mjpeg output.jpg
24:将一段视频推送到流媒体服务器上
ffmpeg -re -I input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxxxxx
25:将流媒体服务器上的流dump到本地
ffmpeg -I http://xssssssss.flv -acodec copy -vcodec copy -f flv xxx.flv
26:截取视频
ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4
27:去掉视频某部分
ffmpeg -i D:\Resources\A1.mp4 -vf "select='between(t,30,40)+between(t,50,56)+between(t,74,91)', setpts=N/FRAME_RATE/TB" -af "aselect='between(t,30,40)+between(t,50,56)+between(t,74,91)', asetpts=N/SR/TB" D:\Resources\11.mp4 -y
28:合并视频ffmpeg -f concat -i list.txt -c copy concat.mp4
file ./split.mp4
file ./split1.mp4
29:获取视频ini格式信息
ffprobe -of ini -show_streams D:\Resources\B.mp4
ffprobe -of flat -show_streams input.fly //同理
ffprobe -of json -show_streams input.fly //同理
ffprobe -of csv -show_streams input.fly //同理 csv Excel
30:使用select_streams可以查询音频a视频v字母s配合show_franes查询视频frames信息
££probe -show_frames -select_streams v -of xml input.mp4
31:播放视频的30开始后的10秒
ffplay -ss 30 -t 10 D:\Resources\B.mp4
32:播放视频网络直流
ffplay -window_title "播放测试" rtrnp: //up.v.test.com/live/strearn
33:强制h264解码播放MP4
ffplay -vcodec h264 output.mp4
34:指定视频流 指定音频流播放
ffplay -vst xxxx.mp4 -ast xxxx.aac -/Movies/movie/ChinaTV-11.ts
35:将字幕加入到播放列表中
ffplay -window_title "Test Movie" -vf "subtitles=input.srt" output.mp4
36:显示语音波纹波形图
ffplay -showmode 1 D:\Resources\11.mp3
37:解码每个宏块
ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 20 -t 10 -autoexit D:\Resources\B.mp4
38:B帧预测与P帧预测
ffplay -window_title "播放测试" D:\Resources\B.mp4
39:预测显示
ffplay -flags2 +export_mvs -ss 40 D:\Resources\B.mp4 -vf codecview=mv=pf+bf+bb
40:faststart会在moov生成后将moov移动至mdat前
ffmpeg -i input.flv -c copy -f mp4 -movflags faststart output.mp4
41:生成DASH格式(特殊的MP4格式)
ffmpeg -i input.flv -c copy -f mp4 -movflags dash output.mp4
42:将直播流推向IIS服务器 在通过isml发布
ffmpeg -re -i input.mp4 -c copy -movflags isml+frag_keyframe -f ismv Stream
43:将ac3格式先转麻成aac再封装到视频流中
ffmpeg -i input_ac3.mp4 -vcodec copy -acodec aac -f flv output.flv
44:插入关键帧索引
ffmpeg -i input.mp4 -c copy -f flv -flvflags add_keyframe_index output.flv
45:打印关键帧索引信息等
ffprobe -v trace -i D:\Resources\B.mp4
46:常规文件转直播
ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb output.m3u8
47:start_number参数设置m3u8列表第一片的序列数
ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -start number 300 output.m3u8
48:网络路径转直播流
ffmpeg -re -i input.mp4 -c copy -f hls -hls_base_url http:l/192.168.0.1/live/ -bsf:v h264_mp4toannexb output.m3u8
49:MP4切片
ffmpeg -re -i input.rnp4 -c copy -f segment -segment_format mp4 test_output%d.mp4
50:生成切片文件列表
ffmpeg -re -i D:\Resources\B.mp4 -c copy -f segment -segment_format mp4 -segment_list_type flat -segment_list D:\Resources\q\filelist.txt D:\Resources\q\test_output%d.mp4
51:切片生成csv文件
ffmpeg -re -i D:\Resources\B.mp4 -c copy -f segment -segment_format mp4 -segment_list_type flat -segment_list D:\Resources\q\filelist.txt D:\Resources\q\test_output%d.mp4
52:切片后时间从0开始
ffmpeg -re -i D:\Resources\B.mp4 -c copy -f segment -segment_format mp4 -reset_timestamps 1 D:\Resources\p\test_output-%d.mp4
53:按照指定时间切片
ffmpeg -re -i D:\Resources\B.mp4 -c copy -f segment -segment_format mp4 -segment_times 3,9,12 D:\Resources\w\test_output-%d.mp4
54:从第x秒开始切割视频
ffmpeg -ss 10 -i D:\Resources\B.mp4 -c copy D:\Resources\B2.mp4 -y
55:指定截取多长时间的视频
Ffmpeg -i D:\Resources\B.mp4 -c copy -t 10 -copyts D:\Resources\B2.mp4 -y
56:指定从某时间开始到什么时候的视频
ffmpeg -ss 10 -i D:\Resources\B.mp4 -c copy -t 10 -copyts D:\Resources\B2.mp4 -y
57:提取音频文件
ffmpeg -i input.mp4 -vn -acodec copy output.aac
58:提取音频文件的H264
ffmpeg -i input.mp4 -vcodec copy -an output.h264
59:转2000kbit/s
ffmpeg -i D:\Resources\B.mp4 -vcodec libx264 -preset ultrafast -b:v 2000k D:\Resources\B2.mp4 -y
60:生成baseline视频 higt视频 视频大小可以从次出借鉴设置大小
ffmpeg -i D:\Resources\B.mp4 -vcodec libx264 -profile:v baseline -level 3.1 -s 352x288 -an -y -t 10 D:\Resources\output_baseline.ts
ffmpeg -i D:\Resources\B.mp4 -vcodec libx264 -profile:v high -level 3.1 -s 352x288 -an -y -t 10 D:\Resources\output_high.ts
61:每50帧设置一个GOP 生成一个60S的视频
ffmpeg -i D:\Resources\B.mp4 -c:v libx264 -g 50 -t 60 D:\Resources\B2.mp4 -y
62:苹果手机下264硬编码示例
ffmpeg -vcodec h264_vda -i input.mp4 -vcodec h264_videotoolbox -b:v 2000k output.mp4
63:转换MP3的码率
例1:ffmpeg -i D:\Resources\audio.mp3 -acodec libmp3lame -b:a 64k D:\Resources\audio1.mp3 -y
例2:ffmpeg -i D:\Resources\audio.mp3 -acodec libmp3lame -b:a 64k -abr 1 D:\Resources\audio1.mp3 -y
63:输出音频文件
ffmpeg -i input.mp4 -c:a aac -b:a 160k output.aac
64:wav转m4a
ffmpeg -i input.wav -c:a aac -q:a 2 output.m4a
ffrnpeg -i input.wav -c:a libfdk_aac -b:a 128k output.rn4a
实际是将音频压缩为aac编码的m4a容器
66:图片淡入淡出
ffmpeg -y -i D:\\Resources\\B.mp4 -ignore_loop 0 -itsoffset 6 -i D:\\Resources\\GIF1.gif -i D:\\Resources\\GIF1.gif -filter_complex "[0:0]scale=iw:ih[a];[1:0]scale=300:300,fade=t=in:st=6:d=1,fade=t=out:st=12:d=1:alpha=1[wm];[a][wm]overlay=x=350:y=60:shortest=1" D:\Resources\168.mp4
67:--给视频文件添加背景音乐(循环播放)&支持原视频和背景音乐音量大小调节-i e:\37.mp4 -i C:\Users\Administrator\Downloads\1.mp3 -filter_complex [0:a]volume=0dB[a0];[1:a]aloop=loop=-1:size=2e+09[a1];[a1]volume=-5dB[a12];[a0][a12]amix=inputs=2:duration=first -vcodec copy -acodec aac -y e:\84.mp4
68:屏幕录制
ffmpeg -f gdigrab -i desktop -f mp4 d:/out.mp4
69:视频编辑遇到的问题解决方案
ffmpeg -i 2.mp4 -c:v hevc -bsf:v dump_extra -bf 0 -field_order 0 -filter_complex "[0:v]crop=495:229:318:161,boxblur=45[1];[0:v]crop=495:229:318:161,boxblur=45[2];[0:v]crop=495:229:284:158,boxblur=45[3];[0:v]crop=495:229:318:161,boxblur=45[4];[0:v]crop=495:229:318:161,boxblur=45[5];[0:v][1]overlay=318:161:enable='between(t,0.353000,2.353000)'[v0];[v0][2]overlay=318:161:enable='between(t,2.353000,3.353000)'[v0];[v0][3]overlay=284:158:enable='between(t,3.353000,4.353000)'[v0];[v0][4]overlay=318:161:enable='between(t,4.353000,5.353000)'[v0];[v0][5]overlay=318:161:enable='between(t,5.353000,7.353000)'[v0]" -map "[v0]" -map 0:a -c:a copy -video_track_timescale 90000 r_2.mp4 -y
用下面的命令行拿到需要剪辑的视频的信息
ffprobe -v quiet -print_format json -show_format -show_streams -print_format json .\r_2.mp4
然后按照下面的方式去替换
-bsf:v dump_extra 在编辑的指令中添加这个参数
-c:v hevc 用视频信息中的 codec_name
-bf 0 用视频信息中的 has_b_frames
-field_order 0 如果视频信息中含有field_order,就用是这个值,如果不含有就用 0
-video_track_timescale 90000 用视频信息中的 time_base 的倒数
70:流信息 帧信息
ffprobe -skip_frame nokey -select_streams v -show_entries packet=pts_time,flags -of csv=print_section=1 -read_intervals 0% E:\mp4\8071\1.mp4
ffprobe -v quiet -print_format json -show_format -show_streams -print_format json
ffprobe -skip_frame nokey -select_streams v -show_entries packet=pts_time,flags -of csv=print_section=1 -read_intervals 0% .\r_2.mp4
71本地摄像头录制调用
查询本地摄像头信息
ffmpeg -list_devices true -f dshow -i dummy
录制本地摄像头视频
ffmpeg -f dshow -i video="HD camera " -vcodec libx264 -movflags faststart mycamera.mp4 -y
播放本地摄像头
ffplay -f dshow -i video="HD camera " -s 640x480
使用FFMPEG可以进行RTP的推流测试,接收端可以用VLC,也可以用FFPLAY。以下命令行使用内置摄像头采集实时视频,h.264编码,帧率25fps,GOP为25,低延时,以RTP推送到本机的30010端口,并生成一个sdp文件用于播放使用
ffmpeg -f dshow -i video="HD camera " -b:v 480k -r 25 -g 25 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://127.0.0.1:30010 > v.sdp
播放流媒体视频
ffplay -protocol_whitelist "file,udp,rtp" -i v.sdp
72:视频音频处理
ffmpeg -i D:\26445.mp4 -an -vodec copy D:\Temp\26445.mp4 -y
提取音频视频
ffmpeg.exe -i wx.mp4 -an -vcodec copy wx_video.mp4
ffmpeg.exe -i wx.mp4 -vn -acodec copy wx_audio.mp4
合并
ffmpeg -y –i wx_video.mp4 –i wx_audio.mp4 –c copy wx_new.mp4
在第二个输入音频中延迟1秒,第一个输入视频只进行复制
ffmpeg -y -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4"
-map 0:v -map 1:a -vcodec copy -acodec copy
-f mp4 -threads 2 -v warning "Video2.mp4"
73视频旋转
ffmpeg -i D:/25492.mp4 -vf transpose=0 D:/newTest.mp4
74人为卡顿
ffmpeg -i test.mp4 -filter_complex "[0:v]split=4[v0][v1][v2][v3]; [v0]trim=start_frame=0:end_frame=1,loop=90:1:0,setpts=N/FRAME_RATE/TB[0v]; [v1]trim=start_frame=1:end_frame=301,loop=90:1:299,setpts=N/FRAME_RATE/TB[1v]; [v2]trim=start_frame=301:end_frame=601,loop=90:1:299,setpts=N/FRAME_RATE/TB[2v]; [v3]trim=start_frame=601:end_frame=900,loop=90:1:298,setpts=N/FRAME_RATE/TB[3v]; aevalsrc=0:d=3[0a]; [0:a]asplit=3[a1][a2][a3]; [a1]atrim=0:10,asetpts=N/SR/TB[1a]; [a2]atrim=10:20,asetpts=N/SR/TB[2a]; [a3]atrim=20:30,asetpts=N/SR/TB[3a]; [0v][0a][1v][1a][2v][2a][3v][3a]concat=n=4:v=1:a=1[v][a]" -map "[v]" -map "[a]" outva.mp4
转H265
ffmpeg.exe -i e:\mp4\11721\M_2.mp4 [-c:a copy] -c:v libx265 e:\mp4\11721\M_2_1.mp4
视频倍速
ffmpeg -i E:\mp4\11721\P_2.mp4 -filter:v "setpts=7*PTS" E:\mp4\11721\M_2.mp4
压缩视频
视频减半高宽
ffmpeg -i d:\001.mp4 -vf scale=iw/2:ih/2 d:\001_2.mp4 -y
去除水印
ffmpeg -i "E:\迅雷下载\047.mp4" -vf "delogo=x=9:y=293:w=136:h=94" -c:a copy "47.mp4"