Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

播放多个相同IP的RTSP地址时,播放的视频变成第一个打开的视频 #1795

Closed
alaj opened this issue Feb 5, 2019 · 3 comments

Comments

@alaj
Copy link

alaj commented Feb 5, 2019

问题描述:
首先,我把IP摄像头映射到2个公网地址,如下:
第一个视频:rtsp://公网地址:7000/h265/ch1/main/av_stream
第二个视频:rtsp://公网地址:6999/h265/ch1/main/av_stream
然后使用了多种方式来尝试播放(SimpleListVideo、MultiSampleVideo),都会出现如果先播放了其中一个视频,再播放另一个视频,那么两个视频都会变成首先被播放的视频。
例如使用MultiSampleVideo进行同时播放,首先播放的是rtsp://公网地址:7000/h265/ch1/main/av_stream,再同时播放rtsp://公网地址:6999/h265/ch1/main/av_stream,会发现两个视频内容一样,都是rtsp://公网地址:7000/h265/ch1/main/av_stream的内容。反过来,如果先播放第二个地址、再播放第一个地址,那么两个视频都会播放第二个地址。
然后我用内网地址来测试这两个视频,又完全正常,会播放分别各自的内容,内网地址如下:
rtsp://192.168.1.29/h265/ch1/main/av_stream
rtsp://192.168.0.88/h265/ch1/main/av_stream
公网地址仅仅是内网地址做了路由器映射
请问这种情况如何解决?是不是我设置少了什么东西?

设置的播放模式如下:
PlayerFactory.setPlayManager(IjkPlayerManager::class.java)//ijk模式

val list = ArrayList()
var videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp")
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_flags", "prefer_tcp")
list.add(videoOptionModel)
videoOptionModel =
VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "allowed_media_types", "video") //根据媒体类型来配置
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "timeout", 20000)
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "buffer_size", 1316)
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "infbuf", 1) // 无限读
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzemaxduration", 100)
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probesize", 10240)
list.add(videoOptionModel)
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "flush_packets", 1)
list.add(videoOptionModel)
// 关闭播放器缓冲,这个必须关闭,否则会出现播放一段时间后,一直卡主,控制台打印 FFP_MSG_BUFFERING_START
videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0)
list.add(videoOptionModel)

videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1)
list.add(videoOptionModel)
GSYVideoManager.instance().setOptionModelList(list)

补充:
我又测试了一下,即使是用域名也会出现这样的问题。但是如果第一个视频用公网IP地址,第二个视频用域名(指向相同的IP),则也正常播放没有问题。

问题机型/系统:

Android 6.0 API 23 模拟器

GSY依赖版本

implementation 'com.shuyu:gsyVideoPlayer-java:6.0.3'
implementation 'com.shuyu:gsyVideoPlayer-ex_so:6.0.3'
@alaj alaj changed the title 播放2个不同的RTSP地址时,如果只是端口不一样,则只会播放第一个打开的视频 播放多个相同IP的RTSP地址时,播放的视频变成第一个打开的视频 Feb 5, 2019
@CarGuo
Copy link
Owner

CarGuo commented Feb 11, 2019

目前对于同域下的不同端口播放确实不支持

@CarGuo CarGuo closed this as completed Feb 17, 2019
@honganxue
Copy link

有没有解决方案

@CarGuo
Copy link
Owner

CarGuo commented Dec 27, 2019

@honganxue #2112

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants