Added support for custom encoding presets to Orchard.Azure.MediaServices.

This commit is contained in:
Daniel Stolt
2014-09-08 19:07:23 +02:00
parent ba5434c729
commit 5965f02b02
14 changed files with 146 additions and 68 deletions

View File

@@ -76,8 +76,8 @@ namespace Orchard.Azure.MediaServices.Controllers {
var presetPattern = new Regex(@"^[\w\s]*$");
foreach (var preset in viewModel.EncodingSettings.WamsEncodingPresets) {
if (!presetPattern.IsMatch(preset)) {
_services.Notifier.Error(T("The encoding preset '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset));
if (!presetPattern.IsMatch(preset.Name)) {
_services.Notifier.Error(T("The encoding preset name '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset.Name));
return View("Index", viewModel);
}
}

View File

@@ -1,4 +1,5 @@
using Orchard.Azure.MediaServices.Models;
using System.Linq;
using Orchard.Azure.MediaServices.Models;
using Orchard;
using Orchard.ContentManagement;
using Orchard.Environment;
@@ -53,7 +54,7 @@ namespace Orchard.Azure.MediaServices.Events {
"H264 Adaptive Bitrate MP4 Set SD 4x3 for iOS Cellular Only",
"H264 Smooth Streaming 720p Xbox Live ADK",
"H264 Smooth Streaming Windows Phone 7 Series"
};
}.Select(x => new EncodingPreset() { Name = x });
settings.SubtitleLanguages = new[] {
"da-DK",
"nl-BE",

View File

@@ -3,6 +3,7 @@ using System.Globalization;
using Orchard.ContentManagement;
using System;
using System.Linq;
using Newtonsoft.Json;
namespace Orchard.Azure.MediaServices.Models {
@@ -18,10 +19,10 @@ namespace Orchard.Azure.MediaServices.Models {
set { this.Store(x => x.WamsAccountKey, value); }
}
public string StorageAccountKey {
get { return this.Retrieve(x => x.StorageAccountKey); }
set { this.Store(x => x.StorageAccountKey, value); }
}
public string StorageAccountKey {
get { return this.Retrieve(x => x.StorageAccountKey); }
set { this.Store(x => x.StorageAccountKey, value); }
}
public bool EnableDynamicPackaging {
get { return this.Retrieve(x => x.EnableDynamicPackaging); }
@@ -49,14 +50,21 @@ namespace Orchard.Azure.MediaServices.Models {
}
}
public IEnumerable<string> WamsEncodingPresets {
public IEnumerable<EncodingPreset> WamsEncodingPresets {
get {
var presets = Retrieve<string>("WamsEncodingPresets");
return !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
var presets = Retrieve<string>("WamsEncodingPresetsJson");
if (!String.IsNullOrEmpty(presets)) {
return JsonConvert.DeserializeObject<EncodingPreset[]>(presets);
}
// Fall back to old style property for compatibility with existing data.
presets = Retrieve<string>("WamsEncodingPresets");
var presetNames = !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
return presetNames.Select(x => new EncodingPreset() { Name = x });
}
set {
var presets = value != null && value.Any() ? String.Join(";", value) : null;
Store("WamsEncodingPresets", presets);
// Clear out old style property, migrate setting to the new one.
Store("WamsEncodingPresets", default(string));
Store("WamsEncodingPresetsJson", JsonConvert.SerializeObject(value.ToArray()));
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Orchard.Azure.MediaServices.Models {
public class EncodingPreset {
public string Name { get; set; }
[AllowHtml]
public string CustomXml { get; set; }
}
}

View File

@@ -149,6 +149,7 @@
<Content Include="Content\expressInstall.swf" />
<Content Include="Content\MSAdaptiveStreamingPlugin.swf" />
<Content Include="Content\StrobeMediaPlayback.swf" />
<Compile Include="Models\EncodingPreset.cs" />
<Compile Include="Shapes\CloudVideoPlayerShape.cs" />
<Compile Include="Helpers\BitExtensions.cs" />
<Compile Include="Infrastructure\Assets\AssetDriverResult.cs" />
@@ -553,6 +554,9 @@
</ItemGroup>
<ItemGroup>
<None Include="Scripts\lib\MPEG Dash Notice.docx" />
<Content Include="Styles\cloudmedia-admin-settings.css.map">
<DependentUpon>cloudmedia-admin-settings.css</DependentUpon>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Scripts\cloudmedia-admin-common.js.map" />

View File

@@ -15,6 +15,25 @@ var Orchard;
})();
Settings.StringItem = StringItem;
var EncodingPreset = (function () {
function EncodingPreset(name, customXml) {
this.name = ko.observable(name);
this.customXml = ko.observable(customXml);
this.isExpanded = ko.observable(false);
this.type = ko.computed(function () {
var customXml = this.customXml();
if (!!customXml && customXml.length > 0)
return "Custom preset";
return "Standard preset";
}, this);
}
EncodingPreset.prototype.toggle = function () {
this.isExpanded(!this.isExpanded());
};
return EncodingPreset;
})();
Settings.EncodingPreset = EncodingPreset;
Settings.clientViewModel = {
wamsEncodingPresets: ko.observableArray(),
defaultWamsEncodingPresetIndex: ko.observable(),
@@ -32,7 +51,7 @@ var Orchard;
Settings.deleteWamsEncodingPreset = deleteWamsEncodingPreset;
function addNewWamsEncodingPreset() {
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
}
Settings.addNewWamsEncodingPreset = addNewWamsEncodingPreset;
@@ -49,8 +68,8 @@ var Orchard;
Settings.addNewSubtitleLanguage = addNewSubtitleLanguage;
$(function () {
$.each(initWamsEncodingPresets, function (presetIndex, presetName) {
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
$.each(initWamsEncodingPresets, function (presetIndex, preset) {
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
});
Settings.clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);

View File

@@ -1 +1 @@
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.toggle","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}

View File

@@ -1,37 +1,56 @@
/// <reference path="typings/jquery.d.ts" />
/// <reference path="typings/knockout.d.ts" />
declare var initWamsEncodingPresets: string[];
declare var initWamsEncodingPresets: any[];
declare var initDefaultWamsEncodingPresetIndex: number;
declare var initSubtitleLanguages: string[];
module Orchard.Azure.MediaServices.Admin.Settings
{
export class StringItem
{
constructor(value: string)
{
module Orchard.Azure.MediaServices.Admin.Settings {
export class StringItem {
constructor(value: string) {
this.value = ko.observable(value);
}
public value: KnockoutObservable<string>;
}
export interface IClientViewModel
{
wamsEncodingPresets: KnockoutObservableArray<StringItem>;
export class EncodingPreset {
constructor(name: string, customXml: string) {
this.name = ko.observable(name);
this.customXml = ko.observable(customXml);
this.isExpanded = ko.observable(false);
this.type = ko.computed(function () {
var customXml: string = this.customXml();
if (!!customXml && customXml.length > 0)
return "Custom preset";
return "Standard preset";
}, this);
}
public name: KnockoutObservable<string>;
public customXml: KnockoutObservable<string>;
public isExpanded: KnockoutObservable<boolean>;
public type: KnockoutComputed<string>;
public toggle() {
this.isExpanded(!this.isExpanded());
}
}
export interface IClientViewModel {
wamsEncodingPresets: KnockoutObservableArray<EncodingPreset>;
defaultWamsEncodingPresetIndex: KnockoutObservable<number>;
subtitleLanguages: KnockoutObservableArray<StringItem>;
}
export var clientViewModel: IClientViewModel = {
wamsEncodingPresets: ko.observableArray<StringItem>(),
wamsEncodingPresets: ko.observableArray<EncodingPreset>(),
defaultWamsEncodingPresetIndex: ko.observable<number>(),
subtitleLanguages: ko.observableArray<StringItem>()
};
export function deleteWamsEncodingPreset(preset: StringItem)
{
export function deleteWamsEncodingPreset(preset: EncodingPreset) {
var removedIndex = clientViewModel.wamsEncodingPresets.indexOf(preset);
clientViewModel.wamsEncodingPresets.remove(preset);
if (removedIndex === clientViewModel.defaultWamsEncodingPresetIndex())
@@ -40,34 +59,28 @@ module Orchard.Azure.MediaServices.Admin.Settings
clientViewModel.defaultWamsEncodingPresetIndex(clientViewModel.defaultWamsEncodingPresetIndex() - 1);
}
export function addNewWamsEncodingPreset()
{
clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
export function addNewWamsEncodingPreset() {
clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
}
export function deleteSubtitleLanguage(languageCultureCode: StringItem)
{
export function deleteSubtitleLanguage(languageCultureCode: StringItem) {
clientViewModel.subtitleLanguages.remove(languageCultureCode);
}
export function addNewSubtitleLanguage()
{
export function addNewSubtitleLanguage() {
clientViewModel.subtitleLanguages.push(new StringItem("Unnamed"));
$("#languages-table tbody:first-of-type tr:last-of-type td:nth-child(1) input").focus().select();
}
$(function ()
{
$.each(initWamsEncodingPresets, function (presetIndex: number, presetName: string)
{
clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
$(function () {
$.each(initWamsEncodingPresets, function (presetIndex: number, preset: any) {
clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
});
clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string)
{
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string) {
clientViewModel.subtitleLanguages.push(new StringItem(languageCultureCode));
});
@@ -80,6 +93,6 @@ module Orchard.Azure.MediaServices.Admin.Settings
localStorage.setItem("selectedCloudMediaSettingsTab", $("#tabs").tabs("option", "active"));
},
active: localStorage && localStorage.getItem ? localStorage.getItem("selectedCloudMediaSettingsTab") : null
}).show();
}).show();
});
}

View File

@@ -38,8 +38,8 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
public override TaskConfiguration Editor(dynamic shapeFactory, IUpdateModel updater) {
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
var viewModel = new EncodeViewModel() {
EncodingPresets = settings.WamsEncodingPresets,
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex] : null
EncodingPresets = settings.WamsEncodingPresets.Select(x => x.Name),
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex].Name : null
};
if (updater != null) {
@@ -66,12 +66,14 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
}
public override ITask CreateTask(TaskConfiguration config, TaskCollection tasks, IEnumerable<IAsset> inputAssets) {
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
var viewModel = (EncodeViewModel)config.Settings;
var encodingPreset = settings.WamsEncodingPresets.Where(x => x.Name == viewModel.SelectedEncodingPreset).Single();
var task = tasks.AddNew(
viewModel.SelectedEncodingPreset,
_wamsClient.GetLatestMediaProcessorByName(MediaProcessorName.WindowsAzureMediaEncoder),
viewModel.SelectedEncodingPreset,
!String.IsNullOrEmpty(encodingPreset.CustomXml) ? encodingPreset.CustomXml : encodingPreset.Name,
TaskOptions.None);
task.InputAssets.AddRange(inputAssets);

View File

@@ -1,35 +1,30 @@
h2 {
margin-top: 1em !important;
margin-top: 1em !important;
}
#test-button,
#save-button {
margin-top: 1em;
margin-top: 1em;
}
#presets-table {
width: auto;
width: auto;
}
#presets-table th:nth-child(1),
#presets-table th:nth-child(3),
#presets-table th:nth-child(4),
#presets-table td:nth-child(1),
#presets-table td:nth-child(3) {
text-align: center;
#presets-table td:nth-child(4) {
text-align: center;
}
#presets-table td:nth-child(2) {
width: 400px;
width: 400px;
}
#languages-table {
width: auto;
/*td:nth-child(2) {
width: auto;
/*td:nth-child(2) {
width: 400px;
}*/
}
#languages-table th:nth-child(2),
#languages-table td:nth-child(2) {
text-align: center;
text-align: center;
}
/*# sourceMappingURL=cloudmedia-admin-settings.css.map */

View File

@@ -0,0 +1,9 @@
{
"version": 3,
"file": "cloudmedia-admin-settings.css",
"sources": [
"cloudmedia-admin-settings.less"
],
"names": [],
"mappings": "AAAA;EACC,0BAAA;;AAGD;AAAc;EACb,eAAA;;AAGD;EACC,WAAA;;AADD,cAEC,GAAE,UAAU;AAFb,cAEkB,GAAE,UAAU;AAF9B,cAEmC,GAAE,UAAU;AAF/C,cAEoD,GAAE,UAAU;EAC9D,kBAAA;;AAHF,cAKC,GAAE,UAAU;EACX,YAAA;;AAIF;EACC,WAAA;;;;;AADD,gBAEC,GAAE,UAAU;AAFb,gBAEkB,GAAE,UAAU;EAC5B,kBAAA"
}

View File

@@ -8,7 +8,7 @@
#presets-table {
width: auto;
th:nth-child(1), th:nth-child(3), td:nth-child(1), td:nth-child(3) {
th:nth-child(1), th:nth-child(4), td:nth-child(1), td:nth-child(4) {
text-align: center;
}
td:nth-child(2) {

View File

@@ -1,8 +1,9 @@
using System.Collections.Generic;
using Orchard.Azure.MediaServices.Models;
namespace Orchard.Azure.MediaServices.ViewModels.Settings {
public class EncodingSettingsViewModel {
public IEnumerable<string> WamsEncodingPresets { get; set; }
public IEnumerable<EncodingPreset> WamsEncodingPresets { get; set; }
public int DefaultWamsEncodingPresetIndex { get; set; }
}
}

View File

@@ -1,7 +1,7 @@
@model Orchard.Azure.MediaServices.ViewModels.Settings.EncodingSettingsViewModel
@using (Script.Head()) {
<script type="text/javascript">
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("'{0}'", s))) : Html.Raw(""))];
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("{{name: '{0}', customXml: '{1}'}}", s.Name, HttpUtility.JavaScriptStringEncode(s.CustomXml)))) : Html.Raw(""))];
var initDefaultWamsEncodingPresetIndex = @Model.DefaultWamsEncodingPresetIndex +0;
</script>
}
@@ -18,13 +18,25 @@
<tr>
<th scope="col">@T("Default")</th>
<th scope="col">@T("Name")</th>
<th scope="col">@T("Type")</th>
<th scope="col"></th>
</tr>
</thead>
<tbody data-bind="foreach: wamsEncodingPresets">
<tr>
<td><input type="radio" name="presets-requiredUploads" data-bind="value: $index(), checked: $parent.defaultWamsEncodingPresetIndex" /></td>
<td><input type="text" class="text large" data-bind="value: value, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index(), name: 'EncodingSettings.WamsEncodingPresets[' + $index() + ']'}" /></td>
<td>
<input type="text" class="text large" data-bind="value: name, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().Name, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].Name'}" />
<section class="preset-custom-section" data-bind="visible: isExpanded">
<label>@T("Custom encoding preset XML")</label>
<textarea data-bind="value: customXml, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().CustomXml, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].CustomXml'}"></textarea>
<p class="hint">@T("Leave empty if this is standard preset (in which case the name must match a standard Microsoft Azure Media Services encoding preset name.")</p>
</section>
</td>
<td>
<strong data-bind="text: type"></strong>&nbsp;
<a href="#" data-bind="click: toggle">@T("Change")</a>
</td>
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset">@T("Delete")</a></td>
</tr>
</tbody>
@@ -33,6 +45,7 @@
<td></td>
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset"><i class="icon-plus-sign icon-large"></i> Add new</a></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>