【问题标题】:Android VideoView YouTube Video - can't play this video errorAndroid VideoView YouTube Video - 无法播放此视频错误
【发布时间】:2017-04-11 19:12:53
【问题描述】:

我正在尝试在 Video-view Android 中播放 YouTube 视频。它无法播放此视频。我尝试过的如下..

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    // Widgets
    private VideoView vv_youtube;

    // Variables
    private String base_url = "https://www.youtube.com/watch?v=K8lppDEOkcM";

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

        vv_youtube = (VideoView) findViewById(R.id.vv_youtube);

        Uri video = Uri.parse(base_url);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(vv_youtube);
        vv_youtube.requestFocus();
        vv_youtube.setMediaController(mediaController);
        vv_youtube.setVideoURI(video);

        vv_youtube.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer arg0) {
                vv_youtube.start();
            }
        });

        vv_youtube.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.e("Error is: ", String.valueOf(extra));
                return false;
            }
        });

        vv_youtube.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                Log.e("Complete is: ", mp.toString());
            }
        });
    }
}

LogCat

11-19 02:21:45.741 21929-21961/com.example.inbridge08.videoviewyoutube I/OpenGLRenderer:初始化 EGL,版本 1.4 11-19 02:21:45.772 21929-21961/com.example.inbridge08.videoviewyoutube D/OpenGLRenderer:启用调试模式 0 11-19 02:21:45.799 21929-21961/com.example.inbridge08.videoviewyoutube W/EGL_emulation:eglSurfaceAttrib 未实现 11-19 02:21:45.799 21929-21961/com.example。 inbridge08.videoviewyoutube W/OpenGLRenderer:无法在表面 0xe2b19220 上设置 EGL_SWAP_BEHAVIOR,错误 = EGL_SUCCESS 11-19 02:21:45.898 21929-21929/com.example.inbridge08.videoviewyoutube D/MediaPlayer:无法在客户端打开文件,尝试服务器端 11-19 02:21:46.421 21929-21947/com.example.inbridge08.videoviewyoutube E/MediaPlayer: error (1, -2147483648) 11-19 02:21:46.421 21929-21929/com.example.inbridge08 .videoviewyoutube E/MediaPlayer: 错误 (1,-2147483648) 11-19 02:21:46.421 21929-21929/com.example.inbridge08.videoviewyoutube D/VideoView: 错误: 1,-2147483648 11-19 02:21:46.421 2192 9-21929/com.example.inbridge08.videoviewyoutube E/错误是::-2147483648

[ 11-​​19 02:21:46.513 82:82 D/] 套接字断开

我在 google 上搜索了两天,最终决定我必须使用 YouTube Android Player API 在 Video-view 中播放 YouTube 视频。如果我将 URL 替换为其他(不是 YouTube 视频 URL)它工作正常。

我在模拟器和设备上都试过了。两者都不能工作。

提前致谢!

【问题讨论】:

    标签: youtube-api android-youtube-api android-videoview android-video-player youtube-data-api


    【解决方案1】:

    尝试使用MediaPlayer class 在 VideoView 中播放视频。这是从 Using MediaPlayer guide to play videos from URIs 中获取的 sn-p:

    通过 HTTP 流从远程 URL 播放如下所示:

    String url = "http://........"; // your URL here
    MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.setDataSource(url);
    mediaPlayer.prepare(); // might take long! (for buffering, etc)
    mediaPlayer.start();
    

    注意:如果您传递 URL 以流式传输在线媒体文件,则该文件 必须能够进行渐进式下载。

    您也可以查看此SO thread 以获取更多参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多