You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:37:02