ffmpeg常用命令及其使用

经常会用到ffmpeg进行各种视频处理操作,虽然没有深入看ffmpeg的底层代码实现,但是已经明显的感受到了其强大。

 

  • 进行视频分割:  
ffmpeg -ss 00:00:00 -t 00:00:30 -i example.ts -vcodec copy -acodec copy output.mp4

 

解析:-i 命令表示输入,后边的example.ts为待处理视频;-ss 表示分割视频的起始时间点,xx:xx:xx表示时:分:秒; -t分割的视频长度;-vcodec copy -acodec copy表示音视频不进行重新编码,直接拷贝。

 

 

  • 进行视频合成:
     将多段同样编码格式的视频进行简单的视频拼接可以使用以下命令:
ffmpeg.exe -i "concat:1.ts|2.ts|3.ts" -vcodec copy -acodec copy output.ts

    解析:视频拼接的关键字为concat,将待拼接的视频使用concat和符号 | 按照以上格式进行书写,即可实现简单的视频拼接,此处仍然没有进行音视频的重新编码。当然,也可以把需要拼接的文件名单独放到一个文本文件进行读取:

# input.txt
file 'frag_1.ts'
file 'frag_2.ts'


# ffmpeg拼接命令
ffmpeg -f concat -i input.txt -c copy output.flv

    如果格式等不同时,比如封装格式、编码方式、帧率等有差别时,可以分别编码为统一的ts格式:

 

ffmpeg -i demo.mp4 -c:v libx264 -s 640x360 -r 24 -profile:v main -c:a libfdk_aac -ar 44100 -ac 2 -profile:a aac_he_v2 format_demo.ts

  

 

  • 视音频分离:
      
ffmpeg -i clip_download.mp4 -an -vcodec copy clip_download.hevc
ffmpeg -i clip_download.mp4 -acodec copy -vn clip_download.ac3

解析:上述两条命令分别得到了分离后的视频和音频;在获取视频时,使用了-vcodec copy -an 命令,其中的-an命令表示禁止音频,因此只得到视频信息;在获取音频时,类似使用了-acodec copy -vn,表示音频编码保持,视频禁止,因此只得到音频信息。

 
 
 
  • 视音频合成:

 

 

ffmpeg -i convert_download.hevc -i clip_download.ac3 -vcodec copy -acodec copy output.mp4

解析:该命令只是应对单音轨视频进行视音频合成。使用-i命令分别输入音视频源,视音频copy后直接输出合成的文件。

 

  • 每隔xx帧提取一张图片
ffmpeg -i logo.mp4 -vf "select=between(n\,10\,100)*not(mod(n\,4))" -vsync 0 ./pkl/image-3%d.jpg

  -vf: 视频滤镜
  between(n\, 10, 100):视频处理范围在第10~100帧内 ;

  not(mod(n\, 4):每隔4帧截取一张图片

  -vsync: 视频同步方法;0 表示透传,即每一帧保持时间戳不变,从demuxer透传至muxer;1表示cfr,固定帧率;

 

  • 图片序列导出webm格式视频

       编解码器使用libvpx-vp9;-lossless为无损编码,-crf为控制编码质量的参数,越小编码质量越高

ffmpeg -f image2 -framerate 30 -i mojito_%3d.png -c:v libvpx-vp9 -lossless 1 mojito.webm
ffmpeg -f image2 -framerate 30 -i mojito_%3d.png -c:v libvpx-vp9 -crf 18 mojito.webm
ffmpeg -framerate 25 -f image2 -i mojito_%3d.png -c:v libvpx-vp9 -pix_fmt yuva420p output.webm
  • webm转MP4
ffmpeg -i output.webm output.mp4
// webm转灰度mp4
ffmpeg -i output.webm -pix_fmt gray output_gray.mp4
  • 多路视频拼接
ffmpeg -i output_gray.mp4 -i output.mp4 -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w*1" -pix_fmt yuv420p out.mp4
  • 烧制硬字幕

 

ffmpeg -i input.mkv -vf subtitles=xxx.srt output.mkv   	#字幕格式为srt	#字幕格式为srt
ffmpeg -i input.mkv -vf ass=xxx.ass output.mkv		$字幕格式为ass		$字幕格式为ass

硬字幕是直接内嵌到视频中的。昨天想用电视看下载的原生格式电影,但是没有字幕,所以就用ffmpeg加了个内嵌字幕,srt格式的亲测有效~
 

 

 

 
注:在使用ffmpeg时,需要注意了解相应的视音频格式是否被ffmpeg支持,否则并不能达到预期的效果。
 
 
 
  • ffmpeg去水印
ffmpeg -i logo.mp4 -vf delogo=x=180:y=920:w=210:h=35  delogo.mp4
  这里-vf表示视频滤镜;delogo后跟x:y:w:h 四个参数,分别表示滤镜作用区域的位置坐标及宽高;show=1会绘制一个上述的绿色长方形区域,用于帮助更好的确定编辑位置;正式导出文件时,可以将其设置为
 
  
 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值