black

直播技术中音视频的处理

南楼画角 提交于 2020-08-13 02:14:17
今天我们来讲一下音视频直播都用到了哪些技术。图玩智能科技作为直播领域专业服务商,为企业提供直播平台的二次开发服务,搭建更完善更稳定的直播系统,欢迎随时咨询 www.toivan.com 。说到音视频直播技术,我们最先想到的是音频技术和视频技术。 其实音频技术和视频技术它们的大体处理流程都是差不多的。一般都分为五大步: 数据采集,编码,传输,解码和渲染。 音视频处理 数据采集。对于音频来说采集到的数据是 PCM 格式,对于视频数据采集的格式是 YUV 格式。 数据压缩编码。数据采集完成之后,需要对数据进行压缩编码。音视频使用的压缩技术称为有损压缩技术。而像我们平 RAR , ZIP 工具进行的压缩都是无损压缩。就是说解压后的数据与原始数据一样叫做无损压缩,解压后和原始数据高度接近称为有损压缩,音视频编码属于后者。对于音频来讲,常用的编码格式有 speex, AAC, OPUS, G.711 等。现在比较常用的是 AAC ,一是它音质比较好,二是 RTMP 对 AAC 支持的比较好。对于视频编码格式有 H.264, H.265, VP8, VP9 等,目常基本上都是使用 H.264 。注意,衡量有损压缩好坏的指标就是看同等压缩率的情况下,解压后的数据与原始数据之间差别的大小,差别越小证明压缩的算法越优。当然在实时互动直播中

C# ZedGraph实时多条曲线数据更新实例

房东的猫 提交于 2020-08-12 19:53:34
C# ZedGraph实时多条曲线数据更新实例 先看展示效果 1.创建曲线实例添加必要的元素 1 public class LineChannel 2 { 3 public LineChannel( int id, int number, string name, string type, bool selected,Color lineColor, int lineWidth) 4 { 5 this .id = id; 6 this .number = number; 7 this .name = name; 8 this .type = type; 9 this .selected = selected; 10 this .lineColor = lineColor; 11 this .lineWidth = lineWidth; 12 } 13 14 private int id; 15 private int number; 16 private string name; 17 private string type; 18 private bool selected; 19 private Color lineColor; 20 private int lineWidth; 21 22 23 public int ID 24 { 25 get { return this

QT 基本图形绘制

≡放荡痞女 提交于 2020-08-12 14:39:06
QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿 QPainter::TextAntialiasing 在可能的情况下,文字反锯齿 QPainter::SmoothPixmapTransform 采用平滑的Pixmap变换算法 2.绘制函数 3.风格 1)画刷风格 2)画笔风格 3)画笔连接点风格 4)顶端风格 4.绘图前的准备 1 如果要在绘图设备(一般为窗口部件)上绘图,只需创建一个QPainter,再将指针传到该设备中。 例如: void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); } 2 常用的初始化:画笔、画刷、字体 画笔:用来画线和边缘。它包含颜色、宽度、线性、拐点风格以及连线风格。 画刷:用来填充几何图形的图案。它一般由颜色和风格组成,但同时也可以是纹理(一个不断重复的图像)或者是一个渐变。 字体:用来绘制文字。字体有很多属性,包括字体族和磅值大小。 5.具体的实例 通过建立一个画图面板来了解Qpainter是怎样绘制图形的,其中包含两个类,画图的区域PainterArea类和主窗口mainWindow类 (1)实现PainterArea类 //paintarea.h #ifndef PAINTAREA_H

一文教你如何去掉list集合中重复的元素?

杀马特。学长 韩版系。学妹 提交于 2020-08-12 11:24:44
在实际开发的时候,我们经常会碰到这么一个困难:一个集合容器里面有很多重复的对象,里面的对象没有主键,但是根据业务的需求,实际上我们需要根据条件筛选出没有重复的对象。 比较暴力的方法,就是根据业务需求,通过两层循环来进行判断,没有重复的元素就加入到新集合中,新集合中已经有的元素就跳过。 操作例子如下,创建一个实体对象PenBean,代码如下: /** * 笔实体 */ public class PenBean { /**类型*/ private String type; /**颜色*/ private String color; //... 省略 setter 和 getter public PenBean(String type, String color) { this.type = type; this.color = color; } @Override public String toString() { return "PenBean{" + "type='" + type + '\'' + ", color='" + color + '\'' + '}'; } } 测试 demo,如下: public static void main(String[] args) { //添加信息,PenBean中没有主键 List<PenBean> penBeanList = new

HTML5-WebSocket实现对服务器CPU实时监控

白昼怎懂夜的黑 提交于 2020-08-12 07:32:19
由于WebSocket允许保持长连接,因此当建立连接后服务器可以主动地向Client发送相关信息.下面通过服务端获取当前CPU的使用情况主动发送给网页,让网页实时显示CPU使用情况的曲线图.该事例的主要功能是包括服务端获取CPU使和情况和HTML5使用canvas进行曲线图绘制. 应用效果 实现效果主要是模仿windows的任务管理器,显示每个核的工作情况. C#获取CPU使用情况 可能通过PerformanceCounter来获取具本CPU线程的使用情况,不过在构建PerformanceCounter前先获取到CPU对应的线程数量.获取这个数量可以通过Environment.ProcessorCount属性获取,然后遍历构建每个PerformanceCounter int coreCount = Environment.ProcessorCount; for (int i = 0; i < coreCount; i++) { mCounters.Add(new PerformanceCounter("Processor", "% Processor Time", i.ToString())); } 为了方便计数器的处理,简单地封装了一个基础类,完整代码如下: /// <summary> /// Copyright © henryfan 2012 ///Email:

js canvas 旋转90度的整数倍

落爺英雄遲暮 提交于 2020-08-12 03:15:16
为了避免出现黑框 效果如下 根据不同的方向,设置宽高和画笔位置等 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Title</title> <style> .img { width: 300px; border: 1px solid black; } </style> </head> <body> <img class="img" id="source" src="./t.jpg" alt=""/> <canvas class="img" id="rotationCanvas"></canvas> <img class="img" id="target" src="./t.jpg" alt=""/> <button onclick="rotation()">旋转</button> <script> let degree = 0; const sourceImg = document.getElementById('source'); const targetImg = document.getElementById('target'); const rotationCanvas = document.getElementById('rotationCanvas'); function

Python数据可视化之matplotlib实践 源码 第一篇 入门 第三章

时间秒杀一切 提交于 2020-08-12 01:06:38
图3.1 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams[ ' font.sans-serif ' ]=[ ' SimHei ' ] mpl.rcParams[ ' axes.unicode_minus ' ]= False x =[1,2,3,4,5 ] y =[6,10,4,5,1 ] plt.grid(True, axis = ' y ' ,ls= ' : ' ,color= ' r ' ,alpha=0.3 ) plt.bar(x,y,align = ' center ' , color= ' b ' , tick_label=[ ' A ' , ' B ' , ' C ' , ' D ' , ' E ' ], alpha =0.6, edgecolor= " black " ) plt.xlabel( ' 测试难度 ' ) plt.ylabel( ' 试卷份数 ' ) plt.show() View Code ================================================ 图3.2 import matplotlib as mpl import matplotlib.pyplot as plt import

厌倦了大众字体?你可以用这个项目自创一款手写体

与世无争的帅哥 提交于 2020-08-11 23:42:47
  机器之心报道    参与:Racoon X、Jamin    这个酷炫的手写体生成项目,网页版使用 TensorFlow.js 实现,模型仅 10M。   本文主要介绍用 Tensorflow 编写的 RNN 手写笔迹合成项目,该模型主要基于 2013 年一篇关于手写笔迹合成的论文。从项目作者的 Github 进程来看,该项目实现已于 2018 年就完成,近日新推出的 Demo 所演示的交互模式下的网页版本为最新版,基于 TensorFlow.js 实现。   项目作者也表示在基于 2013 的手写笔迹合成的论文下,新增了一个推理模型进行优化。(Demo 如下图所示)      不同字体的手写笔迹合成。      项目地址:https://github.com/sjvasquez/handwriting-synthesis   网页版 Demo:https://seanvasquez.com/handwriting-generation/      上图这个权游里瑟曦的经典台词就是使用该项目创建的。    效果展示   让我们先来看一看这个项目的实际效果如何。   示例一为使用固定风格与偏置生成的样本(Smash Mouth – All Star 歌词):      示例二为使用变化的风格与固定偏置生成的样本,每一句诗词使用不同的风格生成(Vanessa Carlton – A

灯泡化身窃听器!靠光学抖动传递信息,轻松窃听百米外对话和音乐

会有一股神秘感。 提交于 2020-08-11 22:23:54
   大 数据文摘出品 作者:刘俊寰      看过 《双子杀手》 的朋友想必对女主塞在牙齿内的窃听器留有十分深刻的印象,这个窃听器帮助男主躲过了手雷的埋伏。      在现实生活中,窃听技术也一直在不断发展,从专门的窃听器到电话,到墙上的微型机器虫,甚至最近,研究人员开发了一种窃听新方式, 能够通过安装在建筑物上的玻璃反射的光束进行窃听……   你以为这就到头了吗?如今,一种更新的音频间谍工具,被以色列内盖夫本古里安大学和魏茨曼科学研究所的研究人员共同研发出来,他们 利用到的,是悬挂在你房间内的电灯。      这项技术被称为“lamphone”,实现窃听十分方便,也足够便宜,只要你有一台笔记本电脑、一台望远镜和一台光电传感器,就能够实时监听数百英尺外的任何微小的声音,实验中用到的后两者 价格没有超过1000美元 。   至于如何实现窃听,研究人员解释道, 房间内的声音会在灯泡玻璃表面上产生微小振动,通过测量这些振动引起的灯泡输出光的微小变化,就能够清晰地获取声音,以辨别对话内容,甚至连音乐都能识别!   安全研究员Ben Nassi说:“ 房间中的任何声音都可以进行窃听并还原,而且无需破坏任何东西,也不需要什么太过精密的设备。 ”   站在25米远的测量点,看微米级振动如何引起信息泄露   实验自然是必不可少的。   在准备过程中

排除服务器接入问题地基本步骤

白昼怎懂夜的黑 提交于 2020-08-11 18:16:58
排除服务器接入问题地基本步骤 当我访问网络中的一台服务器时 , 我收到了如下信息 :“ 没有任何网络提供商接受特定的网络通路 。 我要做的一切就是通过一个 IP 地址 , 如 192.168.2.10, 打开这台机器 。 其它的服务器和工作站都工作正常 。 我需要得到帮助 , 因为我需要这台服务器运行一个应用程序 , 而且让本公司在全国各地的不同分支机构都能够运行这个程序 。 这些服务器目前都运行 Windows 2000 操作系统 , 不过 , 我曾经两次试着使用了 Windows 2003, 后来又退回到了 Windows 2000。 如能得到帮助 , 我将不胜感谢 。   这是一个典型问题 , 也许是网络绑定问题 、 正确登录的问题和接入网络的身份识别问题 。 下面为你提供一些故障诊断的步骤 :   1. 验证系统确实运行了 TCP/IP 协议 , 并且拥有一个 IP 地址 。 如果没有 , 清添加协议和地址 。   2. 如果服务器还运行其它协议 (IPX/SPX、NetBEUI 等协议 ), 至少在进行测试时要删除这些协议 , 然后以后再恢复这些协议 。   3. 验证使用这台服务器的 IP 地址是否可以 “ping” 通系统 。 如果不能 , 验证你从服务器本身是否可以 “ping” 通 127.0.0.1 这个地址 。 这可以证明网络接口卡 (NIC) 是坏的 。