#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 /… для документации.