如何通过SDK实现BitMovin Stream仪表盘式简易视频流创建?
解决方案:用Bitmovin Streams API替代Encoding API
你之前的问题核心是用错了服务模块:仪表盘里那种“上传即生成可用流”的功能属于Bitmovin Streams(直通流/无转码流)服务,但你现在写的代码调用的是Bitmovin Encoding API——这是专门做视频转码的模块,自然需要配置编码、流、等待转码完成才能生成manifest,完全不符合你“无需转码混流”的需求。
正确的简便实现步骤(C#)
直接使用Bitmovin Streams API,全程不需要配置编码规则,上传后直接生成可播放的流:
// 1. 创建Streams专用的文件输入 var streamInput = await _bitmovinApi.Streams.Inputs.CreateAsync(new StreamsInputCreateRequest { Name = "Direct Upload Input", Type = StreamsInputType.S3 // 可根据实际存储类型选择,Bitmovin Streams支持直接上传 }); // 2. 获取上传URL并上传文件 var uploadUrlResponse = await _bitmovinApi.Streams.Inputs.CreateUploadUrlAsync(streamInput.Id); var fileContent = new StreamContent(fileStream); var uploadResponse = await _httpClient.PutAsync(uploadUrlResponse.UploadUrl, fileContent, args.CancellationToken); if (!uploadResponse.IsSuccessStatusCode) throw new Exception($"上传失败: {await uploadResponse.Content.ReadAsStringAsync()}"); // 3. 创建直通流(无需转码) var streamCreateRequest = new StreamCreateRequest { Name = filename, InputId = streamInput.Id, InputPath = "/", // 直接上传的文件填"/"即可 EncodingMode = StreamEncodingMode.PASSTHROUGH // 关键:指定无转码模式 }; var stream = await _bitmovinApi.Streams.CreateAsync(streamCreateRequest); // 4. 获取可用的Stream ID和Manifest URL var streamId = stream.Id; var manifestUrl = stream.ManifestUrls.Hls; // 也可选择DASH的Url,适配不同HTML5播放器需求
关键说明
- 用
Streams相关API替代Encoding模块,全程不需要创建编码配置、编码任务,PASSTHROUGH模式会直接复用原视频的编码参数,自动生成适配HTML5播放器的HLS/DASH manifest。 - 上传完成后Stream会自动生成可播放的manifest,不需要额外等待转码流程,和仪表盘的操作体验完全一致。
关于服务选择
你没选错提供商,但选错了具体的服务模块:Bitmovin Encoding服务针对需要转码、多码率适配的场景;而Streams服务(又称Direct Streaming)就是为“上传即播、无转码”的需求设计的,完全匹配你的要求。
内容的提问来源于stack exchange,提问作者Askolein
相关产品推荐
相关产品推荐

