You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
5.3 KiB
151 lines
5.3 KiB
// 定义项目 API 的 proto 文件 可以同时描述 gRPC 和 HTTP API |
|
// protobuf 文件参考: |
|
// - https://developers.google.com/protocol-buffers/ |
|
// - http://info.bilibili.co/display/documentation/gRPC+Proto |
|
// protobuf 生成 HTTP 工具: |
|
// - http://git.bilibili.co/platform/go-common/tree/master/app/tool/protoc-gen-bm |
|
syntax = "proto3"; |
|
|
|
// package 命名使用 {discovery_id}.{version} 的方式, version 形如 v1, v2, v1beta .. |
|
// NOTE: 不知道的 discovery_id 请询问大佬, 新项目找大佬申请 discovery_id,先到先得抢注 |
|
// e.g. account.service.v1 |
|
package live.rtc.v1; |
|
//option go_package = "v1"; |
|
import "github.com/gogo/protobuf/gogoproto/gogo.proto"; |
|
|
|
|
|
// NOTE: 最后请删除这些无用的注释 (゜-゜)つロ |
|
// 呵呵 我特么偏不删(゜-゜)つロ |
|
|
|
option go_package = "v1"; |
|
|
|
service Rtc { |
|
// `method:"POST"` |
|
rpc JoinChannel(JoinChannelRequest) returns (JoinChannelResponse); |
|
// `method:"POST"` |
|
rpc LeaveChannel(LeaveChannelRequest) returns (LeaveChannelResponse); |
|
// `method:"POST"` |
|
rpc PublishStream(PublishStreamRequest) returns (PublishStreamResponse); |
|
// `method:"POST"` |
|
rpc TerminateStream(TerminateStreamRequest) returns (TerminateStreamResponse); |
|
// `method:"GET"` |
|
rpc Channel(ChannelRequest) returns (ChannelResponse); |
|
// `method:"GET"` |
|
rpc Stream(StreamRequest) returns (StreamResponse); |
|
// `method:"POST"` |
|
rpc SetRtcConfig(SetRtcConfigRequest) returns (SetRtcConfigResponse); |
|
// `method:"GET"` |
|
rpc VerifyToken(VerifyTokenRequest) returns (VerifyTokenResponse); |
|
} |
|
|
|
message MediaSource { |
|
enum MediaType{ |
|
OTHER = 0; |
|
VIDEO = 1; |
|
AUDIO = 2; |
|
DATA = 3; |
|
SMALL_VIDEO = 4; |
|
} |
|
MediaType type = 1 [(gogoproto.jsontag) = "type"]; |
|
string codec = 2 [(gogoproto.jsontag) = "codec"]; |
|
string media_specific = 3 [(gogoproto.jsontag) = "media_specific"]; |
|
uint32 ssrc = 4 [(gogoproto.jsontag) = "ssrc"]; |
|
uint64 user_id = 5 [(gogoproto.jsontag) = "user_id"]; |
|
} |
|
|
|
message EncoderConfig { |
|
uint32 width = 1 [(gogoproto.jsontag) = "width"]; |
|
uint32 height = 2 [(gogoproto.jsontag) = "height"]; |
|
uint32 bitrate = 3 [(gogoproto.jsontag) = "bitrate"]; |
|
uint32 frame_rate = 4 [(gogoproto.jsontag) = "frame_rate"]; |
|
string video_codec = 5 [(gogoproto.jsontag) = "video_codec"]; |
|
string video_profile = 6 [(gogoproto.jsontag) = "video_profile"]; |
|
reserved 7 to 18; |
|
uint32 channel = 19 [(gogoproto.jsontag) = "channel"]; |
|
uint32 sample_rate = 20 [(gogoproto.jsontag) = "sample_rate"]; |
|
string audio_codec = 21 [(gogoproto.jsontag) = "audio_codec"]; |
|
} |
|
|
|
message JoinChannelRequest { |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 proto_version = 3 [(gogoproto.jsontag) = "proto_version"]; |
|
repeated MediaSource source = 4 [(gogoproto.jsontag) = "source"]; |
|
} |
|
|
|
message JoinChannelResponse { |
|
uint32 call_id = 1 [(gogoproto.jsontag) = "call_id"]; |
|
string token = 2 [(gogoproto.jsontag) = "token"]; |
|
repeated MediaSource source = 3 [(gogoproto.jsontag) = "source"]; |
|
} |
|
|
|
message LeaveChannelRequest { |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 call_id = 3 [(gogoproto.jsontag) = "call_id"]; |
|
} |
|
|
|
message LeaveChannelResponse { |
|
} |
|
|
|
message PublishStreamRequest{ |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 call_id = 3 [(gogoproto.jsontag) = "call_id"]; |
|
EncoderConfig encoder_config = 4 [(gogoproto.jsontag) = "encoder_config"]; |
|
string mix_config = 5 [(gogoproto.jsontag) = "mix_config"]; |
|
} |
|
|
|
message PublishStreamResponse{ |
|
} |
|
|
|
message TerminateStreamRequest{ |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 call_id = 3 [(gogoproto.jsontag) = "call_id"]; |
|
} |
|
|
|
message TerminateStreamResponse{ |
|
} |
|
|
|
message ChannelRequest{ |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
} |
|
|
|
message ChannelResponse{ |
|
repeated MediaSource media_source = 1 [(gogoproto.jsontag) = "media_source"]; |
|
string server = 2 [(gogoproto.jsontag) = "server"]; |
|
uint32 tcp_port = 3 [(gogoproto.jsontag) = "tcp_port"]; |
|
uint32 udp_port = 4 [(gogoproto.jsontag) = "udp_port"]; |
|
} |
|
|
|
message StreamRequest { |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 call_id = 3 [(gogoproto.jsontag) = "call_id"]; |
|
} |
|
|
|
message StreamResponse { |
|
EncoderConfig encoder_config = 1 [(gogoproto.jsontag) = "encoder_config"]; |
|
string mix_config = 2 [(gogoproto.jsontag) = "mix_config"]; |
|
} |
|
|
|
message SetRtcConfigRequest { |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint64 user_id = 2 [(gogoproto.jsontag) = "user_id"]; |
|
uint32 call_id = 3 [(gogoproto.jsontag) = "call_id"]; |
|
string config = 4 [(gogoproto.jsontag) = "config"]; |
|
} |
|
|
|
message SetRtcConfigResponse { |
|
} |
|
|
|
message VerifyTokenRequest { |
|
uint64 channel_id = 1 [(gogoproto.jsontag) = "channel_id"]; |
|
uint32 call_id = 2 [(gogoproto.jsontag) = "call_id"]; |
|
string token = 3 [(gogoproto.jsontag) = "token"]; |
|
} |
|
|
|
message VerifyTokenResponse { |
|
bool pass = 1 [(gogoproto.jsontag) = "pass"]; |
|
} |