| Summary: | Add streaming feature | ||
|---|---|---|---|
| Product: | [Applications] kasts | Reporter: | farid <snd.noise> |
| Component: | general | Assignee: | bart |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | pasnox, schmaker, tobias |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Flatpak | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma-mobile/kasts/commit/562c76c799d3ec10d244acd799289b5ebc835aab | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
|
Description
farid
2021-06-18 12:02:48 UTC
That feature is on the roadmap. It might take a while, though, since the current audio backend does not seem to allow to scrub through streamed audio. An intermediate solution could be a button to open an episode in a different player. This player could be set in the general settings. Which media backend is behind Kast ? Is not QtMultimedia able to stream directly ? (In reply to Filipe Azevedo from comment #3) > Which media backend is behind Kast ? Is not QtMultimedia able to stream > directly ? Yes, it's using Qt Multimedia (which in turn uses gstreamer as backend on linux). About the streaming capabilities: as usual the answer is "it's complicated". :-) When I started developing Kasts about 1-2 years ago, it seemed that streaming was broken in the sense that you couldn't seek through the stream, which basically makes it impossible in an app that is centered around saving and syncing play positions. That's why I concentrated on implementing the download flow first. There are multiple problems with the QtMultimedia backend, so in parallel I am/was investigating alternatives. However, recently I tried streaming again, and it seems like those earlier problems have been solved now. I suspect it was actually solved in gstreamer rather than the QtMultimedia shim layer. I have a branch that implements functional streaming. Ironically, the only thing I'm currently a bit stuck on is figuring out how to expose this in the GUI. The streaming functionality should not interfere with the existing download flow, and it should also be clear to users whether there are streaming or playing a local file. Once those issues are solved, I'll merge it and then Kasts will have streaming capabilities. I suspect that will go into the next release. Yeah, QtMultimedia... I had my fight as well with it for Kaidan IM... AntennaPad on Android make teh flow quite nice. There is a setting preference : streaming vs downloading Then in the UI it swap the play button icon depending the user preference so that we know we would stream or download. It's available on F-Droid if you want to have a look. I know AntennaPod all too well. :-) It's not a secret that most of the Kasts GUI is/was heavily inspired by AntennaPod to say the least (especially the mobile UI). That streaming/download preference setting is indeed what I was trying to implement right now. Most of it is done, but for some reason I'm not entirely happy with it. I can't put my finger on why I'm not happy, though... Coming to think of it, it might not be the UI itself, but the QML code getting really messy which is upsetting me. :-) I guess I'll just have to bite the bullet and get this out there and then refactor later if needed. ;-) Git commit 562c76c799d3ec10d244acd799289b5ebc835aab by Bart De Vries. Committed on 19/10/2022 at 12:49. Pushed by bdevries into branch 'master'. Implement streaming support This implements support for streaming episodes rather than downloading them first. This introduces a new setting: prioritizeStreaming. If it's set to false (default) then a streaming play button is only added to the EntryPage. If it is set to true, then the streaming play button will also appear on the Entry delegates instead of the download button. There is a separate setting to decide if streaming is also allowed on metered connections. M +4 -0 .reuse/dep5 A +10 -0 icons/media-playback-start-cloud.svg M +54 -5 src/audiomanager.cpp M +6 -1 src/audiomanager.h M +7 -1 src/error.cpp M +2 -1 src/error.h M +55 -29 src/qml/EntryPage.qml M +29 -7 src/qml/GenericEntryDelegate.qml M +21 -4 src/qml/Settings/GeneralSettingsPage.qml M +7 -0 src/qml/Settings/NetworkSettingsPage.qml M +1 -0 src/resources.qrc M +8 -0 src/settingsmanager.kcfg M +3 -3 src/updatefeedjob.cpp https://invent.kde.org/plasma-mobile/kasts/commit/562c76c799d3ec10d244acd799289b5ebc835aab |