我正在尝试在我的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” 主要调试:杀死解码器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
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版。
答案 0 :(得分:0)
将OP作为答案发布,因为OP使用此建议解决了它,因此它可以帮助其他寻求类似解决方案的人。
有一个开源项目可以在VideoView
内播放YouTube视频,称为android-youtube-player。还提供了一个样本Activity
,以便可以测试该组件。