Docker(2)以ubuntu容器为例,在宿主机和容器之间添加数据卷。添加数据卷的命令 是
docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
12[root@shjava101 ~]# docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData1 ubuntu /bin/bash
查看宿主机目录 查看宿主机目录 在宿主机对应的目录里面创建一个文件 回到容器目录查看 我们发现在容器中,这个文件也会存在。
要宿主机和容器之间的目录形成挂载关系,不管是容器内数据发生变化, 还是宿主机内部数据发生变化,都会被另一方即时同步
容器停止了,当再次启动容器之后,文件依然还是可以同步
如何查看数据卷挂载成功docker inspect 容器id
1[root@shjava101 ~]# docker inspect 1c88215ff319
上面的挂载,默认在容器内部的目录都可以进行读写操作。如果我们只想在容 器内部进 ...
Graphics
未读Shadow mapping光栅化问题解决阴影的方法
Shadow Mapping 会产生走样现象
Pass1 : Render from Light从光源看向场景 记录看到的深度(Z-Buffer)
Pass 2A Render from Eye
从眼睛或摄像机出发 可以看到另外一些东西
Pass 2B:Project to light
分别以摄像机和光源视角计算深度 (例如橙色的线)如果深度一致, 说明点可以被相机和光源所看到
深度不一致 说明在阴影中
Visualizing Shadow MappingStep one :从光源看过去,记录深度信息
Step two :对比深度关系
光源看不到的在阴影里,实际深度和记录深度是否相等
问题
浮点数判断精度大小比较困难
记录在shadow map里需要分辨率 如果分辨率低会阴影有锯齿
软硬阴影完全看不到光源(本影区域)和能看到部分光源
点光源不会出现呢软阴影 出现软阴影说明光源有一定大小
Docker1. 概念开发环境、测试环境以及生产环境需求
系统平滑移植,容器虚拟化技术
基于Go语言实现的云开源项目 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生 命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环 境能够做到“一次镜像,处处运行”。
Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过 来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容 器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好 环境,换到别的机子上就可以一键部署好,大大简化了操作。
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布 的容器虚拟化技术。
1.2 容器与虚拟机1.2.1 虚拟机虚拟机(virtual machine)就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行 Linux系统CentO ...
视频播放器 (1)视频编码视频中图像编码的主要依赖:
帧内的图像压缩编码
帧之间的数据压缩编码
帧内的图像压缩很好理解就是对于图片中相同像素的压缩。
帧之间的数据压缩就主要依赖连续帧之间具有极高的相似性的原理。如一段视频有十几秒都是不动的或者有50%的画面都是不变的,那么这块存储就可以节省了。
视频压缩的核心原理就是将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的GOP进行解码后读取画面再渲染显示。一组GOP中的帧分为三类(有些视频只有两类,没有B帧),分别是:
I P B
I帧:是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码。一个GOP视频序列中的第一个帧,始终都是I帧。
P帧:“帧间预测编码帧”,需要参考前面的I帧和/或P帧的不同部分,才能进行编码。P帧对前面的P和I参考帧有依赖性,也就是视频中运动的部分。P帧压缩率比较高,占用的空间较小。
B帧:“双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达 ...
音视频开发
未读基于TCP的RTP传输服务器流程1,客户端请求RTSP的Describe请求时,RTSP服务器返回的SDP协议
2,客户端请求RTSP的Setup请求时,RTSP服务器不需要再对应创建RTP和RTCP的UDP连接通道,因为TCP版的RTP传输,客户端与服务器交互时,无论是RTSP信令还是RTP数据包或者是RTCP数据包,都是使用同一个tcp连接通道。
不过这个tcp连接通道在发送rtp数据包或者rtcp数据包时,需要加一些分隔字节。
3,客户端请求RTSP的Play请求时,RTSP服务器在对Play请求回复以后,还需要源源不断的同时向客户端发送音频流和视频流的RTP数据包。
与UDP 对比
UDP协议上的RTSP/RTP需要打开许多UDP端口,一个端口用于RTSP通信,n个端口用于RTP,n个端口用于RTCP
中间网络路由器很容易就过滤或者忽略掉UDP数据包
UDP是不可靠传输协议,媒体包在因特网上传输时会面临着丢包
不需要再去创建UDP通道
CODE //“m=” 出现新流 96代表H264 /& ...
音视频开发
未读RTSP 服务器 源码理解Fd 文件描述符fd (File Descriptor) 打开的文件或网络连接的一个抽象标识符。每个文件描述符通常是一个整数,在程序运行时用于引用特定的文件或套接字。
管理网络连接:文件描述符用于表示客户端与服务器之间的网络连接。RTSP服务器会为每个连接分配一个文件描述符,以便能够区分和管理多个客户端连接。
非阻塞I/O:通过将文件描述符设置为非阻塞模式,服务器可以在无需等待数据准备好的情况下进行其他操作。这对于高效处理多个并发连接是非常重要的。
回调函数:通过为文件描述符绑定回调函数(如 readCallback),服务器可以在特定事件(如有数据可读)发生时自动调用这些函数,从而处理相应的I/O操作。
select 网络模型:select 是一种多路复用技术,用于监视多个文件描述符,以查看哪些文件描述符处于可读、可写或有异常的状态。这使得服务器可以在一个线程中高效地处理多个网络连接。
如何理解 Live555 的Source & Sink
Source 发送端, 流的起点, 可直观理解为生产者, 负责读取文件或网络流的信息.S ...
音视频开发
未读RTSP 服务器实现RTSP协议解析及实现RTSP是一个实时传输流协议,是一个应用层的协议。通常说的RTSP 包括RTSP协议、RTP协议、RTCP协议,对于这些协议的作用简单的理解如下
RTSP协议:负责服务器与客户端之间的请求与响应
RTP协议: 负责服务器与客户端之间传输媒体数据
RTCP协议:负责提供有关RTP传输质量的反馈,就是确保RTP传输的质量
三者的关系: rtsp并不会发送媒体数据,只是完成服务器和客户端之间的信令交互,rtp协议负责媒体数据传输,rtcp负责rtp数据包的监视和反馈。rtp和rtcp并没有规定传输层的类型,可以选择udp和tcp。Rtsp的传输层则要求是基于tcp。
通过一个ffmpeg 客户端拉流播放一个rtsp视频流的方式,展示RTSP的交互过程。并通过Wireshark抓包分析。
123SDP 协议(https://blog.csdn.net/uianster/article/details/125902301)一个会话级描述多个媒体级描述
main
123456789101112131415161718192021222324252 ...
RTSP 和 RTMP 原理 通过ffmpeg 实现将本地摄像头串流到RTSP服务器RTMP 与 RTSP流媒体协议 (Streaming Protocol)流媒体协议是一种用于通过 Web 传递多媒体的协议。
流媒体协议有很多,主要分为三大类:
传统视频流协议
RTMP
RTSP
基于 HTTP 的自适应协议
Apple HLS
Low-Latency HLS
MPEG-DASH
Adobe HDS
新技术
SRT
WebRTC
RTMPRTMP (Real Time Messaging Protocol)是基于 TCP 开发的,RTSP 使用到了 UDP
可以在服务器和客户端服务器之间保持稳定的连接,无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输,通过将数据流分成相等的小部分(音频数据默认为 64 字节,视频数据默认为 128 字节)并将它们顺序传输到接收设备,然后将它们重新组合成视频流来实现的。
缺点是它与 HTML5 播放器不兼容,这样的话必须使用另一种协议,例如 HLS来传输视频文件到达用户的设备,此外,RTMP 容易受到带宽问题的影响。
RT ...
音视频开发
未读live555 源码阅读liveMedia: 主要的媒体处理逻辑。
UsageEnvironment: 处理事件循环和任务调度。
groupsock: 网络层,处理组播和单播的socket通信。
BasicUsageEnvironment: 提供基本的环境支持,是UsageEnvironment的一个简单实现。
https://blog.csdn.net/C1033177205/article/details/104331224
事件循环主要处理三类事件:Socket 事件、触发器事件和定时任务。
SDP12345678SDP(Session Description Protocol,会议描述协议)是一个用于描述多媒体通信会话的协议。SDP主要用于协商和定义参与会话的各方在通信时需要的媒体格式和网络参数。它常用于多媒体通信和流媒体应用中,如视频会议、VoIP(网络电话)、实时流媒体播放等。SDP的主要功能包括:会话描述:定义会话的基本属性,如会话的名称、时间、地点等。媒体信息:描述会话中传输的多媒体流的信息,包括媒体类型(音频、视频等)、编码格式、传输地址和端口等。会话参数协商:在会话 ...