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  表示拷贝音频;

  • 相关阅读:
    Lesson 3 Nehe
    Lesson 2 Nehe
    Lesson 1 Nehe
    Lesson 1 Nehe
    JavaScript 字符串与数组转换函数[不用split与join]
    华中科大校长:教授被称为“叫兽”是教育的悲哀
    /etc/profile、~/.bash_profile等几个文件的执行过程
    cygwin下遇到system没有执行的问题
    发短信 汉字编码 utf-8 UCS-2BE
    UTF-8与UNICODE的关系及代码转换
  • 原文地址:https://www.cnblogs.com/chaofan-/p/9578950.html
Copyright © 2011-2022 走看看