Справка по потоковому аудио в WP7 - PullRequest
1 голос
/ 10 августа 2011

Итак, я скачал образцы с http://archive.msdn.microsoft.com/ManagedMediaHelpers.

Мой код работает с использованием MP3MediaStreamSource. Тем не менее, я не до конца понимаю, что коду нужно какое-то объяснение.

public partial class MainPage : PhoneApplicationPage
{
    private static string mediaFileLocation = "http://file-here.mp3";
    private static HttpWebRequest request = null;
    private static Mp3MediaStreamSource mss = null;

    public MainPage()
    {
        InitializeComponent();
    }

    private void RequestCallback(IAsyncResult asyncResult)
    {
        HttpWebResponse response = request.EndGetResponse(asyncResult) as HttpWebResponse;
        Stream s = response.GetResponseStream();
        mss = new Mp3MediaStreamSource(s, response.ContentLength);
        Deployment.Current.Dispatcher.BeginInvoke(
            () =>
            {
                this.wp7AudioElement.Volume = 100;
                this.wp7AudioElement.SetSource(mss);
            });
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        request = WebRequest.CreateHttp(MainPage.mediaFileLocation);

        // NOTICE 
        // Makes this demo code easier but I wouldn't do this on a live phone as it will cause the whole 
        // file to download into memory at once.
        //
        // Instead, use the asynchronous methods and read the stream in the backgound and dispatch its
        // data as needed to the ReportGetSampleCompleted call on the UIThread.
        request.AllowReadStreamBuffering = true;
        IAsyncResult result = request.BeginGetResponse(new AsyncCallback(this.RequestCallback), null);
    }
}

Это действительно последний метод, который мне нужно объяснить, я не понимаю Уведомление о том, почему это плохая идея и как сделать это по-другому?

1 Ответ

0 голосов
/ 10 августа 2011

По сути, он пытается сказать вам, что вы загружаете 1 файл ПОЛНОСТЬЮ, прежде чем он воспроизводится. Это не очень хорошая идея, поскольку, если размер файла составляет 10 МБ, может пройти некоторое время, прежде чем он полностью загрузится.

Лучше было бы разбить файл на части с помощью кодировщиков и прочитать его при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...