Как написать код для потоковой передачи mp3 файлов с помощью сервиса WCF C#
Всем привет,
Недавно я создал музыкальное приложение wcf service c# для прослушивания и загрузки музыкальных треков для потребления данных для фронтального приложения потоковой передачи музыки Android. Все работает хорошо принять производительность ожидания музыкального запроса, чтобы закончить буферизацию всего трека с сервера, чтобы ответить обратно клиенту (Android-приложение). Прежде всего, и для большинства я очень новичок в потоковых классах и концепции того, какой из них даст мне лучшую производительность для потоковой передачи mp3-файлов на веб-сервере (IIS).
Ниже приведен мой код, который я в настоящее время использую для своего музыкального mp3-файла. Может ли кто-нибудь помочь мне выбрать класс approciate Stream (FileStream, BinaryStream и т. д.) и показать мне пример. Ваша помощь будет с радостью оценена.
Что я уже пробовал:
My data contract is simply this: [DataMember] public string TrackUrl { get; set; } My service contract: [OperationContract] [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "GET", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "LoadTracksByAlbum/{AlbumID}")] List<LoadAlbumTracks> LoadTracksByAlbum(string AlbumID); My proxy operation contract method implementation: public List<LoadAlbumTracks> LoadTracksByAlbum(string AlbumID) { List<LoadAlbumTracks> loadAlbumTracksList1 = new List<LoadAlbumTracks>(); MusicDataContext tapesDataContext = new MusicDataContext(); CultureInfo cultureInfo = CultureInfo.GetCultureInfo("en-US"); tapesDataContext.CommandTimeout = 0; foreach (proc_TracksLoadByAlbumResult loadByAlbumResult in (IEnumerable<proc_TracksLoadByAlbumResult>)tapesDataContext.proc_TracksLoadByAlbum(new int?(Convert.ToInt32(AlbumID)))) { List<LoadAlbumTracks> loadAlbumTracksList2 = loadAlbumTracksList1; LoadAlbumTracks loadAlbumTracks1 = new LoadAlbumTracks(); loadAlbumTracks1.TrackID = loadByAlbumResult.TrackID; loadAlbumTracks1.TrackTitle = loadByAlbumResult.TrackTitle; loadAlbumTracks1.Artists = loadByAlbumResult.Atists; loadAlbumTracks1.DiscJockeyName = loadByAlbumResult.DiscJockeyName; loadAlbumTracks1.TrackDescription = loadByAlbumResult.TrackDescription; loadAlbumTracks1.TrackUrl = loadByAlbumResult.TrackUrl; loadAlbumTracks1.AlbumID = loadByAlbumResult.AlbumID ?? 0; loadAlbumTracks1.AlbumCoverPhotoUrl = loadByAlbumResult.AlbumCoverPhotoUrl; loadAlbumTracks1.AlbumName = loadByAlbumResult.AlbumName; loadAlbumTracks1.TotalStreams = loadByAlbumResult.TotalStreams; LoadAlbumTracks loadAlbumTracks2 = loadAlbumTracks1; loadAlbumTracks1.DownloadStatus = loadByAlbumResult.DownloadStatus; bool? trackStatus = loadByAlbumResult.TrackStatus; int num = trackStatus.HasValue ? (trackStatus.GetValueOrDefault() ? 1 : 0) : 1; loadAlbumTracks2.TrackStatus = num != 0; loadAlbumTracks1.DjID = loadByAlbumResult.DjID ?? 0; loadAlbumTracks1.CreatedBy = loadByAlbumResult.CreatedBy ?? 0; loadAlbumTracks1.CreatedOn = !loadByAlbumResult.CreatedOn.HasValue ? "" : loadByAlbumResult.CreatedOn.Value.ToString("d", (IFormatProvider)cultureInfo); loadAlbumTracks1.UpdatedBy = loadByAlbumResult.UpdatedBy ?? 0; loadAlbumTracks1.UpdatedOn = !loadByAlbumResult.UpdatedOn.HasValue ? "" : loadByAlbumResult.UpdatedOn.Value.ToString("d", (IFormatProvider)cultureInfo); LoadAlbumTracks loadAlbumTracks3 = loadAlbumTracks1; loadAlbumTracksList2.Add(loadAlbumTracks3); } return loadAlbumTracksList1; }
Gerry Schmitz
Обзаведитесь собственной волоконно-оптической магистралью.