快速查找

  • 下载安装
  • 测试
  • 语法规则
  • 推流
    • 本地视频推流
    • 本地摄像头推流
      • 1.寻找可用摄像头
      • 2.测试摄像头
      • 3.摄像头推流
    • 实测低延迟低丢帧摄像头推流
  • 拉流
    • 拉流播放视频
    • 拉流保存视频
    • 视频截取
    • 定时截图(不断截图后更新一张图片)
    • 定时截图(每次截图产生产生一张图片,全部保存)
  • 格式转换
  • 视频处理
    • 视频变速
    • 改变视频帧率
    • 视频剪辑
    • 视频旋转
    • 视频尺寸裁剪
  • 常见问题:
    • 1.推流时遇到红色丢帧警告 real-time buffer [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped!
    • 2.拉流保存时报错:At least one output file must be specified
  • 更多使用说明

下载安装

FFmpeg下载官网:https://ffmpeg.org/ ,这里提供了官网下载的windows环境 4.1.3版本:https://download.csdn.net/download/qq_43474959/12311422
下载后,配置环境变量,将bin文件地址加入到path中:

测试

在cmd中键入ffmpeg,观察是否显示相关信息

语法规则

语法结构:ffmpeg 输入配置 -i 输入地址 输出配置 输出地址

推流

本地视频推流

ffmpeg -re -i 本地视频.格式 -f flv 推流地址
例如: ffmpeg -re -i fight.mp4 -f flv rtmp://192...........

本地摄像头推流

1.寻找可用摄像头

ffmpeg -list_devices true -f dshow -i dummy
此时列出了可用摄像头名称

2.测试摄像头

ffplay -f dshow -i video="摄像头名称" 此处的摄像头名称是由上条命令执行后查询得到的
例如:ffmpeg -f dshow -i video="USB Camera"

3.摄像头推流

ffmpeg -f dshow -i video="摄像头名称" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv 推流地址

实测低延迟低丢帧摄像头推流

ffmpeg -f dshow -i video="摄像头名称" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

  • -framerate 25 :推流帧率
  • -preset:v ultrafast -tune:v zerolatency -acodec libfaac :最快推流配置

拉流

拉流播放视频

ffplay -i "拉流地址" -fflags nobuffer
nobuffer为实时播放

拉流保存视频

ffmpeg -i "拉流地址" "输出地址" ,如ffmpeg -i "https://xxx" "out.mp4
##更改拉流视频的分辨率
以320:240分辨率为例
ffplay -i "拉流地址" -vf scale=320:240

视频截取

ffmpeg -i "输入视频" -fflags nobuffer -t 60 -ss 0 "输出地址",代表截取输入视频从0秒到60秒的片段,保存到输出地址。

  • -ss n : 起始时间为第n秒
  • -t n : 总共截取的片段时长为n秒

定时截图(不断截图后更新一张图片)

ffmpeg -i “视频地址” -fflags nobuffer -update 1 -y -t 200 -ss 1 -r 1 -f image2 图片输出地址

  • -ss n : n秒后开始截图
  • -r n : 每秒截n帧
  • -t n : 截n秒
  • 其他:-q:v :图片质量 -vframes:指定抽取的帧数

定时截图(每次截图产生产生一张图片,全部保存)

ffmpeg -i “视频地址” -r 1 -t 200 -ss 1 -f image2 输出地址和名称%d.jpg
例如:ffmpeg -i fight.mp4 -r 1 -t 200 -ss 1 -f image2 out%d.jpg
运行后会生成截图: out1.jpg out2.jpg out3.jpg …

格式转换

直接输入源文件,修改后缀作为输出文件即可,例如MP4转gif:
ffmpeg -i test.mp4 test.gif

视频处理

视频变速

视频转为两倍速:
ffmpeg -i input.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4
更改速度:将0.5修改为想要的倍数的倒数

改变视频帧率

通过输出配置-r设置,例如将输入视频转换为10帧率的输出视频
ffmpeg -i input.mp4 -r 10 output.mp4

视频剪辑

例如,从第30秒开始,截一分钟:
ffmpeg -ss 00:00:30 -t 60 -i src.mp4 -codec copy out.mp4

视频旋转

上下翻转 ffmpeg -i input.mp4 -vf vflip out.mp4
左右翻转 ffmpeg -i input.mp4 -vf hflip out.mp4
顺时针90° ffmpeg -i input.mp4 -vf transpose=1 out.mp4
逆时针90° ffmpeg -i input.mp4 -vf transpose=2 out.mp4

视频尺寸裁剪

ffmpeg -i input.mp4 -vf crop=1280:720:0:120 out.mp4

  • crop后的参数,宽:高:起始x:起始y

常见问题:

1.推流时遇到红色丢帧警告 real-time buffer [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped!

原因:编码太慢或者编码缓存区过小,解决方法:

  1. 降低推流质量,减小待推流视频的分辨率、帧率等,以上述的
 ffmpeg -f dshow -i video="摄像头名称" -framerate 25 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

为例,此处加入设置分辨率选项:

 ffmpeg -f dshow -i video="摄像头名称" -s 300*300  -framerate 15 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址

-s x*y 通过此句设置推流分辨率,或通过-framerate n 设置推流帧率

  1. 在推流时清理内存、减少cpu利用率,或更换计算能力更强、内存更大的设备

2.拉流保存时报错:At least one output file must be specified

解决方案:https://niuzifan.blog.csdn.net/article/details/108054128

更多使用说明

查阅官方手册:https://ffmpeg.org/documentation.html

使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理相关推荐

  1. linux下使用FFmpeg搭建视频推流拉流测试

    1.概述 公司内部用的是rtmp推流,前端页面展示用webrtc方式拉流展示,基于srs构建的视频体系.之前不是负责视频模块的,为了更熟悉项目,自己大概有了个概念之后,先选取用ffmpeg方式构建一个 ...

  2. ffmpeg处理视频推流拉流rtmp

    目录 1.显示电脑摄像头和麦克风列表 2.ffplay播放视频 3.显示摄像头和麦克风信息 4.视频推流 5.本地摄像头推流 6.桌面推流 7.拉流 ffmpeg下载地址 1.显示电脑摄像头和麦克风列 ...

  3. 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5

    RMTP方案:Nginx+ffmpeg/obs+vlc/h5 服务器安装 1.依赖 sudo apt-get update  sudo apt-get install libpcre3 libpcre ...

  4. 微信小程序推流拉流live-pusher/live-player示例,使用本地搭建RTMP服务

    适用读者: 对微信小程序已经有基本的了解. 例如:小程序账号申请. 常用组件.小程序开发工具 对nodejs已经有基本的了解. 对微信小程序流媒体/实时音视频组件感兴趣的童鞋. 对小鱼易联/小鱼在家, ...

  5. 【SRS】流媒体服务器(推流+拉流+转流)

    文章目录 前言 安装 推流 拉流 转流 前言 课程作业需要搭建一个视频流服务器,最初我采用的是HLS推流方式,发现那延迟卡的我一愣一愣的,这主要还是由于HLS需要等待切片完成.那行吧,那就换一个吧,一 ...

  6. 基于ffmpeg与rtsp的抓屏推流拉流

    主要实现功能 主要想实现出的demo样式为,一台设备抓屏并且将抓到的屏幕传输到另一台设备上.主要实现的环境如下: windows抓屏推流 虚拟机上搭建rtsp流媒体服务器(centos7) windo ...

  7. ffmpeg+rtmp推流/拉流(十)

    一.搭建rtmp服务器 1.下载nginx https://github.com/nginx/nginx/archive/release-1.19.6.zip2.下载nginx-rtmp-module ...

  8. ffmpeg命令:rtp音频推流拉流

    -re : 循环输出 RTP音频推流 # pcm ffmpeg -re -f s16le -ac 1 -ar 8000 -i .\mq.pcm -f rtp rtp://192.168.1.101:2 ...

  9. java阿里云直播推流拉流工具类

    package com.core.common.utils;import com.alibaba.fastjson.JSONObject;import java.util.HashMap; impor ...

  10. 流媒体方案,技术开源项目,包含Java调用FFMpeg(FFCH4J),推拉流服务器,nginx-http-flv-module,ckplayer,Flv.js,EasyPlayer.js集成

    文章目录 streaming_media 介绍 ckplayer拉流播放 软件介绍 功能介绍 软件架构 安装教程 使用说明 EasyPlayer.js拉流播放 简介 功能说明 集成使用示例 普通集成 ...

最新文章

  1. 日期格式转换 java 2016-09-03T00:00:00.000+08:00
  2. Win10系统删除文件需提供管理员权限-- 解决方案
  3. 手把手教你 Vue 服务端渲染
  4. Windows socket c++ TCP UDP 简单客户端 vs2013
  5. 安卓实现定位功能的4种方式
  6. leetcode 794. Valid Tic-Tac-Toe State | 794. 有效的井字游戏(Java)
  7. 项目中遇到问题的解决方法合集
  8. html5和c3属性,H5与C3不得不说的知识点
  9. SpringBoot 2.3.x 分层构建 Docker 镜像实践
  10. 未签名程序使用java_java applets(未签名)可以创建/读取cookie吗?
  11. 华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发
  12. Leetcode 1043.分隔数组以达到最大和
  13. AcWing 166. 数独
  14. 基于堆叠卷积长短期神经网络【CNNLSTM】模型的时序数据预测分析
  15. el-dialog 一些问题 局中滚动
  16. numpy广播机制小结
  17. springboot优点_Spring boot入门
  18. Yahoo 股票数据抓取
  19. 常用邮箱后缀总结,常用邮箱域名信息汇总
  20. 用tbtools基因家族分析《一》

热门文章

  1. python 实现熵权法确定各指标的权重
  2. 华为手机服务器位置,华为手机怎么查看云服务器地址
  3. 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册
  4. 数字图像处理——图像锐化
  5. 骆驼IPTV后端源码+前端APP
  6. 查询linux信号量命令,Linux信号量动作和说明列表
  7. 161021_又是两个月还是总结
  8. linux下载jdk
  9. 网易云音乐自建服务器,自建私有云音乐服务–Subsonic
  10. linux 系统调试工具,Linux 系统调试...