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

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

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

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

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

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

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

-g 2 -keyint_min 2
 
因此完整的命令如下:
ffmpeg -i input.mov -c:v libx264 -g  -keyint_min  -crf  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  表示拷贝音频;

ffmpeg使用经验的更多相关文章

  1. FFmpeg——AVCodec,AVCodecContext,AVCodecParameters 辨析

    先贴上雷神的一张FFmpeg关键结构体之间的关系图: 再看雷神的分析: 每个AVStream存储一个视频/音频流的相关数据: 每个AVStream对应一个AVCodecContext,存储该视频/音频 ...

  2. FFmpeg学习6:视音频同步

    在上一篇文章中,视频和音频是各自独立播放的,并不同步.本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的.主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 ...

  3. FFmpeg 中AVPacket的使用

    AVPacket保存的是解码前的数据,也就是压缩后的数据.该结构本身不直接包含数据,其有一个指向数据域的指针,FFmpeg中很多的数据结构都使用这种方法来管理数据. AVPacket的使用通常离不开下 ...

  4. FFmpeg + SoundTouch实现音频的变调变速

    本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件. 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将解 ...

  5. 用ffmpeg快速剪切和合并视频

    如果直接找视频剪切和合并视频的软件,通常出来的都是大的视频编辑软件或者是有图形界面的剪切软件,大型一点的功能太多安装麻烦,小型一点的功能可能不齐全. 只是简单的剪切或者一下合并一下,还是ffmpeg这 ...

  6. ffmpeg用法及如何使用fluent-ffmpeg

    http://ffmpeg.org/ 官网 ffmpeg(命令行工具) 是一个快速的音视频转换工具. 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an o ...

  7. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

  8. FFmpeg学习5:多线程播放视音频

    在前面的学习中,视频和音频的播放是分开进行的.这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习 ...

  9. FFmpeg数据结构:AVPacket解析

    本文主要从以下几个方面对AVPacket做解析: AVPacket在FFmpeg中的作用 字段说明 AVPacket中的内存管理 AVPacket相关函数的说明 结合AVPacket队列说明下AVPa ...

随机推荐

  1. VirtualBox安装CENTOS7.3常见问题

    1 DHCP 问题无法上网解决 :sudo dhclient 2 安装宝塔面板:yum install -y wget && wget -O install.sh http://dow ...

  2. 环境搭建、RF库

    一.Python27安装 1.双击安装python-2.7.13-64位.msi 2.检查python:cmd命令行→[python]→回车,出现如图所示,表示成功 可能出现:'python'不是内部 ...

  3. Geoserver 发布shp格式地图服务

    本文实践参考https://blog.csdn.net/zj3172172173/article/details/53336704 第一步: 安装geoserver . 自己去官方下载一个安装包 第二 ...

  4. h5 网络断网时,返回上一个页面 demo (与检测网络代码相结合,更直观看到结果)

    页面一: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  5. 《从Lucene到Elasticsearch:全文检索实战》学习笔记五

    今天我给大家讲讲tf-idf权重计算 tf-idf权重计算: tf-idf(中文词频-逆文档概率)是表示计算词项对于一个文档集或语料库中的一份文件的重要程度.词项的重要性随着它在文档中出现的次数成正比 ...

  6. yii2 自带分页使用

    //下面为控制器层的方法内容use \yii\db\Query;use \yii\data\Pagination; //方法内容        $query=new Query();//from为自带 ...

  7. LeetCode - Fruit Into Baskets

    In a row of trees, the i-th tree produces fruit with type tree[i]. You start at any tree of your cho ...

  8. lvs UDP端口负载均衡配置

    ! Configuration File for keepalived global_defs { notification_email { test@163.com } notification_e ...

  9. Spring事务原理

    Spring事务的本质是对数据库事务的封装支持,没有数据库对事务的支持,Spring本身无法提供事务管理功能.对于用JDBC操作数据库想要用到事务,必须经过获取连接——>开启事务——>执行 ...

  10. 计算机信息系统安全保护等级划分准则(GB 17859-1999)

    概述 计算机信息系统安全保护等级划分准则(GB 17859-1999) 1 范围 本标准规定了计算机系统安全保护能力的五个等级,即: 第一级:用户自主保护级: 第二级:系统审计保护级: 第三级:安全标 ...