Android - 找不到Youtube 3gp文件

时间:2012-05-18 13:00:57

标签: android youtube-api android-video-player

我正在尝试在我的Android应用上播放YouTube视频,但我无法通过Youtube Api返回3gp网址。 我试图在VLC播放器和QuickTime播放器中打开它,但响应始终是播放器无法接收数据。 这是VLC播放器日志:

  

主要调试: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',FIFO中的0个PES   avcodec调试:ffmpeg编解码器(AMR窄带)停止   主要调试:删除模块“avcodec”   主要调试:杀死解码器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',FIFO中的0 PES   avcodec调试:ffmpeg编解码器(AMR窄带)停止   主要调试:删除模块“avcodec”   主要调试:杀死解码器fourcc`samr',FIFO中的0 PES   主要调试:删除模块“live555”   主要调试:程序不再包含ES   主要调试:线程结束   主要调试:死输入   主要调试:没有请求更改项目(当前0/1)   主要调试:没什么可玩的   macosx debug:输入已停止,刷新界面   主要调试:TIMER输入启动'rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp':449.262 ms - 总计449.262 ms / 1 intvls(Avg 449.262 ms)< / p>

这是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:线程退出,未捕获异常(group = 0x409c01f8)   05-18 14:51:54.088:E / AndroidRuntime(2152):致命异常:主要   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):在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):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)   05-18 14:51:54.088:E / AndroidRuntime(2152):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:140)   05-18 14:51:54.088:E / AndroidRuntime(2152):在android.view.Window $ LocalWindowManager.addView(Window.java:537)   05-18 14:51:54.088:E / AndroidRuntime(2152):在android.app.Dialog.show(Dialog.java:278)   05-18 14:51:54.088:E / AndroidRuntime(2152):在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):在android.media.MediaPlayer $ EventHandler.handleMessage(MediaPlayer.java:1553)   05-18 14:51:54.088:E / AndroidRuntime(2152):在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):在android.app.ActivityThread.main(ActivityThread.java:4424)   05-18 14:51:54.088:E / AndroidRuntime(2152):at java.lang.reflect.Method.invokeNative(Native Method)   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(Native Method)

我的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版。

1 个答案:

答案 0 :(得分:0)

将OP作为答案发布,因为OP使用此建议解决了它,因此它可以帮助其他寻求类似解决方案的人。

有一个开源项目可以在VideoView内播放YouTube视频,称为android-youtube-player。还提供了一个样本Activity,以便可以测试该组件。