首页 > 解决方案 > 在方向更改时保存实时视频流

问题描述

我正在尝试制作一个显示实时流视频(目前来自 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)

    }
}

标签: androidmvvmscreen-orientationlive-streaming

解决方案


推荐阅读