流媒体方案之FFmpeg——实现物联网视频监控项目

目录

前言

一、FFmpeg介绍

二、FFmpeg简易理解

三、FFmpeg的重要概念

四、软硬件准备

五、移植、运行FFmpeg

六、运行FFmpeg


前言

最近想做一个安防相关的项目,所以跟着韦东山老师的视频来学习视频监控方案的相关知识,韦东山老师讲的课非常好,本章主要介绍推流端FFmpeg

一、FFmpeg介绍

FFmpeg是什么

  • 一套开源软件
  • 可以记录、转换音视频:可以从摄像头中记录视频,从声卡中记录音频,可以转换为各种格式,保存起来
  • 还可以把各种格式的音视频,转换为流:供在线观看
  • 其他功能:视频截图、加水印、裁剪等等
  • Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音等视频频播放器的内核就是 FFmpeg
  • 格式工厂的内核也是FFmpeg

二、FFmpeg简易理解


误区:我们以为mp4就代表了音频、视频的压缩格式,其实不是

  • Mp4只是一种封装格式
  • 里面有音频数据、视频数据
  • 音频数据有自己的压缩格式,还不止一种
  • 视频数据也有自己的压缩格式,还不止一种

参考文章

视音频编解码技术零基础学习方法

三、FFmpeg的重要概念

1.重要概念

2.FFmpeg处理音视频的过程

用Filter(过滤器)来处理

  1. 旋转、拉伸
  2. 添加LOGO、消除LOGO等等

3.FFmpeg的常用参数

四、软硬件准备

硬件:

  • 100ASK_IMX6ULL开发板 (或其他Linux开发板);
  • USB摄像头

软件:

  • Ubuntu;
  • Buildroot(Buildroot会自动下载其他软件: MJPG-streamer, ffmpeg, nginx);

五、移植、运行FFmpeg

1.移植
有两种方法:
方法一:下载源码,手工编译
方法二:使用Buildroot,配置选择ffmpeg,直接编译生成映象文件
我们使用Buildroot:

  1. 设置交叉编译工具链
  2. 在Buildroot根目录
  3. make menuconfig
  4. 如图选择ffmpeg (在buildroot 按‘/’可以搜索ffmpeg的路径)
  5. 执行make
  6. 这会在Buildroot的dl/ffmpeg目录下自动下载源码,并编译
  7. 结果保存在output/images目录下,有emmc.img, sdcard.img,可以直接烧写到板能的EMMC或SD卡上

六、运行FFmpeg

在开发板上安装好ffmpeg后:
执行命令:

ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10  my.mp4
  • 它会把摄像头的数据录制为my.mp4
  • 把my.mp4复制到PC机,播放

上述命令的解释:

-f(format)摄像头的格式是 v4l2

-framerate 10 1秒读10帧

-i 输入设备是哪一个: /dev/video1 -

q:质量 为10

生成名为my.mp4的文件

它会把摄像头的数据录制为my.mp4,把my.mp4复制到PC机,播放

更多用法:

  • ffmpeg基础使用:https://www.jianshu.com/p/ddafe46827b7
  • 给新手的 20 多个 FFmpeg 命令示例:https://zhuanlan.zhihu.com/p/67878761

建议在Windows下练习:

  • 下载static版本:https://ffmpeg.zeranoe.com/builds/
  • 在命令行中练习ffmpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaTex入门简明教程

文章目录 写在前面安装Texlive的安装TeXstudio 的安装 LaTex 的使用节指令图指令表指令公式指令参考文献指令引用指令TeXstudio 编译 LaTex 的 \label{} 写法建议最后 写在前面 这篇文章面向没有任何 LaTex 基础的小白,主要讲解了 LaTex 的安装和使用。读完文章之后…

enum 枚举类型

我们可以通过定义枚举IpAddrKind来表达这样的概念,声明该枚举需要列举出所有可能的IP地址种类,也就是所谓的枚举变体(variant)。 enum IpAddrKind {V4,V6, }枚举的变体全部位于其标识符的命名空间中,并使用两个冒号来…

android https 证书过期

有的时候 我们android https 证书过期 ,或者使用明文等方式去访问服务器 可能会碰到类似的 问题 : javax.net.ssl.SSLHandshakeException: Chain validation failed java.security.cert.CertPathValidatorException: Response is unreliable: its validi…

通讯录管理系统(基于C语言)

模块设计 本通讯录管理系统功能模块共包括9个部分:1.输入数据、2.显示数据、 3.插入数据、4.删除数据、5.查看数据、6.修改数据、7.保存数据、 8.返回主菜单、9.退出系统. 一.总体设计 通讯录的每一条信息包括:姓名、性别、住址、联系电话…

西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告

一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) 预习计算内容根据运放的非线…

【MODBUS】Modbus主站云端服务器和边缘设备部署区别

Modbus主站作为云端服务器: 云端服务器作为主站: 在这种部署方式中,云端服务器充当Modbus通信的主站,负责向不同的Modbus从站发起请求,并处理响应。云端服务器通常与其他云服务一起运行,可以在云平台上实现…

【Linux下如何生成coredump文件】

一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢&#…

QT使用SQLite(打开db数据库以及对数据库进行增删改查)

QTSQLite 在QT中使用sqlite数据库,有多种使用方法,在这里我只提供几种简单,代码简短的方法,包括一些特殊字符处理。 用SQlite建立一个简单学生管理数据库 数据库中有两个表一个是class和student。 class表结构 student表结果…

Java零基础-if条件语句

前言 条件语句是编程语言中最基础也是最常用的语句之一,对于初学者来说,掌握好条件语句是学习编程的第一步。本文将以Java开发语言为例,详细介绍Java中的if条件语句及其应用场景。 摘要 本文主要包含以下内容: Java中的if条件…

非标设计之气缸类型

空压机: 空压机又称空气压缩机,简单来说就是将机械能转化为压力能来进行工作的,空压机在电力行业应用比较多,除了在电力行业应用较多外,其实空压机还有一个比较常见的用途就是用来制冷和分离气体,输送气体…

【web安全】RCE漏洞原理

前言 菜某的笔记总结,如有错误请指正。 RCE漏洞介绍 简而言之,就是代码中使用了可以把字符串当做代码执行的函数,但是又没有对用户的输入内容做到充分的过滤,导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…

Vue子组件的挂载,以及使用子组件的原理

Vue子组件是如何挂载的? vue中,子组件是通过父组件模板中的标签来进行挂载的,当父组件模板中包含子组件的标签时,vue会在渲染过程中自动创建并挂载子组件 挂载过程如下: 1、解析父组件模板:当vue实例化父…

RT-Thread 三步实现利用DMA进行串口发送

应某些网友需求,说网上根本找不到基于Rt-Thread DMA串口发送代码,只有官方开源的串口DMA接收。 其实这些东西并不难,只要你细心去看哪些闲置的驱动文件且都是包装好的,通过关键字去查询或点开源文件查看,花不了几分钟…

【C/PTA —— 14.结构体1(课内实践)】

C/PTA —— 14.结构体1(课内实践) 6-1 计算两个复数之积6-2 结构体数组中查找指定编号人员6-3 综合成绩6-4 结构体数组按总分排序 6-1 计算两个复数之积 struct complex multiply(struct complex x, struct complex y) {struct complex product;product.…

Selenium 自动化高级操作与解决疑难杂症,如无法连接、使用代理等

解决 Selenium 自动化中的常见疑难杂症 这里记录一些关于 Selenium的常用操作和疑难杂症。 有一些细节的知识点就不重复介绍了,因为之前的文章中都有! 如果对本文中的知识点有疑问的,可以先阅读我以前分享的文章! 知识点&…

【MySQL表的操作】

目录: 前言表的操作创建表查看表结构修改表对列的增删改修改表名 对表中数据的操作插入数据查找数据修改数据删除数据 删除表总结 前言 剑指offer:一年又3天 表的操作 创建、查看、修改(属性和内容)与删除 创建表 语法&#xf…

点云从入门到精通技术详解100篇-雨雾环境下多传感器融合 SLAM 方法

目录 前言 国内外研究现状 传统 SLAM 研究现状 多传感器融合 SLAM 研究现状

8.Python TCP网络编程入门指南

HTTP协议 HTTP 是一种用于传输超文本(例如 HTML)的应用层协议。它是基于请求-响应模型的,客户端发送请求,服务器返回响应。HTTP 使用 TCP 作为传输层协议。在 Python 中,有一些内置的模块用于处理 HTTP 请求和响应&am…

PyQt实战 创建一个PyQt5项目

前后端分离 参考链接 PyQt5实战(二):创建一个PyQt5项目_pyqt5实战项目_笨鸟未必先飞的博客-CSDN博客 项目目录 创建一个QT项目 调用pyuic工具将dialog.ui文件编译为Python程序文件ui_dialog.py。 # -*- coding: utf-8 -*-# Form implemen…

Android 透明度颜色值对照表

一、透明度对照表 注:00是完全透明,FF就是完全不透明 我们的UI小姐姐就喜欢给「不透明度」,这个需要自己判断一下。 完全透明:0% HEX: 00 透明度:1% HEX: 30 透明度:2% HEX: 50 透明度:3% HEX: 80 透明度:4% HEX: A0 透明度:5…