ffmpeg转码命令

ffmpeg -i 字幕.3gp -vf subtitles=subtitle1.ass outtest0004.3gp

ffmpeg -i 15s.3gp -i subtitle.ass -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy outmkv.3gp

– 对视频没有影响,不需要重新编码
ffmpeg -i 15s.3gp -i subtitle.ass -c copy -c:s mov_text outmkv.3gp

ffmpeg -i 15s.mp4 -profile:v baseline -c:v libx264 -s 640x480 -ar 16000 -ac 1 -c:a amr_wb -f 3gp -maxrate 900k -bufsize 180k -g 30 -filter_complex “[0:0] scale=1280:720[base];[1:0]scale=200:200[gif];[2:0]scale=200:200[jpg];[0:1]highpass=f=200, lowpass=f=3000[audio];[base][gif]overlay=shortest=1:x=0:y=0[temp1];[temp1][jpg]overlay=shortest=1:x=200:y=200,drawtext=simsun.ttc:enable=between(t,5,10):text=测试文字水印1:x=600:y=600:fontcolor=#FFFFFF:fontsize=30,drawtext=simsun.ttc:enable=between(t,0,5):text=测试文字水印2:x=600:y=500:fontcolor=#FFFFFF:fontsize=30” -map “[audio]” -y out1020.3gp

– 后台转码命令
ffmpeg -i aomen.mp4 -ignore_loop 0 -i 001.gif -ignore_loop 0 -i 003.gif -profile:v baseline -c:v libx264 -s 640x480 -ar 16000 -ac 1 -c:a amr_wb -f 3gp -maxrate 900k -bufsize 180k -g 30 -filter_complex “[0:0] scale=1280:720[base];[1:0]scale=200:200[gif];[2:0]scale=200:200[jpg];[0:1]highpass=f=200, lowpass=f=3000[audio];[base][gif]overlay=shortest=1:x=0:y=0[temp1];[temp1][jpg]overlay=shortest=1:x=200:y=200,drawtext=simsun.ttc:enable=between(t,5,10):text=测试文字水印1:x=600:y=600:fontcolor=#FFFFFF:fontsize=30,drawtext=simsun.ttc:enable=between(t,0,5):text=测试文字水印2:x=600:y=500:fontcolor=#FFFFFF:fontsize=30” -map “[audio]” -y out1020.3gp

– 获取视频的参数
ffprobe -show_streams 1.3gp

– 获取视频的参数 ---- json格式
ffprobe -of json -show_streams input.mp4

– 截取2至12秒
ffmpeg -i input.mp4 -ss 0 -c copy -to 5 output.mp4

– 删除音频,只保留视频流
ffmpeg -i 3.mp4 -map 0:0 -vcodec copy -acodec copy 2.3gp

– 将视频转换为m3u8格式
ffmpeg -i 3.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 7 output.m3u8

– 转换视频的编码
ffmpeg -i 3.mp4 -c:v libx264 output.mp4

– 转换视频的清晰度-crf (范围0-51)(0最好,51最差)可以降低视频文件的大小
ffmpeg -i out.3gp -c:v libx264 -crf 51 output.3gp

– 将mp4转为TS格式
ffmpeg -y -i 3.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts

– 将mp4转为3GP格式
ffmpeg -i 1.mP4 -c copy 2.3gp

– 从视频中截取图片
ffmpeg -i 02.mp4 -vf select=‘eq(pict_type,I)’ -vsync 2 -s 1920*1080 -f image2 core-%02d.jpeg

– 截取第一个关键帧(可以做默认封面)
ffmpeg -i 1.3gp -vf select=‘eq(pict_type,I)’ -vsync 2 -f image2 -vframes 1 core-%02d.jpeg

– 从视频中截取缩略图(指定大小)
ffmpeg -i 1.3gp -vf select=‘eq(pict_type,I)’ -vsync 2 -s 150x150 -f image2 -vframes 1 core-%02d.jpeg

各个参数解释:
-i :输入文件,这里的话其实就是视频,
-vf:是一个命令行,表示过滤图形的描述, 选择过滤器select会选择帧进行输出:包括过滤器常量
pict_type和对应的类型:PICT_TYPE_I 表示是I帧,即关键帧。
-vsync 2:阻止每个关键帧产生多余的拷贝
-f image2 name_%02d.jpeg:将视频帧写入到图片中,样式的格式一般是:
“%d” 或者 “%0Nd”
-s:分辨率,1920*1080 不指定分辨率,会使用视频的分辨率

– 视频添加水印
添加水印——movie过滤器:

ffmpeg -i 3.mp4 -vf “movie=D:/tools/ffmpeg/bin/01.jpg,scale= 60: 30[watermask]; [in] [watermask] overlay=0:0 [out]” output.mp4

参数说明:

marklogo:添加的水印图片;

scale:水印大小,水印长度*水印的高度;

overlay:水印的位置,距离屏幕左侧的距离*距离屏幕上侧的距离;mainW主视频宽度, mainH主视频高度,overlayW水印宽度,overlayH水印高度

  左上角overlay参数为 overlay=0:0

  右上角为 overlay= main_w-overlay_w:0

  右下角为 overlay= main_w-overlay_w:main_h-overlay_h

  左下角为 overlay=0: main_h-overlay_h

	上面的0可以改为5,或10像素,以便多留出一些空白。

ffmpeg -i 3.mp4 -i timg.jpg -filter_complex “overlay=main_w-20-overlay_w-10:main_h-20-overlay_h-10” output.mp4

ffmpeg -i 3.mp4 -i timg.jpg -filter_complex “overlay=main_w-overlay_w-10:main_h-overlay_h-10” output.mp4

ffmpeg -i 3.mp4 -vf "movie=timg.jpg[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
ffmpeg -i 3.mp4 -vf "movie=timg.jpg[watermark];[in][watermark] overlay=10:10[out] " output.mp4

ffmpeg -i 3.mp4 -i timg.jpg -filter_complex ‘overlay=10:main_h-overlay_h-10’ output.mp4
-i :一般表示输入

仓库实景.mp4:这里表示要处理的视频源

-vf:滤镜相关,视频裁剪,水印等等操作都需要它完成

wenzi.png: 要添加的水印图片地址

overlay:水印参数

main_w-overlay_w-10 : 水印在x轴的位置,也可以写成x=main_w-overlay_w-10

main_h-overlay_h-10:水印在y轴的位置
-filter_complex: 相比-vf, filter_complex适合开发复杂的滤镜功能,如同时对视频进行裁剪并旋转。参数之间使用逗号(,)隔开即可

main_w:视频宽度

overlay_w: 要添加的图片水印宽度

main_h : 视频高度

overlay_h:要添加的图片水印宽度

– 可用
ffmpeg –i 1.3gp -acodec copy -vcodec copy -vf “movie=01.jpg[watermark];[in][watermark]overlay=10:10:1[out]” output.3gp

ffmpeg –i 3.mp4 -acodec copy -vcodec copy -vf “movie=02.jpg[watermark];[in][watermark]overlay=10:10[out]” output.mp4

ffmpeg -i 3.mp4 -vf “movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];[in][wm1]overlay=0:0[out]” output.mp4

– 添加文字水印
– 一个文字水印
ffmpeg -i 3.mp4 -vf “drawtext=text=水印测试:x=100:y=100:fontsize=24:fontcolor=#FF0000:shadowy=2” output.mp4

– 多个文字水印
ffmpeg -i 3.mp4 -vf “[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[a];[a]drawtext=text=水印测试2:x=200:y=200:fontsize=24:fontcolor=white:shadowy=2[a];[a]drawtext=text=水印测试3:x=300:y=300:fontsize=24:fontcolor=white:shadowy=2[out]” output.mp4

– 文字和图片水印同时叠加,代码中不成功
ffmpeg -i 3.mp4 -vf “[in]drawtext=x=0:y=800:text=HelloWorld:fontsize=24:fontcolor=yellow:shadowy=2[text];movie=D:/tools/ffmpeg/bin/01.jpg,scale= 100: 100[wm];[text][wm]overlay=0:0,scale=1920:1080[out]” output.mp4

– 同时添加图片水印和文字水印
sprintf(filter_spec,"[in]drawtext=x=0:y=300:text=“HelloWorld”[text];movie=01.jpg[wm];[text][wm]overlay=0:0,scale=100:100[out]");

– 同时添加两个图片水印
sprintf(filter_spec,“movie=…/test.png[wm1];movie=…/test.png[wm2];[in][wm1]overlay=0:0,scale=1920:1080[a];[a][wm2]overlay=0:300,scale=1920:1080[out]”);

– 同时添加两个文字水印
sprintf(filter_spec,"[in]drawtext=fontfile=simhei.ttf:x=0:y=0:fontsize=30:text=‘123’,scale=1920:1080[a];[a]drawtext=fontfile=simhei.ttf:x=0:y=100:fontsize = 30 : text=‘123’,scale=1920:1080[out]");

– gif格式logo循环播放
ffmpeg -i video.mpg -ignore_loop 0 -i loop.gif -filter_complex “[0:v][1:v]overlay=10:10:shortest=1” -vcodec mpeg2video out.mpg

– 将视频转换为序列帧
ffmpeg -i input.mp4 output/example.%d.jpg

– 文字水印测试 –

-- 一个文字水印
"drawtext=text=水印测试:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2"

-- 多个文字水印
"[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[a];[a]drawtext=text=水印测试2:x=200:y=200:fontsize=24:fontcolor=white:shadowy=2[a];[a]drawtext=text=水印测试3:x=300:y=300:fontsize=24:fontcolor=white:shadowy=2[out]\"


-- 三文字二图片
ffmpeg -i 3.mp4 -vf "[in]drawtext=fontfile=simfang.ttf:text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white[a];[a]drawtext=fontfile=simkai.ttf:text=水印测试2:x=200:y=200:fontsize=24:fontcolor=white[a];[a]drawtext=fontfile=STCAIYUN.ttf:text=水印测试3:x=300:y=300:fontsize=24:fontcolor=white[text];movie=core-01.jpeg,scale= 200:300[wm1];movie=02.gif,scale= 500:600[wm2];[text][wm1]overlay=100:0[a];[a][wm2]overlay=200:0[out]" output.mp4


ffmpeg -i http://10.179.131.79/img/group8601/M00/00/0D/CrPAbl0dtIiALWJlAAiuBH7QzXc033.3gp -vf "movie=//10.179.131.79/img/group1/M00/00/26/CrPAbl0dtI-AIgIrAABKWvWJpY4015.jpg,scale003d398.7538940809969:257.99376947040497[wm0];[in][wm0]overlay003d0.0:222.25545171339562[out]" output.mp4


-- 文字加二图片

ffmpeg -i 3.mp4 -vf "[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[text];movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm2];[text][wm1]overlay=0:0[a];[a][wm2]overlay=200:0[out]" output.mp4


-- 无文字二图片

ffmpeg -i 3.mp4 -vf "movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm2];[in][wm1]overlay=0:0[a];[a][wm2]overlay=200:0[out]" output.mp4


-- 无文字一图片
ffmpeg -i 3.mp4 -vf "movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];[in][wm1]overlay=0:0[out]" output.mp4

-- 一文字一图片
ffmpeg -i 3.mp4 -vf "[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[text];movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];[text][wm1]overlay=0:0[out]" output.mp4

[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[text];movie=/tools/ffmpeg/bin/01.jpg,scale= 100:100[wm1];[text][wm1]overlay=0:0[out]


-- 一文字无图片
ffmpeg -i 3.mp4 -vf "[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=#19F957[out]" output.mp4


-- 二文字无图片
ffmpeg -i 3.mp4 -vf "[in]drawtext=text=水印测试1:x=100:y=100:fontsize=24:fontcolor=white:shadowy=2[a];[a]drawtext=text=水印测试1:x=200:y=200:fontsize=24:fontcolor=white:shadowy=2[out]" output.mp4

-- 添加时间水印
ffmpeg -i 1.mp4 -vf "[in]drawtext=text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':x=0:y=0:fontsize=24:fontcolor=green:box=1:boxcolor=yellow[out]" output.mp4

– 视频合成gif水印,gif循环播放
ffmpeg -i 1.mp4 -ignore_loop 0 -i 001.gif -ignore_loop 0 -i 001.gif -filter_complex “[0:0] scale=1280:720[base];[1:0]scale=100:100[gif];[2:0]scale=50:50[jpg];[base][gif]overlay=shortest=1:x=10:y=10[temp1];[temp1][jpg]overlay=shortest=1:x=200:y=200,drawtext=simsun.ttc:text=测试文字水印1:x=600:y=600:fontcolor=#FFFFFF:fontsize=30,drawtext=simsun.ttc:text=测试文字水印2:x=600:y=500:fontcolor=#FFFFFF:fontsize=30” out1017.mp4

主要参数:
-ignore_loop: 0表示无限循环, 1表示只循环一次(每个gif输入之前都要加上)
-filter_complex:复合过滤器,需要形成过滤器链进行使用
shortest:如果设置为1,则强制输出在最短输入终止时终止。默认值为0。(只在gif的过滤器中使用,由于gif是无限循环,所以最短的输入是视频本身)

– 绘制波形图
ffmpeg -i aomen.mp4 -filter_complex “showwavespic=s=640*120” -frames:v 1 aoment0010.png

ffmpeg -i 0010.mp4 -filter_complex “showwavespic=s=640*240:split_channels=1” -frames:v 1 output0010.png

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex “nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base] [upperleft] overlay=shortest=1 [temp1]; [temp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2] [lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3] [lowerright] overlay=shortest=1:x=320:y=240” -c:v libx264 output.mp4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值