@linuxdancer my mistake, this error is Strawberry's way to say that the stream is invalid. My mistake, try https://stream.bnr.nl/bnr_mp3_128_20
Arjan
@linuxdancer my mistake, this error is Strawberry's way to say that the stream is invalid. My mistake, try https://stream.bnr.nl/bnr_mp3_128_20
Arjan
@linuxdancer as a workaround you can create playlists holding streams. Create an empty file and add following lines to it:
#EXTM3U
#EXTINF:0,🎵 BNR Nieuwsradio
https://playerservices.streamtheworld.com/pls/BNR_NIEUWSRADIOAAC.pls
Replase BNR Nieuwsradio with the title of your stream (e.g. BBC4) and replace the url (https://...) with your url.
You can repeat the last two lines as often as you like to hold more streams Now save the file with a .m3u extensions (for example Radio.m3u)
Go into Strawberry and select Playlist - Load playlist (or Ctr+Shift+O) and you can load your playlist.
Doulbe click on the star in the tab and it will remember this playlist.
Success!!
The number of radio stations supported is very limited. Access to more radio stations would highly be appreciated. Or just being able to search for a radio station and mark it as a favorite (and pop-up under Radios) would be a great improvement.
You could use https://www.radio-browser.info/ to get a list of stations. They supply an API. Sadly enough, my C++ skills are to minimal to support you in implementing this.
As I previously mentioned, I agree that it is probably not the best idea to have hard-coded streams into an application (although they don't change that often).
However, to get into the ideal world and using APIs to search for streams, you first need to have a source where to get the streams (and urls) from. The developers of Volumio have found a way to get to a "directory" holding a large amount of streams. So technically it must be possible.
Once you have that "source" you can think about how to present this with views to the end-user. And think one step further: how users can add their own streams.
But let's be honest @jonas, currently there is 1 programmer for Strawberry and that's you. You probably have enough work in maintaining Strawberry and therefore no (or very limited) time to add additional functionality. When will your ideas (which are without any doubt better then hardcoded streams) be implemented? My guess is that it will continue to be a dream for a long time into the future.
Another way of solving the problem is doing it step by step, first hardcoded, then maybe an external (saved) playlist with a large number of stations which can be loaded into Strawberry (like @ben2talk is using now) and finally getting into a state where Strawberry uses external sources to list radio streams.
However, maybe the number of users interested in radio streams in Strawberry is very limited and therefore the radio streams feature will more or less die .... who knows ... only the future will tell.
I tried to be part of the community, spend time on it and contribute (even with my limited C++ programming capabilities) to try to make the application a bit "better" then what it was.
If you want to go only for the "ideal" world, then be my guest, and I sincerely hope you will get there. But honestly .... I doubt.
Kind regards,
Arjan
@ben2talk The one does not exclude the other. A playlist is more flexible however it does need technial skills. For you and many others no problem, for my wife and many others an obstacle they cannot overcome.
The (from my point of view) best solution would be that Strawberry uses a directory service with audio streams listed in seach a way that users can select their favorites. Must technically be possible since volumio (volumio.com code at https://github.com/volumio) does it. However I am not skilled enough in C++ to implement that into Strawberry.
I think jonas has already enough to do with maintaining Strawberry.
I just tried to increase usability (a little bit) for non-technical Strawberry users.
@jonas The number of radio stations is limited. I have added in my fork of strawberry a number of radio stations. Compiles and runs smoothly.
If you are interested in adding this to strawberry then let me know.
FYI: Code can be found at https://github.com/arjantenhoopen/strawberry in the branch addradio08022024
@jonas I am currently digging into the code of radio streams. There is one function I do not understand, or better, what the use of it is. In src/core/song.cpp there is a function called "SourceFromURL" (app. at line 850).
What is the use of this? What goes "wrong" if the return value is incorrect?
Could you elaborate a little bit about this function?
I also for see a challenge. There are many stations/streams who use a CDN (example: streamtheworld.com). To distinguish between stations, you can't use the url (it's always streamtheworld.com). The difference is within the path.
Any thoughts about this?
TIA,
Arjan
There is nothing wrong with the code, after I removed the db and restarted strawberry the radio stations where all working.
I cannot explain this since, in my opinion, the stations are hard coded in the code so why should the (also) be in the db.
Nevertheless, got it working now
Thanks @jonas ! My skills at C++ are not that great so debugging will probably become hard. The strange thing is radio paradise does not suffer from this.
With having hard-coded radio streams inside strawberry being a bad idea is something I fully agree on. However, looking how "Radio" is currently implemented, I just followed this way of implementing. I took Radio Paradise as an example/template.
It would be much better if strawberry would give the user a possibility to import (via a .m3u or .pls file???) radio station streams where strawberry would store them in its database and show them under "Radio".
I'll see if I can fix it, but don't count on it. If it fails, I'll (ab)use playlist to get my favorite radio stations into strawberry.
Thanks for your time and effort on this!
Arjan
@jonas I could do with some help, I have added radio stations, it compiles with no error and the UI behaves as expected. However, if I want to listen to one of my stations it gives the error File not Found:
../ext/soup/gstsouphttpsrc.c(1687): gst_soup_http_src_parse_status (): /GstPlayBin3:pipeline-1-pipeline/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstSoupHTTPSrc:souphttpsrc0: File Not Found (404), URL: https://icecast.omroep.nl/radio1-bb-mp3/, Redirect to: (NULL)
Please note the ending / in the url. I have not added this in the code:
<< RadioChannel(source_, "NPO Radio 1", QUrl("https://icecast.omroep.nl/radio1-bb-mp3"))
So somewhere strawberry adds a / to the url (at least that is my conclusion). But I just can´t find it
Can you shine a light on this and help me finding the location where the / gets added to the url?
TIA,
Arjan
@jonas Thanks for the suggestion, however I just finished setting up thumbelweed virtual machine. Used the wiki to get all packages and the did the clone (as suggested) followed by the build instructions.
However this gives an error related to TagLib:
...
... previous lines deleted
...
-- Performing Test HAVE_QX11APPLICATION
-- Performing Test HAVE_QX11APPLICATION - Success
CMake Warning at CMakeLists.txt:274 (find_package):
By not providing "FindTagLib.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "TagLib", but
CMake did not find one.
Could not find a package configuration file provided by "TagLib" (requested
version 2.0) with any of the following names:
TagLibConfig.cmake
taglib-config.cmake
Add the installation prefix of "TagLib" to CMAKE_PREFIX_PATH or set
"TagLib_DIR" to a directory containing one of the above files. If "TagLib"
provides a separate development package or SDK, be sure it has been
installed.
-- Checking for module 'taglib>=1.11.1'
-- Package 'taglib', required by 'virtual:world', not found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:619 (message):
The following required packages were not found:
- taglib>=1.11.1
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPkgConfig.cmake:841 (_pkg_check_modules_internal)
CMakeLists.txt:281 (pkg_check_modules)
-- Configuring incomplete, errors occurred!
Any tips and trics to overcome this ...
Cheers,
Arjan
Thanks jonas, that kind of help I was looking for. Feel ashamed that I didn't find it myself in the wiki.
Sadly enough on Leap 15.5 there is no kdsingleapplication-qt6-devel. Thatś where it ends for me. I cannot change to tumbleweed. Will try a virtual machine (soon).
All,
I am trying to update the code to have more ¨radio" stations. The first problem I hit is that I cannot compile. I am using Visual Studio Code. Solved a lot of dependencies but now get stuck.
This is the output I get:
[proc] Executing command: cmake --version
[proc] Executing command: cmake -E capabilities
[variant] Loaded new set of variants
[kit] Successfully loaded 0 kits from /home/arjan/.local/share/CMakeTools/cmake-tools-kits.json
[proc] Executing command: /usr/bin/cmake --version
[proc] Executing command: /usr/bin/cmake -E capabilities
[proc] Executing command: /usr/bin/cmake -S/home/arjan/OneDrive/git/strawberry -B/home/arjan/OneDrive/git/strawberry/build -G Ninja
[proc] The command: /usr/bin/cmake -S/home/arjan/OneDrive/git/strawberry -B/home/arjan/OneDrive/git/strawberry/build -G Ninja exited with code: 1
[main] Configuring project: strawberry
[proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S/home/arjan/OneDrive/git/strawberry -B/home/arjan/OneDrive/git/strawberry/build -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- Strawberry Version:
[cmake] -- Display: 1.0.23-19-g42d6c797
[cmake] -- Package: 1.0.23.19.g42d6c797
[cmake] -- RPM: 1.0.23-2.19.g42d6c797
[cmake] -- PAC: 1.0.23.r19.g42d6c797-1
[cmake] -- Found the following ICU libraries:
[cmake] -- uc (required)
[cmake] -- i18n (required)
[cmake] -- Could NOT find Protobuf (missing: Protobuf_DIR)
[cmake] -- Checking for module 'libvlc'
[cmake] -- No package 'libvlc' found
[cmake] -- Checking for module 'libchromaprint>=1.4'
[cmake] -- No package 'libchromaprint' found
[cmake] -- Checking for module 'libgpod-1.0>=0.7.92'
[cmake] -- No package 'libgpod-1.0' found
[cmake] -- Checking for module 'libmtp>=1.0'
[cmake] -- No package 'libmtp' found
[cmake] FFTW3 lib not found. Set FFTW3_DIR to find it.
[cmake] -- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
[cmake] -- QT_VERSION_MAJOR, BUILD_WITH_QT5 or BUILD_WITH_QT6 not set, detecting Qt version...
[cmake] -- Could NOT find Qt6Core (missing: Qt6Core_DIR)
[cmake] -- Configuring incomplete, errors occurred!
[cmake] See also "/home/arjan/OneDrive/git/strawberry/build/CMakeFiles/CMakeOutput.log".
[cmake] See also "/home/arjan/OneDrive/git/strawberry/build/CMakeFiles/CMakeError.log".
[cmake] CMake Error at CMakeLists.txt:198 (find_package):
[cmake] Found package configuration file:
[cmake]
[cmake] /usr/lib64/cmake/Qt6/Qt6Config.cmake
[cmake]
[cmake] but it set Qt6_FOUND to FALSE so package "Qt6" is considered to be NOT
[cmake] FOUND. Reason given by package:
[cmake]
[cmake] Failed to find required Qt component "Core".
[cmake]
[cmake] Expected Config file at "/usr/lib64/cmake/Qt6Core/Qt6CoreConfig.cmake" does
[cmake] NOT exist
[cmake]
[cmake]
[cmake]
[cmake] Configuring with -DCMAKE_FIND_DEBUG_MODE=TRUE might reveal details why the
[cmake] package was not found.
[cmake]
[cmake] Configuring with -DQT_DEBUG_FIND_PACKAGE=ON will print the values of some
[cmake] of the path variables that find_package uses to try and find the package.
[cmake]
[cmake]
[cmake]
[proc] The command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S/home/arjan/OneDrive/git/strawberry -B/home/arjan/OneDrive/git/strawberry/build -G Ninja exited with code: 1
All help/tips/trics to get me going are appreciated!
Cheers,
Arjan