视频分分合合,视频打码,视频静音,视频提取有用的多个有用片段再生成等。。。。看看有没有适合你需求的?

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"