ffmpeg 使用

 


 常用命令

   查看视频信息: ffmpeg -i input.AVI

主要参数:

 

  -i 设定输入流
  -f 设定输出格式
  -ss 开始时间

  -t 时长

 

视频参数:

 

  -b   设定视频流量(码率),默认为200Kbit/s -r 设定帧速率,默认为25
  -s   设定画面的宽与高
  -aspect   设定画面的比例
  -vn   不处理视频
  -vcodec   设定视频编解码器,未设定时则使用与输入

 

音频参数:
  -ar   设定采样率
  -ac   设定声音的Channel数
  -acodec   设定声音编解码器,未设定时则使用与输入流相同的编解码器
  -an   不处理音频

 

格式转换:

 

  -i    输入文件名
  -c:v    设置视频编码器
  -v:b    设置码率
  -c:a    设置音频编码器
  -f    设置文件格式(容器)

 


 

 解帧:


ffmpeg -i input_video.MOV -r 5 output_dir/frame%04d.jpg


-r代表帧率 -i代表输入

 

合成视频:
合成命令: 
   
1. ffmpeg -f image2 -framerate 30 -i %04d.png 13stbself.avi
    2. ffmpeg -r 5 -start_number 123 -i input_dir/frame%02d.jpg -vf fps=5 output_dir/video.mp4
1)在起始数字不是00的时候,会报错如下: Could find no file with path 'xxx.jpg' and index in the range 0-4 -start_number 代表%02d的起始数字,可以解决上述问题 2)当输出视频不是标准格式的时候,-r只能保证输出的帧率,但会按照默认视频fps=25进行丢帧,即你25张图片输出的视频只有1秒而不是5秒。 -vf fps=5 解决了丢帧的问题。
3)图像基本无损合成视频
ffmpeg -f image2 -framerate 30 -i %04d.png -b:v 5626k 13stbself2.avi 

 


实例应用

 

 

1. 给视频添加水印,并限定播放时长

ffmpeg -y -t 60 -i input.mp4 -i logo1.png -i logo2.png -filter_complex "overlay=x=if(lt(mod(t\,20)\,10)\,10\,NAN ):y=10,overlay=x=if(gt(mod(t\,20)\,10)\,W-w-10\,NAN ) :y=10" output.mp4  

  -t 60 : 编辑视频时长,如果填写只会处理并输出前60秒的视频,不填写会处理整个视频

   : 水印的左上角的x坐标

   : 水印的左上角的y坐标

  input.mp4  : 输入的视频文件及格式(需要处理的)

  output.mp4 :  输出的视频文件及格式(已经处理完成的)

  -i logo.png  : 水印图像

  if(gt(mod(t,20),10),W-w-10,NAN ) :第二个10说logo出现的时长,即是说水印会显示10秒

 


 

补充:添加水印的方式:

  A. FFmpeg3.0之前的实现方式:

    ffmpeg -i input.mp4  -vf "movie=shuiyin.png [shuiyin];[in] [shuiyin] overlay=480:10" output.mp4  

    ffmpeg –i input.mp4  -acodec copy-vcodec copy  -vf "movie=test.png[watermark];[in][watermark]overlay=10:10:1[out]" -b 300k output.mp4    

      [... ] :    过滤器名,可随意起名。movie=shuiyin.png [watemrk] 意思是指明水印图片的路径,并定义为过滤器,名字是 'watermrk'

      -i input.mp4 : 表示要进行水印添加处理的视频

      -acodec copy-vcodec copy : 表示保持音视频编码不变

      -b 300k : 表示处理视频的比特率

        ( -b   指的是设置码率,
               -b:v   指得是设置视频的码率
               -b:a   指的是设置音频的码率)

      -vf “…”:  中间便是水印处理参数。movie是指图片水印路径,搭配overlay一起使用,重要的是overlay=后面的部分,第一个参数表示水印距离视频左边的距离,第二个参数表示水印距离视频上边的距离,第三个参数为1,表示支持透明水印。使用透明的png图片进行视频编码后,成功获得带透明水印的视频,并且画质也比较好。

  B. FFmpeg3.0之后的实现方式:(过滤器比较复杂的使用-filter_complex)

    ffmpeg  -i  input.mp4  -i  shuiyin.png  -filter_complex  "overlay=480:10" -b:v 500k output.mp4  


 

 

2. 跑马灯效果

ffmpeg -i input1 -i input2 -vcodec libx264 -an -filter_complex "overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0" -s 320x240 output.mp4  

  -vcodec : 视频编码处理

  input1 : 放在底部的视频

  input2 :放在上面的视频

  320x240 :输出视频的宽高

 

3. 实现2秒后logo从左到右移动

ffmpeg -i input.mp4 -vf "movie=logo.png[logo];[in][logo]overlay=x='if(gte(t\,2)\,((t-2)*80)-w\,NAN)'" output.mp4 

  if(gte(t\,2)\,((t-2)*80)-w\,NAN) : 对水印坐标x的处理

  80 移动的距离,单位像素

 

4. 将高清格式(1920x1080像素)的视频分辨率降低到640x360

ffmpeg -i input.mp4 -vf scale=640:360 output.mp4 -hide_banner 

 

5. 更改视频宽高比(将高清格式(1920x1080像素)的视频分辨率降低到640x480)

ffmpeg -i input.mp4 -vf scale=640:480,setdar=4:3 video_640x480.mp4 -hide_banner 

   setdar :需要变更的分辨率宽和高的对比变化时使用

 

6.视频比特率设置(比特率越高,视频越清晰)

ffmpeg -i input.avi -b 1.5M output.mp4    

ffmpeg -i input.avi -b:v 1500K output.mp4   

 

7. 音频剪辑

ffmpeg -i input.mp3 -ss 00:00:00 -t 00:00:47 -acodec copy output.mp3

  -ss :设置开始时间,从哪里剪辑

  -t :设置音频总时长

 

8. 视频合并音频

  如果原视频存在音轨

  A、先去除源视频的音频轨
    ffmpeg  -i  input.mp4  -c:v copy -an  output.mp4
  B、再把新的音频混进去
    ffmpeg  -i  output.mp4  -i  input.mp3  -c   copy  new_output.mp4

 

9. 合成 音、视频, 将音频格式转为aac格式

   ffmpeg  -i  output.mp4  -i  yinpin.mp3  -c copy -acodec aac -ac 2 new_output.mp4 

    -acodec aac  设定声音编码 
    -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2 
    -ar <采样率> 设定声音采样率,PSP只认24000 
    -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上 

posted @ 2019-10-12 14:23  黑无常  阅读(1213)  评论(0)    收藏  举报