【发布时间】:2017-03-12 22:52:33
【问题描述】:
我从任何人那里得到一个网址,格式如下:
http://ak...
有一个使用 flashplayer 播放的视频。
我想从 Android 应用程序流式传输此视频,并使用 videoview 和 mediacontroller 进行了尝试。但它不起作用,我不知道该怎么办了。
你能给我一些关键字来解决这个问题,所以我可以在互联网上搜索它。
try {
String videoUrl= "http://ak;
// Start the MediaController
MediaController mediacontroller = new MediaController(
LiveStreamActivity.this);
mediacontroller.setAnchorView(videoview);
// Get the URL from String VideoURL
Uri video = Uri.parse(videoUrl);
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
startTimer();
} catch (Exception e) {
e.printStackTrace();
}
videoview.requestFocus();
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// Close the progress bar and play the video
@Override
public void onPrepared(MediaPlayer mp) {
videoview.start();
checkBuffering();
}
});
这是我的代码,logcat 是:
I/MediaPlayer: path is null
D/MediaPlayer: setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: http://ak-rt01.mni.thm.de:3000/#/playlist/57b03967e4da719c28d9fe2d
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1052)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:907)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:834)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:987)
at android.widget.VideoView.openVideo(VideoView.java:337)
at android.widget.VideoView.access$2100(VideoView.java:71)
at android.widget.VideoView$7.surfaceCreated(VideoView.java:617)
at android.view.SurfaceView.updateWindow(SurfaceView.java:601)
at android.view.SurfaceView.access$000(SurfaceView.java:94)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:183)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:879)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2129)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1234)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6465)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:573)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
D/MediaPlayer: Couldn't open file on client side, trying server side
V/MediaPlayer: setVideoSurfaceTexture
V/MediaPlayer-JNI: setAudioStreamType: 3
V/MediaPlayer: MediaPlayer::setAudioStreamType
V/MediaPlayer: setVideoSurfaceTexture
V/MediaPlayer: prepareAsync
D/ProgressBar: setProgressDrawable drawableHeight = 48
D/AbsSeekBar: AbsSeekBar Constructor: misSeebarAnimationAvailable = true
V/MediaPlayer: message received msg=100, ext1=1, ext2=-1004
E/MediaPlayer: error (1, -1004)
V/MediaPlayer: callback application
V/MediaPlayer: back from callback
E/MediaPlayer: Error (1,-1004)
D/VideoView: Error: 1,-1004
【问题讨论】:
-
你能从你的 logcat 中发布一些日志吗?通常当媒体控制器发生故障时,它会打印几个警告或错误日志。最坏的情况,您可以在网络浏览器中打开链接 Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("ak-rt01.mni.thm.de:3000/#/playlist/…)); startActivity(i);
-
@oathkeeper 我更新了帖子。你能认出什么吗?
-
我已经添加了一个答案来回应您的询问。媒体控制器点击了期望视频的 URL,但点击了一些 html 页面。如果您还有任何疑问,请告诉我...
-
@oathkeeper 感谢您快速而翔实的回答。我将测试所有三种备选方案的可行性。你太棒了。我为这段代码浪费了 2 天时间。谢谢! (我会点击“有用的答案”,但我没有 15 名声望。)
-
当然,任何时候 :) 。如果你在其他地方卡住了,请告诉我。使用此 URL techslides.com/demos/sample-videos/small.mp4 测试您的代码。它包含一个有效的视频 URL。
标签: android flash url video android-mediaplayer