// 预期接收 syntax = "proto3"; package main; option go_package = "./spb/talk"; // 视频类型 enum VideoTypeE { NONE_V = 0; H264 = 1; // 也称为 AVC,采用了多种高效的编码技术,如帧间压缩、运动估计、变换编码等,能够在保持较高画质的同时减小文件大小,具有广泛的兼容性和硬件支持 IMAGE = 2; // 一种简单的视频压缩格式,它将每一帧视频都压缩成单独的JPEG图像帧 经常用于低延迟的视频流应用 如网络摄像头、数字视频录像机、监控视频。它也常用于一些老旧的设备中。 VP8 = 3; // 由Google开发,开源,软件编码器,WebRTC默认编码器 广泛用于WebRTC视频会议、YouTube视频播放等。VP8 已被Google广泛推广,尤其在HTML5视频和实时视频应用中有着广泛应用。 } // 音频类型 enum AudioTypeE { NONE_A = 0; AAC = 1; // AAC 是一种有损压缩音频编解码器,广泛应用于多媒体和流媒体传输。 G711 = 2; // 无损压缩算法,使用8 kHz的采样率,每个采样点使用8位数据。虽然压缩效率低但非常高的音质,广泛应用于电话和VoIP中。 OPUS = 3; // 开源,WebRTC默认编码器 低延迟、广泛的比特率范围(从6 kbps到510 kbps)以及适应性强的特性,特别适合用于实时通信(如VoIP)和高质量的音乐流媒体。 } // 预期接收为渲染方发送,含义为:“我可以理解这些格式,你看看你方便提供什么格式” message TalkExpectReq { // 如果接收到NONE的话,意味着对方关闭了喇叭或者视频显示,发送方应该停止发送 // 支持的类型是数组 repeated VideoTypeE VideoType = 1; repeated AudioTypeE AudioType = 2; } // 这是音视频提供方的回应,含义为:“马上我就会为你发送这个格式的音视频,你准备好解析器吧” message TalkExpectResp { // 宽度,单位像素 uint32 Width = 1; // 高度,单位像素 uint32 Height = 2; // 旋转角度 默认0 uint32 Rotate = 3; // 即将发送的音视频格式 VideoTypeE VideoType = 4; AudioTypeE AudioType = 5; }