Pull to refresh

Что нового в Expression Encoder 3 SDK?

Reading time4 min
Views901
Original author: deanro

Поддержка кодирования на лету.


Многие из нас ждали этого момента и теперь мы с радостью можем видеть, что 3-я версия имеет полную поддержку Live режима приложения через объектную модель.
// Создаем новый объект LiveJob для начала вещания файла
using (LiveJob job = new LiveJob())
{
  // Создаем новый источник по переданному адресу
  LiveFileSource fileSource = job.AddFileSource(@"C:\myvideo.wmv");

  // Устанавливаем источнику режим зацикливания, после окончания проигрывания
  fileSource.PlaybackMode = FileSourcePlaybackMode.Loop;

  // Делаем источник активным
  job.ActivateSource(fileSource);


* This source code was highlighted with Source Code Highlighter.


Через объект LiveJob мы можем получить весь список видео или аудио устройств, которые установлены в системе, и добавить их как источники. Для более детального ознакомления можно изучить пространство имен Microsoft.Expression.Encoder.Live и посмотреть установленные примеры.

Усовершенствованный профиль с полной поддержкой настройки H.264


В 3-ей версии мы разделили профили по типам. Таким образом, если вы имеете дело с главным H.264 видео профилем, то вы будете видеть свойства, принадлежащие только этому объекту. (Заметьте, что вы должны иметь полную версию Encoder'a для поддержки H.264) Вместе с этим, вы сейчас определяете профили внутри свойства OutputFormat, объекта MediaItem.

Битрейт определяется с использованием новых битрейт классов, ConstantBitrate, VariableConstrainedBitrate, VariableUnconstrainedBitrate и VariableQualityBitrate. Еще раз, только те свойства, которые имели смысл отделить, были вынесены за пределы класса. Например, когда используем VariableConstrainedBitrate класс, у нас есть свойство PeakBitrate, но это свойство не было вынесено в другие битрейт классы, потому что оно применимо к ограниченному переменному типу битрейта.
MainVC1VideoProfile videoProfile = new MainVC1VideoProfile();
videoProfile.Bitrate = new ConstantBitrate(350);
videoProfile.Complexity = VideoComplexity.Fastest;
videoProfile.Size = new System.Drawing.Size(640, 480);

MediaItem item = new MediaItem(@"C:\myvideo.wmv");
item.OutputFormat = new WindowsMediaOutputFormat()
{
  VideoProfile = videoProfile
};

* This source code was highlighted with Source Code Highlighter.

Smooth Streaming


Encoder SDK поддерживает кодирование в smooth streaming формат(опять таки, только в полной версии). Класс видео профиля теперь имеет потоковое свойство, которое используется для установки деталей каждого потока, которое вы хотите кодировать. Smooth streaming можно использовать для кодирования в постоянный битрейт VC-1 и H.264 или ограниченный переменны битрейт используя VC-1. Так же, используя VC-1 и ограниченный переменный битрейт, вы можете установить, что размер потока должен автоматически определяться кодировщиком исходя из контента и битрейта. В этом случае вы устанавливаете максимальную ширину и высоту для каждого потока.
AdvancedVC1VideoProfile videoProfile = new AdvancedVC1VideoProfile();

// Когда вы создаете VideoProfile, вы получите один поток по умолчанию
// В этом примере мы добавим три потока
videoProfile.Streams.RemoveAt(0);
videoProfile.Streams.Add(
  new VariableConstrainedBitrate(1450, 1600),
  new System.Drawing.Size(800, 600));
videoProfile.Streams.Add(
  new VariableConstrainedBitrate(1050, 1600),
  new System.Drawing.Size(640, 480));
videoProfile.Streams.Add(
  new VariableConstrainedBitrate(600, 1600),
  new System.Drawing.Size(400, 300));

// Используем smooth streaming с автоматическим размером потоков videoProfile.SmoothStreaming = true;
videoProfile.Streams.AutoSize = true;

* This source code was highlighted with Source Code Highlighter.

Кодирование разных источников вместе


Во 2-ой версии мы могли комбинировать 3 источника используя лидера(leader), главное видео и трейлера. В 3-ей версии мы можем оставить в прошлом это ограничение и комбинировать множество источников в один используя новый Source класс.
MediaItem item = new MediaItem("mymovie1.wmv");
item.Sources.Add(new Source("mymovie2.wmv"));
item.Sources.Add(new Source("mymovie3.avi"));
item.Sources.Add(new Source("mymovie4.wmv"));

* This source code was highlighted with Source Code Highlighter.

Информация файла


Появились новые классы для анализа существующих медиа файлов для определения информации о видео и аудио потоках (в случае, если файлов больше одного)
AudioVideoFile source = new AudioVideoFile("myvideo.wmv");
Console.WriteLine(source.VideoStreams[0].VideoSize);
Console.WriteLine(source.VideoStreams[0].AspectRatio);
Console.WriteLine(source.VideoStreams[0].Duration);
Console.WriteLine(source.AudioStreams[0].Channels);
Console.WriteLine(source.AudioStreams[0].SampleSize);

* This source code was highlighted with Source Code Highlighter.

Если у исходного файла более чем одна звуковая дорожка, мы можем определить какая дорожка будет использована при кодировании с помощью свойства AudioStreamIndex класса Source.
item.Sources[0].AudioStreamIndex = 2;

* This source code was highlighted with Source Code Highlighter.

Предустановки


Для всех стандартных предустановок, которые установлены с приложением, мы определили заранее объявленные статические экземпляры, которые упрощают работу, если вы не хотите устанавливать все свойства профилей индивидуально.
mediaItem.ApplyPreset(Presets.VC1HighSpeedBroadbandVBR);

* This source code was highlighted with Source Code Highlighter.

И так, мы увидели быстрое введение в некоторые новые изменения и улучшения объектной модели Expression Encoder 3. Дополнительные вопросы можно задавать на форуме social.expression.microsoft.com/Forums/en-US/encoder/threads
Tags:
Hubs:
Total votes 11: ↑6 and ↓5+1
Comments1

Articles