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

Android端如何通过编程将不同URI的音视频同步投屏到Chromecast?

分离音视频URI合并投送Chromecast的方案

可行,Chromecast支持投送分离的音视频流,核心是通过Cast SDK的媒体轨道配置实现,以下是具体实现步骤:

实现步骤

1. 确认接收器兼容性

如果使用官方默认的Styled Media Receiver,无需额外开发,它原生支持分离音视频流的播放;如果是自定义Receiver应用,只需确保基于Cast Receiver SDK开发,且未过滤多轨道媒体请求即可。

2. 发送端构造媒体请求

在发送端(Android/iOS/Web),通过MediaInfo对象配置分离的音视频轨道:

  • 创建两个MediaTrack实例,分别指定类型为VIDEO和AUDIO,并关联对应的URI
  • 将两个轨道添加到MediaInfo的mediaTracks数组中
  • 主contentType以视频流的MIME类型为准(如video/mp4)

Web端代码示例

// 初始化Cast会话后构造媒体请求
const mediaInfo = new chrome.cast.media.MediaInfo('你的视频URI', 'video/mp4');

// 配置视频轨道
const videoTrack = new chrome.cast.media.MediaTrack(1, chrome.cast.media.MediaTrackType.VIDEO);
videoTrack.contentId = '你的视频URI';

// 配置音频轨道
const audioTrack = new chrome.cast.media.MediaTrack(2, chrome.cast.media.MediaTrackType.AUDIO);
audioTrack.contentId = '你的音频URI';

mediaInfo.mediaTracks = [videoTrack, audioTrack];

const loadRequest = new chrome.cast.media.LoadRequest(mediaInfo);
castSession.loadMedia(loadRequest)
  .then(() => console.log('音视频流加载成功'))
  .catch(error => console.error('加载失败:', error));

Android端核心代码示例

val mediaInfo = MediaInfo.Builder("你的视频URI")
    .setContentType("video/mp4")
    .build()

// 添加视频轨道
val videoTrack = MediaTrack.Builder(1, MediaTrack.TYPE_VIDEO)
    .setContentId("你的视频URI")
    .build()

// 添加音频轨道
val audioTrack = MediaTrack.Builder(2, MediaTrack.TYPE_AUDIO)
    .setContentId("你的音频URI")
    .build()

mediaInfo.mediaTracks = listOf(videoTrack, audioTrack)

val loadRequest = LoadRequest.Builder(mediaInfo).build()
castSession.remoteMediaClient.load(loadRequest)

3. 关键注意事项

  • 音视频流的编码格式必须符合Chromecast支持列表,推荐使用H.264视频+AAC音频组合
  • 确保音视频流的时长完全同步,否则会出现音画错位问题
  • 如果自定义Receiver需要处理多轨道,需在LOAD事件回调中正确解析mediaTracks字段,不要丢弃分离的音视频信息

内容的提问来源于stack exchange,提问作者Ankur Adlakha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:15:52