tim128 пишет:Чтобы совсем уж все в ажуре было, согласен, стоит воспроизвести мини-ролик с сообщением об ошибке. Буду признателен, если поможете такой сделать.
Есть у меня два волшебных скрипта на сервере для формирования картинки из текста. Как они работают и какие параметры принимают, можно поизучав из содержимое.
Один videopreview.php, другой videomessage.php.
(Код там ужасен, но свою функцию делают)
videomessage.php - для простых сообщений, где выводится заголовок и текст сообщения.
Второй - videopreview.php - для более сложных картинок и большого текста. Он используется для формирования описаний фильма.
Объясню пока как можно использовать videomessage.php для видео сообщения.
Например, при возникновении внештатной ситуации нам нужно вместо запрошенного видео вывести своё другое видео с сообщением об ошибке.
Тогда можно вызвать скрипт с параметрами caption и msg и сохранить полученную картинку как файл.
Например: http://wonky.lostcut.net/videomessage.p … тствует%21
Такие как captfont, captcolor, captsize, font, color, fontsize, bckgrnd.
Значение цвета в captcolor и color задаётся как RGB цвет в HEX представлении (#F00 - красный, #0F0 - зелёный, 00F - синий, 0FD911, #D55...). Знак решетки необязателен.
Имя шрифта captfont и font только то, файл которого загружен на сервер: Adam, PentaBold, DejaVuSansMono-Bold, UKIJMe, LiberationMono-Regular, DejaVuSansMono, AGFriquer_Bold.
bckgrnd - имя загруженной картинки для фона (background, Dark_1920x1080, payload114.cargocollective.com-1-7-225471-4588633-BG_DarkWood_o, abstract_background_49-2560x1600, Austere_gray_desktop_background).
Пример.
Теперь мы можем сформировать картинку, скачать её и задать параметры для создания видео слайд шоу из этой картинки.
Например для ffmpeg можно задать такие параметры для формирования видео из картинки:
ffmpeg -loop 1 -i image.jpg caption=ds -c:v libx264 -t 7 -pix_fmt yuv420p out.mp4
Можно сделать специальную функцию для этого:
///////////////////////////////////////////////////////////////////////////////
// Формирование видео сообщение с заданным заголовком и сообщением
Procedure ShowVideoMessage(sCaption, sMessage: String);
Var
sFile, sLink: String;
Begin
sFile := HmsTempDirectory+'\image.jpg';
sLink := 'http://wonky.lostcut.net/videomessage.php?caption='+HmsHttpEncode(sCaption)+'&msg='+HmsHttpEncode(sMessage);
HmsDownloadURLToFile(sLink, sFile);
MediaResourceLink := '-loop 1 -i "'+sFile+'" -c:v libx264 -t 7 -pix_fmt yuv420p';
End;
И вызывать эту функцию примерно можно так (где-нибудь в конце скрипта, будем считать, что пустая MediaResourceLink это ошибка):
If MediaResourceLink = '' Then ShowVideoMessage('1TTV', 'Запрашиваемый канал в данный момент не доступен');
Но я тут вспомнил про одну засаду. Мне пользователи потом говорили, что некоторые телевизоры отказываются воспроизводить такое видео, ругаясь на аудио дорожку, которого, естественно, в этом видео нет.
Поэтому мне пришлось выдумывать звуковую заглушку и указывать в параметрах.
Например, можно скачивать небольшой аудио файл и добавлять его. И функция формирования видео сообщения будет уже такая:
///////////////////////////////////////////////////////////////////////////////
// Формирование видео сообщение с заданным заголовком и сообщением
Procedure ShowVideoMessage(sCaption, sMessage: String);
Var
sLink, sFileImg, sFileMP3: String;
Begin
sFileImg := HmsTempDirectory+'\image.jpg';
sFileMP3 := HmsTempDirectory+'\audio.mp3';
sLink := 'http://wonky.lostcut.net/videomessage.php?caption='+HmsHttpEncode(sCaption)+'&msg='+HmsHttpEncode(sMessage);
HmsDownloadURLToFile(sLink, sFileImg);
sLink := 'http://wonky.lostcut.net/mp3/sa.mp3';
If Not FileExists(sFileMP3) Then HmsDownloadURLToFile(sLink, sFileMP3);
MediaResourceLink := Format('-loop 1 -i "%s" -i "%s" -shortest -c:v libx264 -pix_fmt yuv420p -c:a copy', [sFileImg, sFileMP3]);
End;
Но тут масса вариантов и есть место для фантазии, как это можно всё сделать.
Sony Bravia KDL-32CX523