it-swarm.com.ru

Как воспроизвести видео YouTube в моем приложении Android?

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

77
user446366

Это событие btn click

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, где вы можете показать свое видео

58
Parag Chauhan

Ознакомьтесь с официальным YouTube Android Player API .

22
Nirvana Tikku

Меры

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

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

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

Также проверьте: Android YouTube приложение Play Video Intent уже обсуждали это подробно.

15
Naresh

Используйте YouTube Android Player API.

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

8
Andreas Konstantakos

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

5
androidCoder

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

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

4
Arjun

Вы можете использовать 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);
        }
    }
}

в/assets у меня есть файл с именем 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);
2
jmhostalet

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

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

Смотрите это для более подробной информации.

2
Sapan Diwakar

Я не хотел, чтобы приложение 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>     

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

2
JanB

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

Вы можете воспроизводить видео на 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 файла кода.

Надеюсь, это кому-нибудь поможет!

2

вы можете использовать проект this для воспроизведения любого видео в своем приложении Android. Теперь для другого видео или идентификатора видео ... вы можете сделать это 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 открыть это, и это как xml [1st_file] файл на вашем рабочем столе после того, как он создаст новый XML-файл в вашем project или загрузите этот [1st_file] сохраненный файл в свой проект, щелкните правой кнопкой мыши в нем и откройте его с файлом xml_editor, здесь вы найдете идентификатор видео конкретного видео.

enter image description here

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