zoukankan      html  css  js  c++  java
  • ffmpeg使用经验

    1、工作要使用ffmpeg将视频转换成H264格式,网上查到的很多使用方法都是如下:

    ffmpeg -i input.mov -c:v libx264 -crf 12 output.mov

    -i后面表示输入的视频流;

    -c:v后面表示要转换的格式;

    -crf表示视频的压缩程度,数字越大压缩程度越大,输出的视频也就越小,默认是18;

    但是这样转出来的视频暂停之后快进会有延迟,造成画面卡顿的感觉,而且按帧播放不流畅;

    google了很多资料才知道,这是因为关键帧之间缺少控制,需要加上下面两个参数

    -g 2 -keyint_min 2
     
    因此完整的命令如下:
    ffmpeg -i input.mov -c:v libx264 -g 2 -keyint_min 2 -crf 12 output.mov

    2、替换视频中的某一帧

      业务中有一个功能:需要实现将视频中的一帧替换为用户上传的图片,但ffmpeg并没有实现这个功能的参数,

    后来想到只要图片尺寸与视频一样大,那就可以用加水印的方式实现,如将视频第三帧替换为输入图片,整理后的命令如下:

    ffmpeg -i input.mov -i input.jpg -filter_complex "[0:v][1:v]overlay=enable='between(n,2,2)'" -acodec copy output.mp4

    -i input.mov  输入的视频流;

    -i input.jpg  输入的图片;

    -filter_complex 是最关键的,但是具体什么意思我现在也忘了;

    "[0:v][1:v]overlay=enable='between(n,2,2)'"  这里的冒号一定不能少,括号中的两个数字表示第几帧到第几帧,从0计数,使用是直接替换数字就可以了;

    -acodec copy  表示拷贝音频;

  • 相关阅读:
    JSP中getParameter和getAttribute区别
    用jsp实现省市区三级联动下拉
    SQL
    Unity3d笔试题大全
    FPSCalc——简单FPS观测类
    GameObjectPool——Unity中的对象池
    MonoSingleton——Unity中的单例模式
    用非递归、不用栈的方法,实现原位(in-place)的快速排序
    一道有序洗牌的笔试题,阿里UC等都用过
    MFC中显示图像的放大、缩小、移动功能
  • 原文地址:https://www.cnblogs.com/chaofan-/p/9578950.html
Copyright © 2011-2022 走看看