是否可以从Google Cast发送者应用启用字幕?
我已在我的应用中实施了Google Cast,并且hls流媒体在Chrome Cast上正常运行. hls文件中包含字幕轨道,但字幕未显示.没有.vtt文件可用于视频,因此我无法实现MediaTrack将字幕URL发送到接收器应用程序.
我想知道是否有可能在发送者应用程序的hls流式传输上启用字幕,或者我是否需要为此制作自定义接收器应用程序?
我正在创建MediaInfo对象,它以下列方式发送到接收器应用程序(标准)
private MediaInfo buildMediaInfo() {
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
movieMetadata.putString(MediaMetadata.KEY_TITLE,mTitle + " (" + mProdYear + ")");
movieMetadata.putString(MediaMetadata.KEY_SUBTITLE,mFilmType);
movieMetadata.addImage(new WebImage(Uri.parse(mImageUrl)));
return new MediaInfo.Builder(mVideoUrl.toString())
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("videos/mp4")
.setMetadata(movieMetadata)
//enable subtitles on hls streaming??
.build();
}
最佳答案
你没有提到你正在使用的接收器.在默认/样式接收器中,HLS(一般的自适应流)由媒体播放器库处理.如果它看到支持的曲目,则该信息将在状态更新中发送到连接的设备.然后,发件人应用程序可以了解其他轨道(及其相关的轨道ID)的存在,然后可以打开或关闭它们.例如,如果您使用CCL,这将自动处理(在发送方):要查看实际操作,请抓住CastVideos-android-v2(使用CCL)并拥有两部电话,连接到接收器并启动前三部电影中的一部(前三部分有隐藏式字幕)并转到全屏转换控制器页面并打开隐藏式字幕并选择文本轨道.然后将第二部手机连接到同一个接收器,你会看到它与接收器上播放的内容同步,如果你进入第二部手机的全屏控制器,你会发现它知道隐藏的字幕和什么轨道启用.