Blog By Alexander

0%

FFmpeg常用指令合集

Editor: Alexander Ezharjan
  1. 切割MP3,按时间准确切割
1
ffmpeg -i F:\源.mp3 -ss 00:20:00 -to 02:30:05 F:\目标文件.mp3
  1. MTS到MP4

说明:(-b 4m:码率是4M;-s 1280*720:这个是设定视频大小。这2个参数其实可以删掉)

1
ffmpeg -i F:\源.mts -b 4M -s 1280*720 F:\结果.mp4
  1. MP4到WMV
1
ffmpeg -i f:\视频.mp4 -b 4M f:\out.wmv
  1. MP4图像旋转

说明:主要参数: -vf “transpose=1” ,这里等于1是顺时针90度旋转;如果用手机录制的时候录反了,则执行2次这个操作就正过来了

1
ffmpeg -i f:\o.mp4 -vf "transpose=1" f:\o2.mp4
  1. MP4到MP4改尺寸
1
ffmpeg -i G:\源.mp4 -b 4M -s 640*340 g:\OUT.mp4
  1. MP4到MP4改尺寸加水印

说明:1: -vf “movie=logo.png [logo];[in][logo] overlay=10:20 [out]” 这里面的是加水印的参数,logo.png是我自己做的PNG水印,大小
300100,10:20是水印的位置,为了方便,就把logo.png拷贝到FFMPEg的bin目录下(必须放,加路径就失败),这样不用再加路径了 ;2: -b 2M 是用2M压缩率; 3: -s 640340 意思是图像分辨率改为640*340。

1
ffmpeg -i G:\源.mp4 -vf "movie=logo.png [logo];[in][logo] overlay=10:20 [out]" -b 2M -s 640*340 g:\OUT.mp4
  1. 快速剪切某段视频作为输出

说明:上面截取 H:\源.mpg 这个视频,从第0秒开始,到23分20秒,这样一段,保存到G:\out.mp4,注意参数必须是 -c copy ,这样执行起来特别快,也就不到半分钟就搞定。

1
ffmpeg -i H:\源.mpg -ss 0:0:0 -to 0:23:20 -c copy G:\OUT.MP4
  1. 该编码为H265,让MP4瘦身2/3,1G的MP4可以压缩到300M
1
ffmpeg -i 源.MP4 -vcodec libx265 -acodec copy F:\OUT.MP4
  1. WAV转换格式到amr
1
ffmpeg -i test.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amr
  1. 提取视频中的声音保存成一个mp3
1
ffmpeg -i 源.mp4 输出.mp3
  1. 要实现批量转换,可以直接用这个批处理文件
1
for %%i in (*.mkv) do ffmpeg.exe -i "%%i" -vcodec copy -acodec copy "%%~ni.mp4"
  1. 合并多个MP4为一个

方法一

1
ffmpeg -i INPUT1.MP4 -i INPUT2.MP4 -f FORMAT -acodec AUDIOCODEC -vcodec VIDEOCODEC -sameq OUTPUT.MP4

方法二

(1) 先创建一个文本文件 filelist.txt, 内容如下:(注意input1、2、3是你的文件的名字,都在该目录下)

1
2
3
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'

(2) 以上是这个文本文件的内容,保存后,在命令行执行

1
ffmpeg -f concat -i filelist.txt -c copy output.mp4
  1. 下载直播流
1
FFmpeg -i xxxxxxxxx.m3u8 -c copy out.mp4
  1. FFmpeg将MP4转换为M3U8

(1) 直接将MP4文件转成m3u8:

1
ffmpeg -i demo.mp4 -hls_time 10 -hls_list_size 0 -hls_segment_filename ene_%05d.ts ene.m3u8

(2) 如果已经是ts文件了,则只需要执行下方命令即可:

1
ffmpeg -i demo.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts

(3) 将大量分割成ts文件的视频片段全部转换成mp4视频片段 — 直接上批处理脚本:

1
2
for %%a in ("D:\VideoProjects\NewDemo\*.ts") do ffmpeg -i "%%a"   -vcodec copy -vcodec copy -f mp4 "D:\VideoProjects\NewDemo\NewMP4\%%~na.mp4"
pause

(4) 上面的 ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4 是将ts文件转换为mp4文件的意思,再在其之上套了一层for循环,%%a就是每个文件,转换命令最末尾的%%~na是将文件保持原来的文件名的情况下进行输出,存放到指定文件夹的意思。

  1. mp4视频转flv
1
ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv 
  1. 将本地指定的demo.ts文件进行推流
1
ffmpeg -re  -i demo.ts  -c copy -f mpegts   udp://127.0.0.1:1997
  1. 强制把输出视频文件帧率改为 24 fps
1
ffmpeg -i input.avi -r 24 output.avi
  1. 对视频每个一秒截一个图并存在本地
1
ffmpeg -i out.mp4 -f image2 -vf fps=fps=1 out%d.png
  1. 每隔20秒截一个图
1
ffmpeg -i out.mp4 -f image2 -vf fps=fps=1/20 out%d.png
  1. 将视频转换为图片,一帧一图
1
ffmpeg -i out.mp4 out%4d.png



参考

官网