Beispiel #1
0
        public override async Task <StreamRecord> uploadStream(IAsyncStreamReader <VideoChunk> requestStream, ServerCallContext context)
        {
            var streamId = Guid.NewGuid();
            var record   = await _repo.AddStream(streamId);

            var db = _redisMultiplexer.GetDatabase();

            while (await requestStream.MoveNext(context.CancellationToken))
            {
                var chunk = requestStream.Current.Chunk;
                await db.PublishAsync(streamId.ToString(), ToRedisValue(new VideoChunk {
                    VideoId = streamId.ToString(), Chunk = chunk
                }));
            }

            return(new StreamRecord
            {
                VideoId = streamId.ToString(),
                StreamName = streamId.ToString()
            });
        }