android - 在方向更改时保存实时视频流
问题描述
我正在尝试制作一个显示实时流视频(目前来自 twitch)的应用程序,仅此而已。
我遇到了方向更改的问题。每当发生方向更改时,它都会重新加载流。对于通常的视频,我会节省时间并从那时起继续播放,但对于实时流式视频,它将无法正常工作。我也尝试过android:configChanges="orientation|screenSize"
在清单中使用,但有人指出使用它不是一个好习惯。
我也在 MVVM 中做这个项目,所以任何存储的数据很可能在ViewModel
.
这是我的代码:
视频活动
class VideoActivity : AppCompatActivity() {
lateinit var videoViewModel: VideoViewModel
lateinit var videoView : VideoView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_video)
videoView = findViewById(R.id.videoView)
videoViewModel = ViewModelProviders.of(this).get(VideoViewModel::class.java)
videoViewModel.videoData.observe(this, Observer {
val video = Uri.parse(it)
videoView.setVideoURI(video)
videoView.requestFocus()
videoView.setOnPreparedListener {
videoView.start()
}
})
}
}
视频视图模型
class VideoViewModel (application: Application) : AndroidViewModel(application) {
val videoData : MutableLiveData<String> = MutableLiveData()
init {
val videoURL =
"https://video-weaver.fra02.hls.ttvnw.net/v1/playlist/CtIDniDZISZg6pdwWWtn7F96H-gSYWvF3ry6fGuRtSEKjCX6-K5R7ggMJhI7cDgngS6SeqgYVWIJKC-qEyy94XusXug8TT1s6mfDq1bQ2id7XeHKZgYS0fucGPPV-pDBCXFkDxLUclYsSon7jxM-t5ydBqOn5N1SOh2Jf1DBr4NmxAxUCtcNVg4UOvfLQrjtQM_AiATNibsFMyiQZRaRGQU96jNvAUJkLBUqPEAwOBbmJJZQbXp3AJIGIm8RiyJ0uufWiTYdQBu44Ri_jihP6QAtXLHjvwqcyMnWJDtL46fwb-QPkWiLm2XEJJfG6x1EUZ8V8Qk1s9A19PTHEp_c18_mc7TIoY-0P7qI7uurA4mQ1kqflkBXKujsMh_kdDfBCoU7UImYrORGe1BSTC8QHStiSSDdLoYwWoKcQGBSLNZXp4L6YtJHBMjXiykgiVZFS2NgoYCgl6rqEzCqb0QXTjNts3B0DmKh4J3V2l2keZh8xW-uymoUCXi7X9E-xOolHpTg_K79dhWitewwKJy0z8NxVMkbBrGeAo75Fl9-fmoIVDQqAGANywH4NQEbmtFH8sh4FnRdBfhWRM9FLYrre3CjGB-LaBAihRFe82vGJ7F8cvN62RIQZGIKfcl18Z53bjDPmV_vzhoMf2b95YbSnSvpzZHW.m3u8"
videoData.postValue(videoURL)
}
}
解决方案
推荐阅读
- python - 在运行时将包目录显式添加到 sys.path 后找不到模块
- python - 当 RMSLE 是评估指标时,lightgbm 的早期停止不起作用
- python - 撤消或重做选项创建opencv图像处理(Python)
- node.js - 均衡。GetOne 查询文本中具有 hasMany-association 的未知列
- ios - 解码后改变图像的方向
- c# - 如何在 Azure Web App 中禁用 web.config 重写规则?
- java - 为什么我的第二种方法的模拟会影响第一种方法?
- azure - 从 Azure 表存储中获取实体(限制 1)
- json - 无法使用 MasterPage 访问 webform aspx 中的隐藏字段值
- symfony - Symfony:扩展实体而不创建表