给奶牛做直播之一

news2024/11/28 1:43:19

一、前言

           前几天看了薇亚写的一本书《人生是用来改变的》,和同事聊的时候同事问我这本书讲了什么,我回想了一下说主要是讲:我很辛苦,我很上进,我很牛逼,我很善良!话说成功人士放个屁都是香的,但也不可否认成功人士确实有其优秀的品质,言归正传,所以我们今天来讲一下直播,这还是2018年那个秋天的事情,有一天老板说我们有这么漂亮的牧场有这么丰满的奶牛我们要做直播,然后给了两个方案让我调研考虑一下(一听就不靠谱,老板经常脑洞大开,然而这也正是他是老板,我是员工的一个重要原因之一)。

  • 大缰无人机:用大缰M600 Pro无人机进行航拍,无负载续航30分钟左右,需要有专人遥控操作,视频效果较好,但没有办法做到直播,只能录播。

  • GoPro Hero:将GoPro Hero绑在牛头,随着牛的走动拍摄牧场,电池续航1个半小时,画页效果应该是很差的。

  • 我的方案:最终采用了我的方案,先不讲,见最后一篇文章。

二、视频的编解码

1、为什么要编码压缩

来计算一下不做编码压缩视频的大小,假设一个高清视频720P(1280*720),每秒30帧,每秒的数据就是:1280*720*30/8(字节)/1024(KB)/1024(MB) = 3.29MB,一部电影数据量就是 90分钟*3.29MB/秒 = 16G,这还是基于一个像素用一位来存储(只能是黑白了),如果采用RGB一个像素就要24位了,那电影咋看呢?  其实电影中很多场景比如两个人在聊天前后镜头变化是很小的,这样就可以压缩掉了。视频缩的原理就是去除掉视频中冗余的信息,音视频编解码由两大组织主导,ISO的MPEG标准和ITU的H.26X的标准。

2、ISO的MPEG标准

MPEG标准建立时间:1988年成立MPEG,1993年MPEG-1(VCD)、1995年MPEG-2(DVD)、2001年MPEG-4.

MPEG基本原理是基于IPB帧

  • 空间相关性:1帧图像内一个像素与周边相素在亮度和色度上存在一定的关系.
  • 时间相关性:一个图像前后帧存在一定关系.

编码压缩就是将空间相关性和时间相关性大量冗余信息去除掉。

  • I帧:关键帧,可以理解为这一帧画面完整保存,解码时只需要本帧数据就可以了。
  • P帧:是这一帧与之前关键帧的差别,解码时需要之前关键帧叠加本帧定义的差别。
  • B帧:双向差别帧,也就是B帧记录的是本帧与前后帧的差别,解码更复杂(需要预读预解码)

I帧压缩比可达10倍,P帧压缩可达20,B帧可达50倍。关键技术用到离散余弦变化量化等(这我也不懂,太深奥,软件行业除了高并发,还有很多行业相关的应用涉及的技术也都很深,对技术要保持敬畏之心,人吹吹牛是可以的,但还是要有自知之明。)

3、ITU的H.26X标准

H264是基于MPEG基础上建立起来的新一代视频压缩编码技术,也是当前最流行的视频编码技术,帧内预测编码充分利用了空间相关性,帧间预测除了支持P帧、B帧还支持SP帧(能支持快速回放),在帧间编码时选多个不同参考帧提供更好纠错性能。

三、视频质量指标

  • 分辨率:单位英寸所包含的像素点
  • 帧率:也叫FPS,即图像每秒种更新次数,帧率越高画页越流畅,一般动画15,电影24,游戏要大于40才不会卡顿, 注:以前淘宝无线内核团队做的gCanvas渲染引擎最关注的就是指标就是FPS,它在Android4.0版本时做了很多优化,小游戏跑在gCanvas上比直接运行在WebView效果明显要好得多。
  • 码率:编码器每秒钟编码出数据的大小,单位是kps。

好的画质是分辨率、码率与帧率的平衡,并不是越大越好。
注:相关概念有点多,看一下都超过1300字,这一篇就写到这里,写多了对身体不好!

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

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

相关文章

[题]修剪草坪 #单调队列优化

题目 洛谷上的题目 Acwing上的题目 根据y总的一波分析&#xff0c;我们得出……公式就是一切…… 所以&#xff0c;我要学会推公式…… 推公式…… 公式…… #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 1e5 10; int n, m; ll s[N…

知识库系统都有哪些?知识库系统功能和介绍

知识库的建立是企业数字化转型的重要一步&#xff0c;能够为企业的可持续发展奠定坚实的基础。使用HelpLook创建的知识库知识库系统已经成为当前很多人的选择。 HelpLook可以实现并制作企业帮助中心设计、产品说明书、常见问题手册、在线知识库、企业文档制作。 点击注册使用&…

pip version 更新

最近报了一个错&#xff1a; 解决办法&#xff1a; 在cmd输入“conda install pip” conda install pip 完了之后再输入&#xff1a; python -m pip install --upgrade pip ok.

面试题六:Promise的使用,一文详细讲解

含义 Promise是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;回调函数和事件&#xff09;更合理更强大。 所谓Promise&#xff0c;简单说就是一个容器&#xff0c;里面保存着某个未来才会结束的事件 (通常是一个异步操作)的结果。从语法上说&#xff0c;P…

WPF 01

xaml是声明性语言 每见到一个标签&#xff0c;就意味着xaml为我们声明一个标签对应的对象。 在XAML中为对象属性赋值 1. AttributeValue形式 <Grid><Rectangle Width"100" Height"80" Stroke"Black" Fill"Blue" RadiusX&q…

Mybatis 二级缓存(使用Redis作为二级缓存)

上一篇我们介绍了mybatis中二级缓存的使用&#xff0c;本篇我们在此基础上介绍Mybatis中如何使用Redis作为二级缓存。 如果您对mybatis中二级缓存的使用不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis 二级缓存https://blog.csd…

oracle分组合并数值带顺序

比如&#xff1a;有如下一张设备电子围栏位置坐标的表&#xff08;tb_equ_point&#xff09;。 equ_name:设备电子围栏名称 point_id:点位坐标id point_x:点位x坐标 point_y:点位y坐标。 附数据&#xff1a; INSERT INTO "tb_equ_point" ("EQU_NAME",…

数据结构题型11-顺序队列

#include <iostream> //引入头文件 using namespace std;typedef int Elemtype;#define Maxsize 5 #define ERROR 0 #define OK 1typedef struct {Elemtype data[Maxsize];int front, rear; }SqQueue;void InitQueue(SqQueue& Q) //初始化队列 {Q.rear Q.front…

使用代理IP进行安全高效的竞争情报收集,为企业赢得竞争优势

在激烈的市场竞争中&#xff0c;知己知彼方能百战百胜。竞争对手的信息对于企业来说至关重要&#xff0c;它提供了洞察竞争环境和市场的窗口。在这个信息时代&#xff0c;代理IP是一种实用的工具&#xff0c;可以帮助企业收集竞争对手的产品信息和营销活动数据&#xff0c;为企…

lv5 嵌入式开发-11 消息队列

掌握&#xff1a;消息队列机制、打开/创建消息队列、发送消息、接收消息 1 消息队列 消息队列是System V IPC对象的一种 消息队列由消息队列ID来唯一标识 消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等 消息队列可以按照类型来发送/接收消息 消…

Win10自带输入法怎么删除-Win10卸载微软输入法的方法

Win10自带输入法怎么删除&#xff1f;Win10系统自带输入法就是微软输入法&#xff0c;这个输入法满足了很多用户的输入需求。但是&#xff0c;有些用户想要使用其它的输入法&#xff0c;这时候就想删除掉微软输入法。下面小编给大家介绍最简单方便的卸载方法吧。 Win10卸载微软…

数据挖掘(1)概述

一、数据仓库和数据挖掘概述 1.1 数据仓库的产生 数据仓库与数据挖掘&#xff1a; 数据仓库和联机分析处理技术(存储)。数据挖掘&#xff1a;在大量的数据中心挖掘感兴趣的知识、规则、规律、模式、约束(分析)。数据仓库用于决策分析&#xff1a; 数据仓库&#xff1a;是在数…

在Qt中,怎么获取到在mainwindow.ui文件中添加的控件

2023年9月30日&#xff0c;周六晚上 假设我在mainwindow.ui中添加了一个名为textEdit的QTextEdit对象 在mainwindow.cpp中&#xff0c;可以通过ui对象来获取到这个控件

妙不可言的Python之旅----(一)

初识Python python的起源 1989年&#xff0c;为了打发圣诞节假期&#xff0c;Gudio van Rossum吉多 范罗苏姆&#xff08;龟叔&#xff09;决心开发一个新的解释程序&#xff08;Python雏形&#xff09; 1991年&#xff0c;第一个Python解释器诞生 Python这个名字&#xff…

怎么修改jupyter lab 的工作路径而不是直接再桌面路径打开

要修改Jupyter Lab的工作路径&#xff0c;你可以按照以下步骤操作&#xff1a; 打开终端或命令提示符窗口。 输入 jupyter lab --generate-config 命令来生成Jupyter Lab的配置文件。 找到生成的配置文件&#xff0c;通常会位于 ~/.jupyter/jupyter_notebook_config.py。 使…

C++ AB组辅导课

C AB组辅导课 蓝桥杯C AB组辅导课 第一讲 递归与递推 Acwing1、整数划分(递归)2、acwing92. 递归实现指数型枚举10凑算式(全排列)11李白打酒(全排列)12、棋牌总数(递归)13、剪邮票(递归)14、1050. 鸣人的影分身 (递归或动态规划(记忆化搜索))15、方格分割 &#xff08;dfs思维&…

蓝桥杯每日一题2023.9.30

蓝桥杯大赛历届真题 - C&C 大学 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题&#xff0c;首先想到了dfs进行一一找寻&#xff0c;注意每次不要将重复的算进去&#xff0c;故我们每次循环可以记录一个开始的位置&#xff0c;下一次到这个位置时&#xff0c;…

Git版本控制系统

概念&#xff1a; 一个免费的 开源 分布式源码仓库&#xff0c;帮助团队维护代码 个人使用 多人联机使用 git安装: 这里直接看大佬的安装 文章 很不错的 git 安装配置https://blog.csdn.net/mukes/article/details/115693833 安装完毕之后&#xff1a; 使用命名git -v查看…

腾讯云最新优惠活动汇总!来看看腾讯云最近都有哪些优惠活动!

腾讯云作为国内领先的云服务提供商之一&#xff0c;经常推出各种优惠活动来吸引用户&#xff0c;本文将为大家汇总腾讯云最新的优惠活动&#xff0c;希望能够帮助大家降低上云成本&#xff0c;提高用户上云体验。 一、腾讯云新用户优惠券【点击领取】 腾讯云针对新用户推出了…

mysql面试题6:MySQL索引的底层原理,是如何实现的?B+树和B树的区别?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL索引的底层原理,是如何实现的? MySQL索引的底层实现是通过B+树来实现的。B+树是一种多叉平衡查找树,它的特点是能够高效地支持数据的插入…