Речь о web-интерфейсе и ссылке HMS-сервера.slawa321 wrote:Я чего то недопонимаю :Eugene wrote:Возможно будет полезно: в ссылке на медиа-ресурс могут быть параметрыТ.е. плейлист можно сформировать скриптом.Code: Select all
?transcoding=1×tart=количество_секунд
Добавил в скрипте получения ссылки
MediaResourceLink := video+'?transcoding=1×tart=500';
Фильм с vk.com все равно запустился сначало ,а как надо?
Помощь в создании подкастов
Re: Помощь в создании подкастов
Re: Помощь в создании подкастов
Конечно, было бы полезно... Но, увы, нужны объяснения.Eugene wrote:Возможно будет полезно: в ссылке на медиа-ресурс могут быть параметрыТ.е. плейлист можно сформировать скриптом.Code: Select all
?transcoding=1×tart=количество_секунд
1) Правильно сформированная ссылка должна выглядеть так:
192.168.0.19:45397/MediaServer/VideoItems/765c8fb80fc4ba87b04060b79e7b1011.mpg?transcoding=1×tart=600
?
2)эти параметры обрабатываются автоматом или их надо перехватывать веб-скриптом?
Я попробовал вышеприведенную ссылку -- увы, воспроизводит с начала.
Re: Помощь в создании подкастов
Параметры обрабатываются HMS-сервером и работают, но есть проблема с продолжением транскодирования по предыдущему запросу при смене значения timestart, возможно с этим и столкнулись.VVS1234 wrote:Конечно, было бы полезно... Но, увы, нужны объяснения.Eugene wrote:Возможно будет полезно: в ссылке на медиа-ресурс могут быть параметрыТ.е. плейлист можно сформировать скриптом.Code: Select all
?transcoding=1×tart=количество_секунд
1) Правильно сформированная ссылка должна выглядеть так:
192.168.0.19:45397/MediaServer/VideoItems/765c8fb80fc4ba87b04060b79e7b1011.mpg?transcoding=1×tart=600
?
2)эти параметры обрабатываются автоматом или их надо перехватывать веб-скриптом?
Я попробовал вышеприведенную ссылку -- увы, воспроизводит с начала.
По поводу создания плейлиста по папке "Интервал 01 минута", простого пути не нашлось, основная проблема - папки "Интервал 01 минута" еще нет, когда требуется плейлист и классы не поддерживают требуемую функциональность (форсированное создание дочерних элементов).
Шаблон для поиска папки "Интервал 01 минута" в скрипте Web-интерфейса, ссылка на плейлист в строке HmsLogMessage(...
Code: Select all
procedure CheckChildItems(aMediaItem: THmsScriptMediaItem);
begin
if not aMediaItem.HasChildItems then try
HmsDownloadUrl('http://' + ServerAddress + aMediaItem.WebLink(aMediaItem));
except end
end;
function FindIntervalFolder(aMediaItem: THmsScriptMediaItem): THmsScriptMediaItem;
var
i: Integer;
MediaItemFolder, TranscodingFolder: THmsScriptMediaItem;
begin
Result := nil; TranscodingFolder := nil;
for i := 0 to CurrentMediaItemList.Count - 1 do
if CurrentMediaItemList[i].Properties[mpiTitle] = 'Транскодирование' then begin
TranscodingFolder := CurrentMediaItemList[i]; Break
end;
if TranscodingFolder <> nil then begin
CheckChildItems(TranscodingFolder);
MediaItemFolder := TranscodingFolder.FindItemByProperty(mpiTitle, '(T) ' + aMediaItem.Properties[mpiTitle]);
if MediaItemFolder <> nil then begin
CheckChildItems(MediaItemFolder);
Result := MediaItemFolder.FindItemByProperty(mpiTitle, '(T) Интервал 01 минута ');
if Result <> nil then
HmsLogMessage(1, 'http://' + ServerAddress + aMediaItem.WebLink(Result)); // Воспроизведение Всех
end
end
end;
Re: Помощь в создании подкастов
Eugene,
все сделал до момента передачи плейлиста.
При получении плейлиста Дюна выдает ошибку -- Ошибка загрузки файла. При проверке по чистому веб-интерфейсу (без плагина) браузер регистрирует ошибку failed loading file.
Та же ситуация при попытке пройти через Дюна веб браузер в папку транскодирования - "Интервал 01 минута" - "воспроизвести все" (в настройках указана передача плейлиста по веб-интерфейсу). Появляется ссылка на m3u плейлист -- и ошибка загрузки файла.
При этом:
1) По веб-интерфейсу на ПК -- все работает. Плейлист грузится и воспроизводится в vlc.
2) Загруженный на ПК плейлист работает на Дюне -- все загружается, видео воспроизводится.
Посмотрите, пожалуйста -- может есть решение?
Иначе придется, видимо, идти через создание плейлиста в файле.
все сделал до момента передачи плейлиста.
При получении плейлиста Дюна выдает ошибку -- Ошибка загрузки файла. При проверке по чистому веб-интерфейсу (без плагина) браузер регистрирует ошибку failed loading file.
Та же ситуация при попытке пройти через Дюна веб браузер в папку транскодирования - "Интервал 01 минута" - "воспроизвести все" (в настройках указана передача плейлиста по веб-интерфейсу). Появляется ссылка на m3u плейлист -- и ошибка загрузки файла.
При этом:
1) По веб-интерфейсу на ПК -- все работает. Плейлист грузится и воспроизводится в vlc.
2) Загруженный на ПК плейлист работает на Дюне -- все загружается, видео воспроизводится.
Посмотрите, пожалуйста -- может есть решение?
Иначе придется, видимо, идти через создание плейлиста в файле.
Re: Помощь в создании подкастов
HMS-сервер отдает плейлист (m3u, pls), на этом все заканчивается. Может быть Web Browser Дюны не поддерживает плейлисты.VVS1234 wrote:Eugene,
все сделал до момента передачи плейлиста.
При получении плейлиста Дюна выдает ошибку -- Ошибка загрузки файла. При проверке по чистому веб-интерфейсу (без плагина) браузер регистрирует ошибку failed loading file.
Та же ситуация при попытке пройти через Дюна веб браузер в папку транскодирования - "Интервал 01 минута" - "воспроизвести все" (в настройках указана передача плейлиста по веб-интерфейсу). Появляется ссылка на m3u плейлист -- и ошибка загрузки файла.
Re: Помощь в создании подкастов
Работающий скрипт готов
.
К сожалению, использовать шаблон Евгения не удалось -- у меня в интернет подкастах нет папки "транскодирование"ю Поэтому пришлось идти в лоб -- вверх по дереву до root и вниз по ветке транскодиорвания -- Евгений легко узнает останки своего header
. Минусы в том, что идти приходится по именам папок, а значит дублированные названия создадут проблемы. Любые предложения по улучшению приветствуются.
Изменения:
28.12.12 Почищенная и улучшенная версия.
Внимание -- при некоторых условиях (точно пока не знаю, возможно, при большом объеме подкаст-ресурсов) функция FindItemByProperty (равно как и все .child-методы) может работать некорректно на папках внутри "Транскодирование", особенно внутри папок "(Т) ..." (проверено на 2-х компах -- win XP и win 7). Лечится командой "Открыть все" на папке "Транскодирование" либо на папке интересующего подкаста -- при раскрытой папке скрипт работает штатно.

К сожалению, использовать шаблон Евгения не удалось -- у меня в интернет подкастах нет папки "транскодирование"ю Поэтому пришлось идти в лоб -- вверх по дереву до root и вниз по ветке транскодиорвания -- Евгений легко узнает останки своего header

Code: Select all
function TranscodedFolder(var aItem: THmsScriptMediaItem): THmsScriptMediaItem;
var
i: Integer;
FolderList: TList;
sWebLink, sText: string;
FolderItem: THmsScriptMediaItem;
begin
FolderItem := aItem;
sText :='';
if FolderItem <> nil then begin
FolderList := TList.Create;
try
while FolderItem <> HmsFindMediaFolder(mfVideoItemsFolderID) do begin
sText := sText +'\'+ FolderItem.Properties[mpiTitle];
FolderList.Add(FolderItem);
FolderItem := FolderItem.ItemParent;
sText := sText +'\'+ FolderItem.Properties[mpiTitle];
end;
HmsLogMessage(1,sText);
sText :='';
FolderItem := HmsFindMediaFolder(mfVideoTranscodingItemsID );
for i := FolderList.Count - 1 downto 0 do begin
if(THmsScriptMediaItem(FolderList[i]).IsFolder) then
FolderItem := FolderItem.FindItemByProperty(mpiTitle,THmsScriptMediaItem(FolderList[i]).Properties[mpiTitle ])
else
FolderItem := FolderItem.FindItemByProperty(mpiFilePath,THmsScriptMediaItem(FolderList[i]).Properties[mpiFilePath ]);
sText := sText +'\'+ FolderItem.Properties[mpiTitle];
end;
except
FolderItem := aItem
end
end;
Result := FolderItem.FindItemByProperty(mpiTitle, '(T) Èíòåðâàë 01 ìèíóòà ');
if Result = nil then
Result:= aItem;
sText := sText +'\'+ Result.Properties[mpiTitle];
HmsLogMessage(1,sText);
end;
var
Item: THmsScriptMediaItem;
begin
Item := CurrentMediaItem;
Item := TranscodedFolder (Item);
sWebLink := 'http://' + ServerAddress + '/MediaServer/Playlists/'+Item.Properties[mpiItemID] + '.m3u?fileext=.m3u';
HmsStringToFile(HmsDownloadURL(sWebLink),ProgramPath + '\flv_playlist.m3u');
sWebLink := ProgramPath + '\flv_playlist.m3u';
end.
28.12.12 Почищенная и улучшенная версия.
Внимание -- при некоторых условиях (точно пока не знаю, возможно, при большом объеме подкаст-ресурсов) функция FindItemByProperty (равно как и все .child-методы) может работать некорректно на папках внутри "Транскодирование", особенно внутри папок "(Т) ..." (проверено на 2-х компах -- win XP и win 7). Лечится командой "Открыть все" на папке "Транскодирование" либо на папке интересующего подкаста -- при раскрытой папке скрипт работает штатно.
Re: Помощь в создании подкастов
Дюна поддерживает плейлисты. Даже если выбрать параметр "передавать плейлист при веб-навигации" Дюна работает штатно как по одиночным файлам, так и по списку серий.HMS-сервер отдает плейлист (m3u, pls), на этом все заканчивается. Может быть Web Browser Дюны не поддерживает плейлисты.
Проблема возникает почему-то только для папки поминутной разбивки. Может, проблема в настройках у меня? Проверьте, если можно, воспроизводима ли проблема.
Re: Помощь в создании подкастов
Поскольку поминутная разбивка требует установки длительности видео -- написал скрипт обработки медиа-ресурсов в "Подкастах", назначающий всем видео длительность 100 минут, если не задано иной. Буду искренне рад рекомендациям по улучшению.VVS1234 wrote:Работающий скрипт готов
Code: Select all
var
FolderList, SiblingsList: TList;
k: integer;
function GetSiblingsList(aItem: THmsScriptMediaItem): TList;
var
i: integer;
SiblingsList: TList;
begin
SiblingsList := TList.Create;
for i:= 0 to aItem.ItemParent.ChildCount - 1 do begin
SiblingsList.Add(aItem.ItemParent.ChildItems[i]);
end;
result := SiblingsList
end;
procedure ProcessItem(aItem: THmsScriptMediaItem);
var
i: Integer;
begin
if(aItem.MediaType = mtVideo)then
if (length(aItem.Properties[mpiTimeLength ])=0) then
aItem.Properties[mpiTimeLength ] := '1:40:00.000';
end;
var
i,l: Integer;
Podcasts, aItem: THmsScriptMediaItem;
begin
Podcasts := HmsFindMediaFolder(mfVideoPodcastsFolderItemID);
if (Podcasts <> nil) and (Podcasts.ChildCount > 0) then begin
HmsShowProgress('Установка длительности по умолчанию...');
FolderList := TList.Create;
aItem := THmsScriptMediaItem(Podcasts.ChildItems[0]);
FolderList.Add(aItem);
for k := 0 to Podcasts.ChildCount-1 do begin
FolderList := TList.Create;
aItem := THmsScriptMediaItem(Podcasts.ChildItems[k]);
FolderList.Add(aItem);
hmslogmessage(1,THmsScriptMediaItem(FolderList[0]).Properties[mpiTitle]);
if (THmsScriptMediaItem(FolderList[0]) <> nil) and (THmsScriptMediaItem(FolderList[0]).ChildCount > 0) then begin
try
repeat
aItem := aItem.ChildItems[0];
FolderList.Add(aItem)
until (aItem.ChildCount = 0);
repeat
HmsShowProgress('Установка длительности по умолчанию '+THmsScriptMediaItem(FolderList[0]).Properties[mpiTitle]+'...');
if HmsCancelPressed then
Break
else begin
l:=FolderList.Count-1;
for i:= 0 to THmsScriptMediaItem(FolderList[l]).ItemParent.ChildCount - 1 do begin
ProcessItem(THmsScriptMediaItem(FolderList[l]).ItemParent.ChildItems[i]);
HmsSetProgress(Round(((i + 1) / THmsScriptMediaItem(FolderList[l]).ItemParent.ChildCount) * 100))
end;
repeat
FolderList.Delete(l);
l := l-1;
SiblingsList := GetSiblingsList(THmsScriptMediaItem(FolderList[l]));
i:= SiblingsList.IndexOf(THmsScriptMediaItem(FolderList[l]));
until ((l = 0) or (i <(SiblingsList.Count-1)));
if (l<>0) then begin
k:=0;
repeat
i := i+1;
FolderList[l] := Siblingslist[i];
until(Length(THmsScriptMediaItem(FolderList[l]).Properties[mpiTitle])<>0);
aItem := THmsScriptMediaItem(FolderList[l]);
if aItem.HasChildItems then
repeat
aItem := aItem.ChildItems[0];
FolderList.Add(aItem)
until (aItem.ChildCount = 0);
end;
end;
until l=0;
finally
HmsHideProgress
end
end;
end;
if HmsCancelPressed then
MessageDlg('Установка длительности видео прервано пользователем.', mtError, mbOK, 0)
else begin
HmsDatabaseAutoSave;
MessageDlg('Установка длительности видео прошло успешно.', mtInformation, mbOK, 0)
end
end else
MessageDlg('Нет файлов для обработки.', mtError, mbOK, 0);
ProcessMediaResult := True
end.
Re: Помощь в создании подкастов
А не проще в тех подкастах ,где нет вычисления длительности прописать одну строчку
что и делалось всегда и не городить огород.
Code: Select all
Item.Properties[mpiTimeLength ] := '1:40:00.000';
Моя мультимедия :Телевизор Samsung LE46D550K1, Телефон HTC HD2
Re: Помощь в создании подкастов
теоретически -- да. Но когда уже много подкастов и каждый обновляется 1-4 часа, то править скрипт + обновлять их все с новой формулой -- напряжно. Скрипт работает по готовой структуре и гораздо быстрее. Хотя и с ним проставить все длительности у меня заняло 2 часа!slawa321 wrote:А не проще в тех подкастах ,где нет вычисления длительности прописать одну строчкучто и делалось всегда и не городить огород.Code: Select all
Item.Properties[mpiTimeLength ] := '1:40:00.000';