Я пытаюсь воспроизвести видео на YouTube в приложении для Android, но я не могу получить URL-адрес 3gp, который вернул меня из Youtube Api. Я попытался открыть его также в проигрывателе VLC и проигрывателе QuickTime, но ответ всегда заключается в том, что плеер не может получать данные. Вот журнал VLC Player:
основной отладочный
rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' successfully opened live555 warning: no data received in 10s. Switching to TCP avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
:rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' successfully opened live555 warning: no data received in 10s. Switching to TCP avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' successfully opened live555 warning: no data received in 10s. Switching to TCP avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
h263 ', 0 PES в FIFO avcodec debug: ffmpeg codec (узкая полоса AMR) остановлена главная отладка: удаление модуля " avcodec "основной отладчик: kill decoder fourccsamr', 0 PES in FIFO main debug: Program doesn't contain anymore ES live555 debug: RTP subsession 'video/H263-2000' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: trying to use direct rendering avcodec debug: ffmpeg codec (H263) started main debug: using decoder module "avcodec" main debug: TIMER module_need(): 0.758 ms - Total 0.758 ms/1 intvls (Avg 0.758 ms) main debug: thread (decoder) created at priority 0 (../../src/input/decoder.c:301) main debug: thread started live555 debug: RTP subsession 'audio/AMR' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: ffmpeg codec (AMR narrow band) started avcodec debug: Using 192000 bytes output buffer main debug: using decoder module "avcodec" main debug: TIMER module_need(): 391.931 ms - Total 391.931 ms/1 intvls (Avg 391.931 ms) main debug: thread (decoder) created at priority 22 (../../src/input/decoder.c:301) main debug: thread started live555 debug: setup start: 0.000000 stop:28.666000 live555 debug: play start: 0.000000 stop:28.666000 live555 error: no data received in 10s, aborting main debug: EOF reached main debug: finished input avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
samr', 0 PES in FIFO main debug: Program doesn't contain anymore ES live555 debug: RTP subsession 'video/H263-2000' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: trying to use direct rendering avcodec debug: ffmpeg codec (H263) started main debug: using decoder module "avcodec" main debug: TIMER module_need(): 0.758 ms - Total 0.758 ms/1 intvls (Avg 0.758 ms) main debug: thread (decoder) created at priority 0 (../../src/input/decoder.c:301) main debug: thread started live555 debug: RTP subsession 'audio/AMR' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: ffmpeg codec (AMR narrow band) started avcodec debug: Using 192000 bytes output buffer main debug: using decoder module "avcodec" main debug: TIMER module_need(): 391.931 ms - Total 391.931 ms/1 intvls (Avg 391.931 ms) main debug: thread (decoder) created at priority 22 (../../src/input/decoder.c:301) main debug: thread started live555 debug: setup start: 0.000000 stop:28.666000 live555 debug: play start: 0.000000 stop:28.666000 live555 error: no data received in 10s, aborting main debug: EOF reached main debug: finished input avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
h263 ', 0 PES в FIFO avcodec debug: ffmpeg кодек (узкая полоса AMR) остановил основную отладку: удаление модуля "avcodec" главная отладка: дешифратор убийства fourcc "samr", 0 PES в основной отладочной версии FIFO: удаление основного модуля "live555": программа больше не содержит основной отладки ES: отладка с завершением потока: отложенный основной отладочный вход: изменение элемента без запроса (текущий 0/1) main debug: нечего отлаживать macosx: вход остановлен, обновляется основной отладочный интерфейс: запуск запуска TIMER для 'rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp': 449.262 мс - всего 449,262 мс /1 инт. (Avg 449,262 мс)
И это журнал Android:
05-18 14: 51: 42.008: D/MediaPlayer (2152): Не удалось открыть файл на стороне клиента, попробуйте серверную часть 05-18 14: 51: 42.258: D/MediaPlayer (2152): getMetadata 05-18 14: 51: 53.823: E/MediaPlayer (2152): ошибка (1, -2147483648) 05-18 14: 51: 53.823: E/MediaPlayer (2152): ошибка (1, -2147483648) 05-18 14:51: 53.823: D/VideoView (2152): Ошибка: 1, -2147483648 05-18 14: 51: 54.060: D/AndroidRuntime (2152): выключение VM 05-18 14: 51: 54.060: W/dalvikvm (2152): threadid = 1: выход с отключенным исключением (группа = 0x409c01f8) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): FATAL EXCEPTION: main 05-18 14: 51: 54.088: E/AndroidRuntime (2152): android.view.WindowManager $ BadTokenException: невозможно добавить окно-токен android.app.LocalActivityManager$LocalActivityRecord@418c8408 недействительно; работает ли ваша деятельность? 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.view.ViewRootImpl.setView(ViewRootImpl.java:513) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): на android. view.WindowManagerImpl.addView(WindowManagerImpl.java:301) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) 05-18 14:51: 54.088: E/AndroidRuntime (2152): at android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:140) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.view.Window $ LocalWindowManager.addView(Window.java:537) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.app.Dialog.show(Dialog.java:278) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.app.AlertDialog $ Builder.show(AlertDialog.java:932) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): на android.widget.VideoView $ 4.onError(VideoView.java: 382) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.media.MediaPlayer $ EventHandler.handleMessage(MediaPlayer.java:1553) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.os.Handler.dispatchMessage(Handler.java:99) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): на android.os.Looper.loop(Looper.java:137) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at android.app.ActivityThread.main(ActivityThread.java:4424) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at java.lang.reflect.Method.invokeNative (собственный метод) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at java.lang.reflect.Method.invoke(Method.java: 511) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 05-18 14: 51: 54.088: E/AndroidRuntime (2152): at dalvik.system.NativeStart.main( Нативный метод)
И мой класс VideoActivity для воспроизведения видео:
public class VideoActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
VideoView videoView = new VideoView(this);
String urlRtsp = "rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp";
videoView.setVideoURI(Uri.parse(urlRtsp));
videoView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
LinearLayout main = (LinearLayout) findViewById(R.id.video_layout);
main.addView(videoView);
}
}
То, что я пытаюсь понять, это проблема Youtube или если что-то не так в моем коде. Я пробовал со многими видеороликами, один в коде - это только моя последняя попытка. Я использую Android SDK версии 15.
Проводя его в качестве ответа, поскольку ОП решила его, используя это предложение, чтобы оно могло помочь любому, кто ищет аналогичное решение.
Существует проект с открытым исходным кодом, который позволяет воспроизводить видеоролики YouTube из VideoView
и называется android-youtube-player. Существует также пример Activity
который позволяет тестировать компонент.