android - 使用 MediaRouteButton 将视频转换到电视

标签 android youtube chromecast google-cast

我打算使用 this名为 的小型图书馆《恶作剧》 (基于 Google Cast V3 构建)在我的应用中实现视频转换功能。

我想像 this 一样实现转换 YouTube 视频一

这是我复制的代码(这应该通过 Chromecast 通过一些基于 Web 的视频 URL 在 Android TV 上播放视频):

public class MainActivity extends AppCompatActivity {
    private Button playButton;
    private Casty casty;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        casty = Casty.create(this)
                .withMiniController();
        setUpPlayButton();
        setUpMediaRouteButton();
    }

    private void setUpPlayButton() {
        playButton = (Button) findViewById(R.id.button_play);
        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                casty.getPlayer().loadMediaAndPlay(createSampleMediaData());
            }
        });
        casty.setOnConnectChangeListener(new Casty.OnConnectChangeListener() {
            @Override
            public void onConnected() {
                playButton.setEnabled(true);
            }

            @Override
            public void onDisconnected() {
                playButton.setEnabled(false);
            }
        });
    }

    private void setUpMediaRouteButton() {
        MediaRouteButton mediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button);
        casty.setUpMediaRouteButton(mediaRouteButton);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        casty.addMediaRouteMenuItem(menu);
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private static MediaData createSampleMediaData() {
        return new MediaData.Builder("http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4")
                .setStreamType(MediaData.STREAM_TYPE_BUFFERED)
                .setContentType("videos/mp4")
                .setMediaType(MediaData.MEDIA_TYPE_MOVIE)
                .setTitle("Sample title")
                .setSubtitle("Sample subtitle")
                .addPhotoUrl("https://peach.blender.org/wp-content/uploads/bbb-splash.png?x11217")
                .build();
    }
}

注意:我还没有检查它,因为我没有测试转换功能所需的东西......比如 Chromecast 和电视

我的要求

而不是一些Web based Video URL , 如果我想使用相同的库转换 Youtube 视频,我希望我的 code should look喜欢与否:
return new MediaData.Builder("https://www.youtube.com/watch?v=RKjUPQCXnsM")

我有两个问题:
  • 我是否需要保留播放和暂停按钮(如果是 YouTube 视频)?

  • 我的想法:我个人认为,我不需要单独使用播放和暂停按钮来控制媒体播放(因为 YouTube 会自己处理)——我是对还是错?
  • 如果我是对的,那么我需要在何时何地使用 createSampleMediaData()方法

  • 所以你怎么想我们的MainActivity.java应该看起来像在转换 YouTube 视频的情况下?

    不好的是,我没有电视,否则,我可以尝试很多次来完成这项工作。

    最佳答案

    如果不对设备进行测试,这将很难,因为 android tv emulator cannot be use to test the cast functionality .您可以查看有关 Get Started 的文档,以熟悉 Cast API 功能。您可能还想查看 related SO post谈论播放网络视频以转换 API。还有一个关于 video formats 列表的文件支持。

    希望这可以帮助。

    关于android - 使用 MediaRouteButton 将视频转换到电视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684260/

    相关文章:

    java - Android:在使用接口(interface)测试类期间提供模拟实现

    objective-c - 按下按钮播放嵌入式 youtube 视频

    android - 在 Maven 项目中添加 Chromecast

    ios - 通过 Chromecast 发送自定义 UIViewController

    android - 如何在 Android 中使用 JSON 在 ListView 中获取 YouTube 缩略图?到目前为止我的代码是:

    java - 编辑 JSON 字段

    android - android中AsyncTask中启动Activity的问题

    api - Youtube API channel 搜索 - 如何使用视频 ID 获取 channel ID

    youtube - 如何嵌入YouTube channel ?

    javascript - 如果未安装 Chromecast 扩展程序或使用隐身模式,Google Chromecast 发件人错误