2011-01-11 5 views
58

Как воспроизвести видеоролики YouTube в моей заявке? Я хочу до play video, транслируя его прямо с YouTube без скачивания. Кроме того, во время воспроизведения видео я хочу предоставить параметры меню. Я не хочу играть в видео, используя намерение по умолчанию. Как я могу это сделать?Как играть в видео YouTube в приложении для Android?

+0

возможно дубликат [Android YouTube приложение Play Video Intent] (http://stackoverflow.com/questions/574195/android-youtube-app- play-video-intent) – DroidDev

+0

Его просто 2-минутная работа, включите опцию Youtube с консоли разработчика, загрузите jar-файл с файлом youtube, начните использовать его, его просто отправьте этот пост http://www.feelzdroid.com/2017/01/embed -youtube-video-player-android-app-example.html – Naruto

+0

Это должно помочь http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP

ответ

56

Это событие БТН нажмите

btnvideo.setOnClickListener(new OnClickListener() { 

public void onClick(View v) { 

    startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo"))); 
    Log.i("Video", "Video Playing...."); 

    } 
}); 

этот тип он был открыт в другой странице с YouTube, где и может показать ваше видео

+1

Это зависит от YouTube-апа , в противном случае он откроет видео в новом веб-браузере, я хочу воспроизвести видео в VideoView не в веб-просмотре .. чем предложить какой-то способ plz. –

+3

'VideoView' требует абсолютного URL-адреса видео, которое, вероятно, недоступно в случае с YouTube. –

+3

Для любых копий и пастеров, если вы смущены тем, почему это может не работать, в newIntent должно быть пространство. new Intent – OrhanC1

14

Шаги

  1. Создать новую активность, для экрана вашего плеера (полноэкранный) с опциями меню. Запустите медиаплеер и пользовательский интерфейс в разных потоках.

  2. Для воспроизведения медиафайлов - В общем, для воспроизведения аудио/видео в андроиде есть медиа-плеер api. FILE_PATH это путь файла - может быть URL (YouTube) поток или локальный путь к файлу

    MediaPlayer mp = new MediaPlayer(); 
        mp.setDataSource(FILE_PATH); 
        mp.prepare(); 
        mp.start(); 
    

Смотри также: Android YouTube app Play Video Intent уже обсуждали подробно.

+4

Как FILE_PATH указывает на видео с YouTube? YouTube связывает веб-страницу, которая воспроизводит видео, а не ссылку на сам файл. –

+3

У Youtube нет абсолютного URL-адреса. Это была первоначальная озабоченность ОП. – noob

+1

@MartyMiller Получение потока Url из youtube - это другой вопрос. Это относится к youtube api's. – Naresh

5

Вы можете посмотреть приложение Android-Youtube-Player, которое можно найти в разделе here.
В этом примере приложения видеоролики youtube воспроизводятся в виде видео, а не в веб-просмотре.

4

Надежда эта ссылка поможет вам http://android-coding.blogspot.in/2011/03/simple-example-using-videoview-to-play.html

Чтобы преобразовать YouTube видео RTSP использовать этот github code - youtube-url2rtsp

+1

Хотя это теоретически может ответить на вопрос, было бы предпочтительнее включить основные части ответа здесь и предоставить ссылку для справки. –

1
MediaPlayer mp=new MediaPlayer(); 
mp.setDataSource(path); 
mp.setScreenOnWhilePlaying(true); 
mp.setDisplay(holder); 
mp.prepare(); 
mp.start(); 
20

Проверьте официальный YouTube Android Player API.

+0

У меня есть некоторые сомнения относительно Youtube Api, будет ли это использовать приложение YouTube для поддержки? – edwin

+1

он требует, чтобы у пользователя было последнее приложение YouTube (V4.2.16), но это, безусловно, самый надежный вариант. есть некоторые gotcha, но это законный способ наслаждаться потоком качества HD. –

+0

Я хочу воспроизвести видеоролик youtube в своем приложении с помощью андроида Youtube, вы можете предложить мне некоторые идеи. –

1

вы можете использовать проект this, чтобы играть в любое ваше видео в вашем приложении для Android. Теперь для другого видео или видео ID ... вы можете это сделать https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ где eminemvevo = канал.

после обнаружения, идентификатор видео, вы можете поместить этот идентификатор в cueVideo("video_id")

src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) { 
    if (!wasRestored) { 
     player.cueVideo("wKJ9KzGQq0w"); 
    } 
    } 

И специально для чтения, что VIDEO_ID лучшим способом open это, и это как XML [1st_file] файл в вашем рабочем столе после он создаст новый Xml-файл в вашем project или загрузите файл [1st_file] сохраненный файл в ваш проект и щелкните правой кнопкой мыши в нем и откройте его с помощью файла xml_editor, здесь вы найдете идентификатор видео определенного видео.

enter image description here

2

Этот ответ может быть очень поздно, но полезно.

Вы можете воспроизводить видео YouTube в самом приложении, используя android-youtube-player.

Некоторые фрагменты кода:

Чтобы играть Видеосервис YouTube, который имеет идентификатор видео в URL, вы просто называете OpenYouTubePlayerActivity Намерение

Intent intent = new Intent(null, Uri.parse("ytv://"+v), this, 
      OpenYouTubePlayerActivity.class); 
startActivity(intent); 

где v это идентификатор видео.

Добавьте следующие разрешения в файле манифеста:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

, а также объявить эту деятельность в файле манифеста:

<activity 
     android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity> 

Дополнительная информация может быть получена из первых порций this кода файла ,

Надеюсь, что это поможет кому угодно!

1

У Google есть YouTube Android Player API, который позволяет включать функции воспроизведения видео в приложения Android. Сам API очень прост в использовании и работает хорошо. Например, вот как создать новое действие для воспроизведения видео с помощью API.

Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false);   
startActivity(intent); 

Для получения более подробной информации см. this.

-1
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM")); 
startActivity(intent); 
+0

Действительно? «Я не хочу воспроизводить видео, используя намерение по умолчанию», от второй до последней строки. – Squirrelkiller

+0

Это всего лишь повторение [этого существующего ответа] (https://stackoverflow.com/a/4654937). – Pang

2

Вы можете использовать IFRAME, как описано в https://developers.google.com/youtube/iframe_api_reference

Я не следуя Google советует точно, но это код, я использую, и она работает штраф

public class CWebVideoView { 

    private String url; 
    private Context context; 
    private WebView webview; 
    private static final String HTML_TEMPLATE = "webvideo.html"; 

    public CWebVideoView(Context context, WebView webview) { 
     this.webview = webview; 
     this.context = context; 
     webview.setBackgroundColor(0); 
     webview.getSettings().setJavaScriptEnabled(true); 
    } 

    public void load(String url){ 
     this.url = url; 
     String data = readFromfile(HTML_TEMPLATE, context); 
     data = data.replace("%1", url); 
     webview.loadData(data, "text/html", "UTF-8"); 
    } 

    public String readFromfile(String fileName, Context context) { 
     StringBuilder returnString = new StringBuilder(); 
     InputStream fIn = null; 
     InputStreamReader isr = null; 
     BufferedReader input = null; 
     try { 
      fIn = context.getResources().getAssets().open(fileName, Context.MODE_WORLD_READABLE); 
      isr = new InputStreamReader(fIn); 
      input = new BufferedReader(isr); 
      String line = ""; 
      while ((line = input.readLine()) != null) { 
       returnString.append(line); 
      } 
     } catch (Exception e) { 
      e.getMessage(); 
     } finally { 
      try { 
       if (isr != null) 
        isr.close(); 
       if (fIn != null) 
        fIn.close(); 
       if (input != null) 
        input.close(); 
      } catch (Exception e2) { 
       e2.getMessage(); 
      } 
     } 
     return returnString.toString(); 
    } 

    public void reload() { 
     if (url!=null){ 
      load(url); 
     } 
    } 
} 

в/активы У меня есть файл под названием webvideo.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <style> 
      iframe { border: 0; position:fixed; width:100%; height:100%; bgcolor="#000000"; } 
      body  { margin: 0; bgcolor="#000000"; } 
     </style>   
    </head> 
    <body> 
     <iframe src="%1" frameborder="0" allowfullscreen></iframe> 
    </body> 
</html> 

и теперь я определяю веб-просмотр внутри своего Основной макет

<WebView 
    android:id="@+id/video" 
    android:visibility="gone" 
    android:background="#000000" 
    android:layout_centerInParent="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

и я использую CWebVideoView внутри моей деятельности

videoView = (WebView) view.findViewById(R.id.video); 
videoView.setVisibility(View.VISIBLE); 
cWebVideoView = new CWebVideoView(context, videoView); 
cWebVideoView.load(url); 
+0

Спасибо за ваш ответ. Можете ли вы поставить скриншот, чтобы мы могли видеть результат кода? –

1

Я не хочу, чтобы иметь приложение настоящее YouTube на устройстве, так что я использовал этот учебник:

http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html

... для создания этого кода в моем приложении:

WebView mWebView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.video_webview); 
    mWebView=(WebView)findViewById(R.id.videoview); 

    //build your own src link with your video ID 
    String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>"; 

    mWebView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return false; 
     } 
    }); 
    WebSettings ws = mWebView.getSettings(); 
    ws.setJavaScriptEnabled(true); 
    mWebView.loadData(videoStr, "text/html", "utf-8"); 

} 

//video_webview 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="0dp" 
    android:layout_marginRight="0dp" 
    android:background="#000000" 
    android:id="@+id/bmp_programme_ll" 
    android:orientation="vertical" > 

    <WebView 
    android:id="@+id/videoview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout>  

Это работало именно так, как я этого хотел. Это не автовоспроизведение, а потоки видео в моем приложении. Стоит отметить, что некоторые ограниченные видео не будут воспроизводиться при встраивании.

+0

Да, вы прямо встроены в свое приложение с веб-просмотром без youtube api. Хороший способ загрузить видео в приложение. Спасибо JanB –

0
String video = "https://www.youtube.com/watch?v=SrPHLj_q_OQ"; 

Intent openVideo = new Intent(Intent.ACTION_VIEW); 

openVideo.setDataAndType(Uri.parse(video), "video/*"); 

startActivity(openVideo); 
2

Используйте API для Android-плееров YouTube.

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

tools:context="com.example.andreaskonstantakos.vfy.MainActivity"> 

<com.google.android.youtube.player.YouTubePlayerView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:visibility="visible" 
    android:layout_centerHorizontal="true" 
    android:id="@+id/youtube_player" 
    android:layout_alignParentTop="true" /> 

<Button 
android:text="Button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:layout_centerHorizontal="true" 
android:layout_marginBottom="195dp" 
android:visibility="visible" 
android:id="@+id/button" /> 


</RelativeLayout> 

MainActivity.java:

package com.example.andreaskonstantakos.vfy; 


import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import com.google.android.youtube.player.YouTubeBaseActivity; 
import com.google.android.youtube.player.YouTubeInitializationResult; 
import com.google.android.youtube.player.YouTubePlayer; 
import com.google.android.youtube.player.YouTubePlayerView; 



public class MainActivity extends YouTubeBaseActivity { 

YouTubePlayerView youTubePlayerView; 
Button button; 
YouTubePlayer.OnInitializedListener onInitializedListener; 

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

    youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player); 
    button = (Button) findViewById(R.id.button); 


    onInitializedListener = new YouTubePlayer.OnInitializedListener(){ 

     @Override 
     public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { 

      youTubePlayer.loadVideo("Hce74cEAAaE"); 

      youTubePlayer.play(); 
    } 

     @Override 
     public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

     } 
    }; 

    button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener); 
     } 
    }); 
} 
} 

и класс PlayerConfig.java:

package com.example.andreaskonstantakos.vfy; 

/** 
* Created by Andreas Konstantakos on 13/4/2017. 
*/ 

public class PlayerConfig { 

PlayerConfig(){} 

public static final String API_KEY = 
"xxxxx"; 
} 

Заменить "Hce74cEAAaE" с видео-ID от https://www.youtube.com/watch?v=Hce74cEAAaE. Получите ваш API_KEY с Console.developers.google.com, а также замените его на PlayerConfig.API_KEY. Для получения дополнительной информации вы можете следовать следующей учебник шаг за шагом: https://www.youtube.com/watch?v=3LiubyYpEUk

Смежные вопросы