Пошаговое руководство. Настройка отправки видео
Дата последнего изменения: 27 сентября 2010 г.
Применимо к: SharePoint Server 2010
В этой статье
Страница отправки и веб-часть "Мультимедиа"
Скрытый элемент управления Silverlight
Тестовая страница MediaTest.aspx
Тег <object> и extractionControl
Кнопка "Задать эскиз"
Поля "URL-адрес изображения для просмотра", "Ширина кадра" и "Высота кадра"
Этот раздел является третьим в серии пошаговых руководств, обучающих созданию и настройке сайта для совместного использования видео.
Теперь, когда создана форма просмотра, где пользователи могут просматривать видео, можно приступить к настройке механизма отправки видео. В этом пошаговом руководстве показано, как реализовать элементы управления для автоматического извлечения эскиза из видеофайлов. Такая реализация более эффективна, чем реализация в Microsoft SharePoint Server 2010 по умолчанию, в которой пользователи должны вручную указывать URL-адрес эскиза для видео.
В данном руководстве рассматриваются три задачи:
Создание страницы Форма для изменения элемента и добавление на нее объекта MediaWebPart. Настраиваемая форма играет роль страницы отправки и отображается, когда пользователь выбирает для видео команду Свойства представления.
Добавление на страницу скрытого элемента управления Microsoft Silverlight. Скрытое приложение Microsoft Silverlight преобразует эскиз из объекта MediaWebPart в поддерживаемый формат изображения.
Добавление кнопки Задать эскиз с помощью ECMAScript (JavaScript, JScript). Когда пользователь нажимает кнопку Задать эскиз, объектная модель JavaScript для объекта MediaWebPart захватывает соответствующий кадр, вызывает размещенное на странице приложение Silverlight для сохранения эскиза в библиотеку Эскизы, автоматически задает для видео URL-адрес изображения эскиза и скрывает поле PreviewImageUrl.
Необходимые компоненты
Внимание! |
---|
Для использования этого руководства необходимо знать технологию Silverlight. SDK Microsoft SharePoint 2010 включает пример кода для решения Silverlight, которое выполняет описанные здесь функции. Пример кода приведен исключительно в целях демонстрации возможностей и не должен использоваться непосредственно в производственных приложениях. |
Пройдите раздел Пошаговое руководство. Создание видеосайта.
Страница отправки и веб-часть "Мультимедиа"
Как показано в разделе Пошаговое руководство. Создание видеосайта, создайте в библиотеке Видео с помощью Microsoft SharePoint Designer 2010Формы для изменения элемента и добавьте на нее объект MediaWebPart.
Создание формы для изменения элемента с помощью SharePoint Designer
Запустите Microsoft SharePoint Designer 2010 и перейдите на сайт SharePoint.
В области Навигация слева нажмите кнопку Списки и библиотеки, а затем выберите библиотеку Видео.
Нажмите кнопку Создать, чтобы открыть диалоговое окно Создание формы списка.
В диалоговом окне Создание формы списка задайте параметры, как показано в таблице 1.
Таблица 1. Параметры диалогового окна "Создание формы списка"
Параметр
Значение
Тип формы
Форма для изменения элемента
Назначить формой, используемой по умолчанию для выбранного типа
Да
Тип контента
Видео
В разделе Формы щелкните правой кнопкой мыши созданную форму, а затем выберите команду Изменить файл в расширенном режиме.
Откроется новая форма просмотра, которую можно настроить. Это форма по умолчанию, которая отображается, когда пользователь выбирает для видео команду Свойства представления. Для недавно загруженных видеофайлов поля Title и PreviewImageURL, скорее всего, будут пустыми.
Важно! |
---|
Дополнительные сведения о получении URL-адреса видео и создании объекта MediaWebPart для страницы отправки видео см. в разделе Веб-часть "Форма скрытых данных" статьи Пошаговое руководство. Создание видеосайта. Чтобы добавить на форму правки мультимедиа-проигрыватель, повторите действия из процедуры «Добавление веб-части "Мультимедиа"». |
Скрытый элемент управления Silverlight
Настраиваемый элемент управления Silverlight управляет извлечением и отправкой файлов эскизов из текущего кадра объекта MediaWebPart. На верхнем уровне код предоставляет отдельный метод JavaScript, который считывает и задает параметры, используемые при преобразовании и отправке, и возвращает имя файла каждого отправленного изображения эскиза. Чтобы повысить вероятность успешного извлечения изображения, в коде в имя файла добавляются случайные знаки-заполнители.
/* convertAndUploadThumbnail: Parameters:
* - sImageAsEncodedBitmap: The bitmap generated by the media player.
* - nWidth: The width of the thumbnail image.
* - nHeight: The height of the thumbnail image.
* - sFileNameToUse: The name of the file to use (without the file extension)
* - sWebUrl: The URL of the Web to which the thumnbnail image should be uploaded.
* - sServerRelativeListUrl: The server-relative URL of the list where the thumbnail should be uploaded.
* Returns:
* The file name of the uploaded thumbnail, constructed by adding a random character to
* sFileNameToUse and appending the file extension.
* (This is not the full URL; this is only the name of the leaf.)
*/
Совет |
---|
Полный пример кода Silverlight для извлечения изображения эскиза находится в папке C:\Program Files\Microsoft SDKs\SharePoint 2010\Microsoft SDKs\SharePoint 2010\Samples загруженного пакета SDK SharePoint 2010. |
Основная логика настраиваемого элемента управления реализована в файле MainPage.xaml.cs. Код преобразует изображение эскиза, предоставленное объектом MediaWebPart, в формат JPG. Для отправки JPG-файла в указанное расположение используется объектная модель SharePoint на стороне клиента.
Проект Visual Studio 2010 создает один файл ключа, ExtractThumbnail.xap, содержащий исполняемый файл. Чтобы развернуть XAP-файл, отправьте его в Библиотеку стилей сайта.
Отправка XAP-файла в библиотеку стилей
Перейдите на сайт SharePoint и откройте любую страницу.
Нажмите кнопку Весь контент сайта, а затем выберите пункт Библиотека стилей.
На вкладке Документы нажмите кнопку Отправка, чтобы отправить XAP-файл.
Опубликуйте XAP-файл и задайте для него основной номер версии, чтобы все пользователи могли получить к нему доступ.
Тестовая страница MediaTest.aspx
Проект Visual Studio 2010 включает тестовую страницу MediaTest.aspx, с помощью которой можно выполнять самотестирование приложения на одной странице. После отправки созданного проектом XAP-файла (на URL-адрес, указанный на странице MediaTest.aspx) загрузите страницу в любую библиотеку документов SharePoint и откройте эту страницу.
Тег <object> и extractionControl
Чтобы приложение Silverlight стало доступно на странице отправки, добавьте с помощью SharePoint Designer 2010 тег <object>, который загружает приложение и включает его в инструкцию <div> с известным идентификатором, например extractionControl. Замените URL-адрес для параметра source на URL-адрес, указывающий на ранее отправленный XAP-файл.
<div id="extractionControl">
//The user sets the width and height. For debugging purposes, the control displays text stating whether
//the upload succeeded or failed. To suppress debugging messages, set the width and height to very small
// values.
// <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="30px" id="ExtractControlSilverlight">
<param name="source" value="http://<server>/Style%20Library/ExtractThumbnail.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
// Markup is emitted if the user does not have Silverlight installed. The HTML renders an image link
// suggesting that they download Silverlight.
<a href="https://go.microsoft.com/fwlink/?linkid=149156&clcid=0x419" style="text-decoration:none">
<img src="https://go.microsoft.com/fwlink/?linkid=108181&clcid=0x419" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
</div>
Программный доступ к элементу управления "Извлечение" Silverlight осуществляет аналогично доступу к объекту MediaWebPart, как показано в разделе Пошаговое руководство. Создание видеосайта — доступ к элементу управления осуществляется со страницы отправки. Вставьте на страницу функцию JavaScript, чтобы получить доступ к элементу управления "Извлечение" Silverlight как к объекту JavaScript.
function getExtractorControl()
{
var control = document.getElementById("extractionControl").childNodes[0];
return control.Content.MainPage;
}
Кнопка "Задать эскиз"
Добавьте на страницу элемент кнопки, добавив код JavaScript, желательно рядом с кодом мультимедиапроигрывателя: <input onclick="captureThumbnailAndSetMetadata();" type="button" value="Set Thumbnail"/>
Код JavaScript для этой кнопки извлекает параметры, необходимые элементу управления Silverlight.
Таблица 2. Параметры кнопки ECMAScript
Параметр |
Метод извлечения и вычисления |
---|---|
Эскиз |
Извлекается из объекта MediaWebPart с помощью метода CaptureCurrentFrame в JavaScript. |
Высота и ширина эскиза |
Вычисление правильной высоты и ширины выполняется в два этапа. Размер объекта MediaWebPart не всегда равен размеру возвращаемого эскиза, поскольку пропорции прямоугольника эскиза могут отличаться от пропорций видео. Для вычисления высоты и ширины сначала необходимо вычислить естественные пропорции видео, отображаемого в объекте MediaWebPart с помощью свойств NaturalVideoWidth и NaturalVideoHeight изображения эскиза. Затем на основе естественных пропорций необходимо вычислить размер возвращенного изображения эскиза. В зависимости от пропорций размер будет равен полной ширине проигрывателя, умноженной на более короткую высоту, либо полной высоте проигрывателя, умноженной на более короткую ширину. |
Имя файла изображения эскиза |
В качестве этого значения можно указать произвольную текстовую строку. Например, можно взять значение Title, которое использовалось в объекте MediaWebPart. Также можно взять случайную строку, созданную JavaScript. |
URL-адрес сервера |
Этому параметру в коде жестко присвоено имя текущего сервера (в примерах кода представлено заполнителем <сервер>). |
Относительный к серверу URL-адрес библиотеки документов для хранения эскизов |
Этот параметр жестко задан в URL-адресе /Thumbnails, основанном на указанном ранее имени библиотеки эскизов. |
После отправки эскиза элементом управления Silverlight в коде JavaScript используется набор данных для значений свойств, указанных в таблице 3.
Таблица 3. Данные значений свойств
Имя поля |
Определение |
---|---|
URL-адрес изображения для просмотра |
URL-адрес основан на имени файла, возвращаемого из элемента управления Silverlight. |
Ширина кадра |
Ширина видео, вычисленная ранее. |
Высота кадра |
Высота видео, вычисленная ранее. |
Для заполнения полей в таблице 3 значениями, возвращаемыми кодом, функция JavaScript программно обходит в цикле все поля ввода на форме и при нахождении нужного поля заполняет его соответствующим значением.
function captureThumbnailAndSetMetadata()
{
//Get the media player and extraction control.
var mediaPlayerObj = getMediaPlayer();
var slExtractorControl = getExtractorControl();
//Get the natural height and width of the video from the object model for the media player.
var nHeight = mediaPlayerObj.NaturalVideoHeight;
var nWidth = mediaPlayerObj.NaturalVideoWidth;
//Calculate the actual height and width of the thumbnail image based on the natural versus current aspect ratio.
var naturalAspectRatio = nWidth/nHeight;
var originalHeight = 225; //This value must match the height of the media player on the page.
var originalWidth = 300; //This value must match the width of the media player on the page.
var originalAspectRatio = originalWidth/originalHeight;
var thumbnailWidth;
var thumbnailHeight;
if (originalAspectRatio > naturalAspectRatio)
{
thumbnailHeight = originalHeight;
thumbnailWidth = originalHeight * naturalAspectRatio;
}
else
{
thumbnailWidth = originalWidth;
thumbnailHeight = thumbnailWidth/naturalAspectRatio-1;
}
//Finished computing the thumbnail height and width.
//Get the current frame from the media player.
var sThumbnail = mediaPlayerObj.CaptureCurrentFrame();
//Get the file name to start with from the media player.
var sFileName = (document.getElementsByName('mediaTitle'))[0].innerText;
//Calls the Extractor Control, which returns the file name of the actual thumbnail.
//Replace <server> with the name of your server and update folder parameters as needed.
var sThumbnailFileName = slExtractorControl.convertAndUploadThumbnail(sThumbnail, thumbnailWidth, thumbnailHeight, sFileName, "http://<server>/", "/Video Thumbnails");
//Begin setting the relevant metadata.
var sThumbnailUrl = "http://<server>/Video Thumbnails/"+sThumbnailFileName;
//Get the input fields in a single array to set the URL.
var sInputFields = document.getElementsByTagName('input');
//Loop through all the input fields and look for the fields we want to set.
var i;
for (i=0; i<(sInputFields.length);i++)
{
//Indicates that the preview image URL is found.
if (sInputFields[i].title == 'Preview Image URL')
{
sInputFields[i].value=sThumbnailUrl;
}
//Indicates that the frame width is found.
if (sInputFields[i].title == 'Frame Width')
{
sInputFields[i].value=thumbnailWidth;
}
// Indicates that the frame height is found.
if (sInputFields[i].title == 'Frame Height')
{
sInputFields[i].value=thumbnailHeight;
}
}
}
Поля "URL-адрес изображения для просмотра", "Ширина кадра" и "Высота кадра"
Скройте в графическом интерфейсе поля URL-адрес изображения для просмотра, Ширина кадра и Высота кадра, чтобы пользователи не пытались вручную ввести или изменить значения этих полей. Чтобы скрыть поля, воспользуйтесь конструктором в Microsoft SharePoint Designer 2010 для поиска соответствующих элементов <tr> для каждой строки таблицы, содержащей эти поля, и присвоения атрибуту style значения style=display:none. Этот параметр скрывает поля от пользователя, оставляя их на странице, где их значения можно задать с помощью объектной модели ecmascriptshort.
Следующие действия
См. также
Задачи
Практическое руководство. Настройка объекта MediaWebPart с помощью ECMAScript
Концепции
Пошаговые руководства. Создание и настройка сайта совместного доступа к видео