0

私はCastCompanionLibrary-AndroidTextTrackStyleを使用しており、キャプションのカスタムを設定しようとしています。

TexTextStyle作成中にこれを MediaInfo に設定しています。

                // set CC style
                TextTrackStyle textTrackStyle = new TextTrackStyle();
                textTrackStyle.setBackgroundColor(Color.parseColor("#FFFFFF"));
                textTrackStyle.setForegroundColor(ContextCompat.getColor(mContext, R.color.blue));

                MediaInfo mediaInfo = new MediaInfo.Builder(url)
                        .setStreamDuration(movieVideoItem.getDuration())
                        .setStreamType(MediaInfo.STREAM_TYPE_NONE)
                        .setContentType(type)
                        .setMetadata(mediaMetadata)
                        .setMediaTracks(tracks)
                        .setCustomData(customData)
                        .setTextTrackStyle(textTrackStyle)
                        .build();

しかし、Chromecast 側には目に見える結果はありません。VideoCastManagerメソッドも変更しようとしましたsetTextTrackStyle

 public void setTextTrackStyle(TextTrackStyle style) {
    // CUSTOM TEXT TRACK STYLE HERE
    TextTrackStyle textTrackStyle = new TextTrackStyle();
    textTrackStyle.setBackgroundColor(Color.parseColor("#FF0000"));
    textTrackStyle.setForegroundColor(Color.parseColor("#0000FF"));

    mRemoteMediaPlayer.setTextTrackStyle(mApiClient, textTrackStyle)
            .setResultCallback(new ResultCallback<MediaChannelResult>() {
                @Override
                public void onResult(MediaChannelResult result) {
                    if (!result.getStatus().isSuccess()) {
                        onFailed(R.string.ccl_failed_to_set_track_style,
                                result.getStatus().getStatusCode());
                    }
                }
            });
    for (VideoCastConsumer consumer : mVideoConsumers) {
        try {
            consumer.onTextTrackStyleChanged(textTrackStyle);
        } catch (Exception e) {
            LOGE(TAG, "onTextTrackStyleChanged(): Failed to inform " + consumer, e);
        }
    }
}

しかし、これでResultCallback私はここで見つけたエラーcode 2103を取得しています: developers google

public static final int REPLACED
最初のリクエストが完了する前に同じタイプの別のリクエストが行われたため、リクエストの進行状況が追跡されなくなったことを示すステータス コード。

定数値:2103

このエラー コードが何を意味するのか、または何が間違っているのかわかりません。Chromecast の実装は、カスタムを処理できる必要がありますTextTrackStyle(少なくとも埋め込みVTT型の場合) 。

MediaManager.onMetadataLoaded = function (event) {
    .......
    console.log("### RESOLVED TEXT TRACK TYPE " + textTrackType);
    if (textTrackType ==
        sampleplayer.TextTrackType.SIDE_LOADED_TTML &&
        event.message && event.message.activeTrackIds && event.message.media &&
        event.message.media.tracks) {
        _processTtmlCues(
            event.message.activeTrackIds, event.message.media.tracks);
    } else if (!textTrackType || textTrackType == sampleplayer.TextTrackType.SIDE_LOADED_UNSUPPORTED) {
        // If we do not have a textTrackType, check if the tracks are embedded
        _maybeLoadEmbeddedTracksMetadata(event);
    }
    MediaManager['onMetadataLoadedOrig'](event);
}


 function _maybeLoadEmbeddedTracksMetadata(info) {
    if (!info.message || !info.message.media) {
        return;
    }
    var tracksInfo = _readInBandTracksInfo();
    if (tracksInfo) {
        textTrackType = sampleplayer.TextTrackType.EMBEDDED;
        tracksInfo.textTrackStyle = info.message.media.textTrackStyle;
        MediaManager.loadTracksInfo(tracksInfo);
    }
}

Chromecast の結果は、黒い背景に白いテキストだけです。

// 編集 Chromecast レシーバー ログが追加されました:

Chromecast レシーバー ログがいくつか見つかりましTextTrackStyleたが、これは設定しようとしている私のスタイルではありません:

 Received message: {"data":"{\"requestId\":4,\"type\":\"EDIT_TRACKS_INFO\",\"textTrackStyle\":{\"fontScale\":1,\"foregroundColor\":\"#4285F4FF\",\"backgroundColor\":\"#FFFFFFFF\"},\"mediaSessionId\":1}"

これらは、Android Sender アプリから実際に送信している異なる色です。メソッドTextTrackStyle内には何も表示されません。onLoad問題が Android 側にあるのか、Chromecast 側にあるのかわかりません。

4

0 に答える 0