0

나는 Video-view Android에서 YouTube 비디오를 재생하려고합니다. 주는 것은이 비디오를 재생할 수 없습니다. 21 : 45.741 21929-21961/com.example.inbridge08 내가 시도하는 것은Android VideoView 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()); 
      } 
     }); 
    } 
} 

로그 캣

2월 11일부터 19일까지 .. 다음과 같다. videoviewyoutube I/OpenGLRenderer : 초기화 된 EGL, 버전 1.4 11-19 02 : 21 : 45 : 729 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 : 오류 (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 21929-21929/com.example.inbridge08.videoviewyoutube의 E/오류는 :: -2147483648

[11-19 02 : 21 : 46.513 82 82 D /] 소켓 deconnection

2 일 동안 Google에서 검색 한 결과 사용 결정이 내려졌습니다. YouTube Android Player API 동영상보기에서 YouTube 동영상을 재생할 수 있습니다. URL을 다른 것으로 바꾸면 (YouTube 동영상 URL 아님) 정상적으로 작동합니다.

에뮬레이터와 장치에서 모두 시도했습니다. 둘 다 작동하지 않습니다.

미리 감사드립니다.

답변

0

VideoView에서 재생중인 동영상을 사용하는 경우 MediaPlayer class을 사용해보세요. 다음의 URI에서 동영상을 재생 MediaPlayer guide 사용에서 가져온 코드 조각입니다 :

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(); 

Note: If you're passing a URL to stream an online media file, the file must be capable of progressive download.

당신은 또한 추가로 참조 할 수 있도록이 SO thread을 확인 할 수 있습니다.