繁体   English   中英

RTSP 直播 stream 上 Android

[英]RTSP live stream on Android

我尝试在 Android 上制作一个现场 stream。 我尝试了很多方法,但都没有奏效。 我该怎么做?

这是 RTSP 的示例:

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(KralStream.getTvStreamUrl().toString());
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);

例外:05-26 10:22:46.186:
错误/媒体播放器服务(10157):
创建 PVPlayer 05-26 10:23:06.382:
错误/播放器驱动程序(10157):命令
PLAYER_INIT 完成但出现错误或
信息-1 05-26 10:23:06.382:
错误/媒体播放器(23800):错误(1,
-1) 05-26 10:23:06.382: 错误/MediaPlayer(23800): 错误 (1,-1)

实时传输协议:

VideoView videoView = (VideoView)findViewById(R.id.videoView1);
Uri uri = Uri.parse("rtsp://strm-3.tr.medianova.tv/rkraltv/rkraltv");
videoView.setVideoURI(uri);
videoView.start();

它给出了这个消息:

“对不起,这个视频
不能玩。”例外;05-26
10:40:08.979:
错误/媒体播放器服务(10157):
创建 PVPlayer 05-26 10:40:09.188:
INFO/ActivityManager(10163):显示
活动
com.giantrabbit.nagare/.KralTvNow:433
毫秒(总共 433 毫秒)05-26 10:40:11.702:
WARN/PowerManagerService(10163):定时器
0x3->0x3|0x1 05-26 10:40:29.061:
警告/媒体播放器(24284):信息/警告
(1, 26) 05-26 10:40:29.061:
信息/媒体播放器(24284):信息(1,26)
05-26 10:40:29.100:
错误/播放器驱动程序(10157):命令
PLAYER_INIT 完成但出现错误或
信息-1 05-26 10:40:29.104:
错误/媒体播放器(24284):错误(1,
-1) 05-26 10:40:29.108: 错误/MediaPlayer(24284): 错误 (1,-1)

实时传输协议:

mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
extras = getIntent().getExtras();

public void play() {
    try {
        Uri video = KralStream.getTvStreamUrl();
        Toast.makeText(this, video.toString(), Toast.LENGTH_SHORT).show();
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setDataSource(path);
        mMediaPlayer.setDisplay(holder);
        mMediaPlayer.prepare();
        mMediaPlayer.setOnBufferingUpdateListener(this);
        mMediaPlayer.setOnCompletionListener(this);
        mMediaPlayer.setOnPreparedListener(this);
        mMediaPlayer.setOnVideoSizeChangedListener(this);
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    }
    catch (Exception e) {
        Log.e(TAG, "error: " + e.getMessage(), e);
    }
}

例外:

05-26 10:36:57.589:
错误/媒体播放器服务(10157):
创建 PVPlayer 05-26 10:37:20.542:
错误/播放器驱动程序(10157):命令
PLAYER_INIT 完成但出现错误或
信息-1 05-26 10:37:20.542:
错误/媒体播放器(24240):错误(1,
-1) 05-26 10:37:20.565: 警告/播放器驱动程序 (10157):
PVMFInfoErrorHandlingComplete 05-26
10:37:20.682:
错误/MediaPlayerDemo(24240):错误:
准备失败。:状态=0x1 05-26
10:37:20.682:
错误/MediaPlayerDemo(24240):
java.io.IOException:准备失败。:
状态=0x1 05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.media.MediaPlayer.prepare(Native
方法) 05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
com.giantrabbit.nagare.KralTvNow.play(KralTvNow.java:162)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
com.giantrabbit.nagare.KralTvNow.surfaceCreated(KralTvNow.java:215)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.SurfaceView.updateWindow(SurfaceView.java:536)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.SurfaceView.dispatchDraw(SurfaceView.java:339)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.drawChild(ViewGroup.java:1638)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.drawChild(ViewGroup.java:1638)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.View.draw(View.java:6796)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.widget.FrameLayout.draw(FrameLayout.java:352)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.drawChild(ViewGroup.java:1640)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.View.draw(View.java:6796)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.widget.FrameLayout.draw(FrameLayout.java:352)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1894)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewRoot.draw(ViewRoot.java:1407)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.os.Handler.dispatchMessage(Handler.java:99)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.os.Looper.loop(Looper.java:123)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
android.app.ActivityThread.main(ActivityThread.java:4627)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
java.lang.reflect.Method.invokeNative(Native
方法) 05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
java.lang.reflect.Method.invoke(Method.java:521)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
05-26 10:37:20.682:
错误/MediaPlayerDemo(24240):在
dalvik.system.NativeStart.main(Native
方法) 05-26 10:37:20.737:
信息/媒体播放器(24240):信息(1,26)
05-26 10:37:20.737:
错误/媒体播放器(24240):错误(1,-1)
05-26 10:37:20.868:
INFO/ActivityManager(10163):显示
活动
com.giantrabbit.nagare/.KralTvNow:
25864 毫秒(共 25864 毫秒) 05-26
10:37:23.777:
WARN/PowerManagerService(10163):定时器
0x3->0x3|0x1

这是 HTTP 的示例:

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource("http://ikral.garantisistem.com:1935/ikral/smil:kral.smil/playlist.m3u8");
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);

例外:

05-26 10:16:24.276:
错误/媒体播放器服务(10157):
创建 PVPlayer 05-26 10:16:24.292:
错误/(10157):IIIIII里面
的构造函数
PVMFMemoryBufferWriteDataStreamImpl
05-26 10:16:24.346:
INFO/PlayerDriver(10157):缓冲
(100) 05-26 10:16:24.346:
错误/(10157):IIIIII里面
的构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.346:错误/(10157):
IIIIIII 的内部构造函数
PVMFMemoryBufferReadDataStreamImpl
05-26 10:16:24.350:
警告/媒体播放器(23736):信息/警告
(1, 26) 05-26 10:16:24.354:
错误/播放器驱动程序(10157):命令
PLAYER_INIT 完成但出现错误或
信息-10 05-26 10:16:24.354:
错误/媒体播放器(23736):错误(-10,
-10) 05-26 10:16:24.354: 警告/PlayerDriver(10157):
PVMFInfoErrorHandlingComplete 05-26
10:16:24.393:信息/媒体播放器(23736):
信息 (1,26) 05-26 10:16:24.393:
错误/媒体播放器(23736):错误
(-10,-10)

HTTP:

VideoView videoView = (VideoView)findViewById(R.id.videoView1);
Uri uri = Uri.parse("http://ikral.garantisistem.com:1935/ikral/smil:kral.smil/playlist.m3u8");
videoView.setVideoURI(uri);
videoView.start();

它给出了以下信息:

“抱歉,这个视频无法播放。”

在此处输入图像描述

请像这样在您的 AndroidManifest.xml 文件中添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

Android 可以在没有任何 flash 的情况下处理 RTSP 流。 您尝试直接在浏览器地址栏中输入URL ,外部播放器会自动打开播放URL。

如果出现错误,则需要检查 Android 支持的视频格式。 您可以查看来自Wowza Media Server的 RTSP stream URL 示例。 Reference the URL for the RTSP stream troubleshooting from Wowza Media Server: http://www.wowza.com/forums/content.php?62-RTSP-streaming-troubleshooting-guide-%28RTSP-RTP-playback%29 . 我希望这有帮助。

这是因为视频的格式。 尝试使其成为3GP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM