Как мне транслировать MP3 через HTTP в фоновом режиме? - PullRequest
4 голосов
/ 29 февраля 2012

Существует множество примеров использования агента фонового аудио, но очень немногие показывают, как использовать агент фонового аудио-потокового вещания, и те, которые я обнаружил, не показывают потоковое mp3, а вместо этого создают притворный поток.

Когда я создаю новый проект агента потоковой передачи аудио Windows Phone, он дает мне:

public class AudioTrackStreamer : AudioStreamingAgent
{
    /// <summary>
    /// Called when a new track requires audio decoding
    /// (typically because it is about to start playing)
    /// </summary>
    /// <param name="track">
    /// The track that needs audio streaming
    /// </param>
    /// <param name="streamer">
    /// The AudioStreamer object to which a MediaStreamSource should be
    /// attached to commence playback
    /// </param>
    /// <remarks>
    /// To invoke this method for a track set the Source parameter of the AudioTrack to null
    /// before setting  into the Track property of the BackgroundAudioPlayer instance
    /// property set to true;
    /// otherwise it is assumed that the system will perform all streaming
    /// and decoding
    /// </remarks>
    protected override void OnBeginStreaming(AudioTrack track, AudioStreamer streamer)
    {
        //TODO: Set the SetSource property of streamer to a MSS source

        NotifyComplete();
    }

    /// <summary>
    /// Called when the agent request is getting cancelled
    /// The call to base.OnCancel() is necessary to release the background streaming resources
    /// </summary>
    protected override void OnCancel()
    {
        base.OnCancel();
    }
}

Как мне дать ему URL-адрес в формате MP3, например http://relay.radioreference.com:80/346246215, и передать его в фоновом режиме?Также я ставлю BackgroundAudioPlayer.Instance.Play();, чтобы играть и все?

Ответы [ 4 ]

6 голосов
/ 29 февраля 2012

да, этого достаточно. Нет необходимости использовать стример, если вы задали URL-адрес фонового агента и вызвали функцию BackgroundAudioPlayer.Instance.Play (); фоновый агент автоматически передает мультимедиа

5 голосов
/ 01 марта 2012

Если вы хотите воспроизводить потоковое аудио в формате / кодеке , который изначально не поддерживается телефоном , вы должны сделать это с AudioStreamingAgent. Если это поддерживаемый кодек, вы можете использовать AudioPlayerAgent (см. Пример здесь ).

Использование AudioStreamingAgent является нетривиальной задачей и требует глубокого понимания кодека, который вам необходим для воспроизведения, чтобы вы могли преобразовать его в то, что понимает телефон. Я знаю, был ли один человек, который сделал это, для потока H.264, и потребовалось много времени и много усилий, чтобы заставить его работать. И прежде чем кто-нибудь спросит: нет, они не могут поделиться кодом из этого проекта.

Если вы действительно должны идти по этому пути, ManagedMediaHelpers (ранее здесь ) - хорошее место для начала, но да, они не охватывают все кодеки, и это потенциально очень сложный и не очень хорошо документированный в Интернете.

3 голосов
/ 29 февраля 2012

У вас есть хороший пример AudioStreamingAgent на Github: https://github.com/loarabia/ManagedMediaHelpers.

Я уже пробовал, но работает только при поиске заголовка ID3 в потоке.

0 голосов
/ 13 декабря 2015

Вы можете попробовать мое решение, просто немного настроив его из фонового агента, чтобы установить новый трек из mainPage.

SetTrack с переднего плана

Вы также можете сохранить trackList в Isostorage и прочитать из фонового агента для воспроизведения.

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