Потоковое видео Youtube - PullRequest
       29

Потоковое видео Youtube

28 голосов
/ 17 июня 2009

Я пишу приложение для воспроизведения видео на YouTube с использованием потоковой передачи.

Первый метод:

Я получаю URL RTSP для видео с помощью API GData. Вот код для воспроизведения URL RTSP.

   VideoView mVideoView = new VideoView(this);
   setContentView(mVideoView);
   mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
   mVideoView.start();

Но выдает ошибку как на устройстве G1, так и на эмуляторе (эмулятор имеет проблема с брандмауэром согласно списку рассылки) Вот сообщение об ошибке

ОШИБКА / PlayerDriver (35): команда PLAYER_INIT завершена с ошибкой или информация PVMFFailure

Второй метод:

Хакерский способ получить путь к файлу 3gp от http://www.youtube.com/get_video?v=&t=<>&<>.. После получения пути к файлу, и я могу вызвать setVideoURI, и он играет хорошо. Но это хакерский способ выполнить требование. Я проверил приложение Youtube также, он также делает взломать способ играть URL-адрес YouTube (проверено с помощью logcat)

Я пытался перейти с VideoView на MediaPlayer, но ошибка не изменилась.

Есть ли "Чистый" способ сделать это?

Пожалуйста, дайте мне знать ваши мысли.

Ответы [ 8 ]

2 голосов
/ 28 мая 2010

Иногда Uri.parse возвращает null, потому что не может проанализировать протокол rtsp вместо протокола http.

Посмотрите это с помощью LogCat LogCat Uri.parse(rtspURL).toString(), и вы не увидите ничего написанного. или только сделайте Log.d("tag", Uri.parse);, и то же самое будет возвращено.

Попробуйте найти другой способ разбора (создания) Uri.

Я бы попробовал с этим и запустил:

String urlVideo = <your rtspURL>
VideoView video = (VideoView)findViewById(R.id.VideoView01);
Log.d(tag , urlVideo);
video.setVideoURI(Uri.parse(urlVideo));
MediaController mc = new MediaController(this);
video.setMediaController(mc);
video.requestFocus();
video.start();
mc.show();
2 голосов
/ 21 августа 2009

Если вы хотите выполнить работу в новом задании, на устройстве будет работать следующее, но не на эмуляторе:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));

1 голос
/ 07 января 2013

брось взгляд на Youtube API

Я думаю, что это также использовать приложение YouTube (что вы не хотите)

Но просто обратитесь, может быть, вы найдете какой-то ключ, чтобы решить эту проблему

1 голос
/ 28 апреля 2012

мы столкнулись с очень похожей проблемой.

В данный момент я на первом этапе своего проекта и пытаюсь сделать так, чтобы видеовидение просто работало. Я беру данные отсюда: http://gdata.youtube.com/demo/ и проверяю все ссылки на видео.

Видео RTSP 3GP - это действительно очень низкокачественное видео ... и нет никакого доступа к mp4 (хорошее качество) видео. Я действительно не знаю, как заставить это работать, потому что я думаю, что потоки MP4 доступны только для разработчиков премиум-класса ....

1 голос
/ 17 июня 2009

Я впечатлен, что грязный путь работает вообще! Если у вас есть рабочее решение, идите с ним. Я не думаю, что есть чистый способ заставить потоковую передачу RTSP работать в SDK.

0 голосов
/ 31 декабря 2014

есть ли у вас доступ к интернету? если нет, добавьте интернет-разрешение в файл манифеста

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

, а также, пожалуйста, попробуйте следующие URI:

rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov

http://www.wowza.com/_h264/BigBuckBunny_175k.mov
0 голосов
/ 03 июля 2014

Заголовок на видео указывает, что он работает для Android. Итак, попробуйте хорошую ссылку на видео для экспериментов. Вот тот, который я использую:

RTSP: //184.72.239.149/vod/mp4: BigBuckBunny_115k.mov

Отлично работает на планшетах Nexus и Samsung.

0 голосов
/ 18 июня 2011

Я показал видео на YouTube со следующим кодом. Я надеюсь, что это полезно, но дайте мне знать, как это можно улучшить.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startActivity(new Intent(Intent.ACTION_VIEW, 
                  Uri.parse("http://www.youtube.com/watch?v=...")));
}

public void onPrepared(MediaPlayer mp) {
     // TODO Auto-generated method stub
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...