Как: передавать аудио на Android с помощью Azure Media Services?

#android #audio #azure #azure-media-services

#Android #Аудио #azure #azure-media-services

Вопрос:

Я исследовал, но не нашел никакого руководства о том, как воспроизводить аудиопоток из Azure Media Services в приложениях для Android?

Я прошел через эти руководства http://azure.microsoft.com/en-us/documentation/articles/media-services-dotnet-get-started/
http://code.msdn.microsoft.com/Windows-Azure-Media-040435f8

Но они загружают ресурс, а не транслируют его.

Кажется, есть что-то под названием PlayReady, но мне нужно его лицензировать!! http://www.microsoft.com/playready/features/ClientOptions.aspx

Кто-нибудь может подсказать мне какой-либо код / учебник или с чего начать, чтобы я мог воспроизводить аудиопоток, загруженный в Azure Media Services?

Возможно ли, что я мог бы получить URL-адрес потоковой передачи из Azure media services для моего загруженного аудиофайла, а затем я бы просто воспроизвел его обычным образом, используя MediaPlayer API на Android?

Комментарии:

1. Как вы пытаетесь транслировать? Используя код и API или через собственное приложение для медиаплеера?

2. Не уверен, что именно вы подразумеваете под родным, но я разрабатываю свои собственные приложения для Android и IOS, которые используют собственные API-интерфейсы Android и IOS соответственно. Я вообще не возражаю против кода и метода API.

Ответ №1:

Вы можете использовать AMS REST API или SDK для .NET для загрузки файла MP3.

Затем вы можете создать файл MP4, закодировав его с помощью Azure Media Encoder и используя предустановку звука хорошего качества AAC.

Обязательно добавьте хотя бы один модуль потоковой передачи по требованию.

В следующем примере используется SDK для .СЕТЕВЫЕ расширения.

 using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MediaServices.Client;
using System.Threading;

namespace AudioTest
{
    class Program
    {
        // Read values from the App.config file.
        private static readonly string _mediaServicesAccountName =
            ConfigurationManager.AppSettings["MediaServicesAccountName"];
        private static readonly string _mediaServicesAccountKey =
            ConfigurationManager.AppSettings["MediaServicesAccountKey"];

        // Field for service context.
        private static CloudMediaContext _context = null;
        private static MediaServicesCredentials _cachedCredentials = null;


        static void Main(string[] args)
        {

            // Create and cache the Media Services credentials in a static class variable.
            _cachedCredentials = new MediaServicesCredentials(
                            _mediaServicesAccountName,
                            _mediaServicesAccountKey);
            // Used the cached credentials to create CloudMediaContext.
            _context = new CloudMediaContext(_cachedCredentials);


            // 1. Create a new asset by uploading a mezzanine file from a local path.
            IAsset inputAsset = _context.Assets.CreateFromFile(
                @"testrecording.wma",
                AssetCreationOptions.None,
                (af, p) =>
                {
                    Console.WriteLine("Uploading '{0}' - Progress: {1:0.##}%", af.Name, p.Progress);
                });


            IJob job = _context.Jobs.CreateWithSingleTask(
            MediaProcessorNames.AzureMediaEncoder,
            MediaEncoderTaskPresetStrings.AACGoodQualityAudio,
            inputAsset,
            "AACGoodQualityAudio",
            AssetCreationOptions.None);

            Console.WriteLine("Submitting transcoding job...");

            // 3. Submit the job and wait until it is completed.
            job.Submit();
            job = job.StartExecutionProgressTask(
                j =>
                {
                    Console.WriteLine("Job state: {0}", j.State);
                    Console.WriteLine("Job progress: {0:0.##}%", j.GetOverallProgress());
                },
                CancellationToken.None).Resu<

            Console.WriteLine("Transcoding job finished.");

            IAsset outputAsset = job.OutputMediaAssets[0];

            Console.WriteLine("Publishing output asset...");

            // 4. Publish the output asset by creating an Origin locator for adaptive streaming. 
            _context.Locators.Create(
                LocatorType.OnDemandOrigin,
                outputAsset,
                AccessPermissions.Read,
                TimeSpan.FromDays(30));


            Uri hlsUri = outputAsset.GetHlsUri();
            Uri mpegDashUri = outputAsset.GetMpegDashUri();

            // 6. Get the asset URLs.
            // Test HLS with Safari and Chrome on iOS.
            Console.WriteLine(hlsUri);
            // Test MPEG DASH with http://dashif.org/reference/players/javascript/
            Console.WriteLine(mpegDashUri);
        }
    }
}  

Кроме того, смотрите https://social.msdn.microsoft.com/Forums/azure/en-US/4fb146f1-81f4-4da0-a157-3e2316b127fe/windows-azure-media-services-audio-only?форум= Медиасервисы.

Спасибо,

Джулия

Ответ №2:

Службы Azure Media Services предназначены для обработки и обслуживания потокового видео и не поддерживают мультимедиа только для аудио.

Возможно, вы захотите проверить, обеспечивает ли новое предложение Azure CDN плавную потоковую передачу.

В противном случае единственным способом действительно включить это было бы настроить соответствующий сервер потоковой передачи, потенциально работающий на виртуальной машине Azure, поскольку веб-сайты и предложения PaaS для веб-ролей не имеют встроенных в них возможностей потоковой передачи.

В противном случае вы могли бы потенциально взглянуть на потоковое предложение AWS CloudFront, если вам нужно общедоступное облачное решение.

Комментарии:

1. Azure Media Services поддерживает только аудио ресурсы. Проверьте azure.microsoft.com/en-us/documentation/articles /… для документации.