Closed gameo1 closed 4 years ago
In I my own app.. I downloaded the music from NAS and played locally
Do you think there might be a way to stream audio instead of downloading it?
Maybe this libray cloud be helpful, StreamingKit. SynologyKit is just a wrapper of FileStation API, and will not support streaming audio or movie.
Maybe this libray cloud be helpful, StreamingKit. SynologyKit is just a wrapper of FileStation API, and will not support streaming audio or movie.
this is fine. Thanks for the hint!! My question was: with your wonderful kit, I can navigate through the filestation and get the relative path of a track, like "/home/music/folder/file.mp3". I would be able to stream if I would get the absolute path or http path like "http://mynas/home/music/folder/file.mp3" instead of downloading it. is this doable?
I do not know. Synology FileStation API document does not offer an api to do that.
done with your kit. Dirty way but works. somewhere where the AVPlayer is
func getFileUrl(path:String) -> URL {
let url = client?.getMP3StreamURL(path)
return url ?? URL.init(string: "nil")!
}
in the Synology class
/// Get MP3 Sream for a given file
/// - Parameter path: path of the file to stream.
public func getMP3StreamURL(_ path: String) -> URL? {
var params: Parameters = [:]
params["path"] = path
var request = SynologyBasicRequest(baseURLString: baseURLString(), api: .mp3stream, method: .stream, params: params)
request.version = 2
request.path = SynologyCGI.mp3
let str = requestToUrl(request: request, path: path)
let url = URL.init(string: str.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)
return url
}
///Helper
func requestToUrl(request: SynologyBasicRequest, path: String) -> String {
var str = request.baseURLString + "webapi/"
str += request.path + "?method=" + request.method.rawValue + "&path=" + path + "&api=SYNO.AudioPlayer.Stream&version=2"
return str
}
Thanks a lot for your work. Happy Xmas
Hi, If you have a mp3 file with its path, how would you play it? I mean, what URL/path would you use for it? simply the filename path?