Ответ 1
Если вы готовы выполнять работу в новом действии, на устройстве будет работать не следующее:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Я пишу приложение для воспроизведения видео с 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, так и на эмуляторе (у эмулятора есть некоторые проблема брандмауэра согласно списку рассылки) Вот сообщение об ошибке
ERROR/PlayerDriver (35): команда PLAYER_INIT завершена с ошибкой или информация PVMFFailure
Второй метод:
Взломать путь для получения 3gp файла из http://www.youtube.com/get_video?v= & t = < > & < > . После получения пути к файлу я могу вызвать setVideoURI, и он воспроизводит хорошо. Но это способ взломать это требование. Я также проверил приложение Youtube, он также делает способ взлома игры URL-адрес youtube (проверено с помощью logcat)
Я попытался перейти с VideoView на MediaPlayer, но никаких изменений в ошибке.
Существует ли "чистый" способ сделать это?
Пожалуйста, дайте мне знать ваши мысли.
Если вы готовы выполнять работу в новом действии, на устройстве будет работать не следующее:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Иногда Uri.parse возвращает "null", потому что can not анализирует протокол rtsp вместо http-протокола.
Посмотрите его с Log logat 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();
Я впечатлен тем, что грязный способ работает вообще! Если у вас есть рабочее решение, пойдите с ним. Я не думаю, что есть чистый способ получить поток RTSP, работающий в SDK.
мы столкнулись с очень похожей проблемой.
В настоящий момент я нахожусь на первом этапе своего проекта, и я пытаюсь сделать видеообзор просто работающим. Я беру данные отсюда: http://gdata.youtube.com/demo/, и я тестирую все ссылки на видео.
Видео RTSP 3GP действительно действительно действительно видео низкого качества.... и нет никакого способа получить доступ к видео mp4 (хорошего качества). Я действительно не знаю, как заставить его работать, потому что я думаю, что потоки MP4 доступны только для премиум-разработчиков....
Бросьте взгляд на Youtube API
Я думаю, что это также использует приложение youtube (чего вы не хотите)
Но просто обратитесь, может быть, вы найдете ключ для его решения.
Я показывал видео 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
}
Заголовок на видео указывает, что он работает для Android. Итак, попробуйте хорошую видеосвязь для экспериментов. Вот один из них, который я использую:
RTSP://184.72.239.149/vod/mp4: BigBuckBunny_115k.mov
Я отлично работаю на планшетах Nexus и Samsung.
У вас есть доступ к Интернету? если нет, добавьте разрешение Интернета в файл манифеста
<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