Запуск видеофайла с определенной временной позиции
Модератор: Дед Пахом
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Запуск видеофайла с определенной временной позиции
Наткнулся на проблему - mciSendString не проигрывает файл типа "\\Server\Folder1\1.wmv". Проблема, подозреваю, в "\\Server". Неужели придётся качать на локальный ресурс?
We are hard at work… for you.
Запуск видеофайла с определенной временной позиции
0. Можно перед открытием фильма перейти (setpath) в каталог, где лежит фильм и открыть фильм без указания сервера и каталога.
1. Можно замапить каталог на сетевой диск.
2. Можно попробовать выполнить команду Subst, объявив каталог диском
А ещё (вообще невообразимо давно) тоже не получалось, выбрал файл через Directory и попросил у Клариона показать Longpath() для файла.
Получил что-то типа \*\\Server\dir\file.avi, это и передал в программу. Чудеса однако...
1. Можно замапить каталог на сетевой диск.
2. Можно попробовать выполнить команду Subst, объявив каталог диском
А ещё (вообще невообразимо давно) тоже не получалось, выбрал файл через Directory и попросил у Клариона показать Longpath() для файла.
Получил что-то типа \*\\Server\dir\file.avi, это и передал в программу. Чудеса однако...
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Запуск видеофайла с определенной временной позиции
Добавлю еще
Код: Выделить всё
cd \\Server\dir\...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Запуск видеофайла с определенной временной позиции
Нет, народ, mciSendString отрабатывает как надо серверный путь. Ошибка - на терминальном серваке, где вообще не установлена поддержка видео. Грешу пока на это. Разбираемся дальше. А может вообще такое быть, чтобы Винда не знала свой родной формат wmv?
We are hard at work… for you.
Запуск видеофайла с определенной временной позиции
Кодеки надо ставить, например, K-lite Codec Pack... Сейчас все плееры имеют встроенные кодеки, а вот винда не имеет.
Обычно после этого всё показывается нормально.
Обычно после этого всё показывается нормально.
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Запуск видеофайла с определенной временной позиции
подскажите, чтобы по завершении проигрывания файла, начал проигрывать указанные следующие видео-файлы
со своего списка - кларион таблицы или хотя бы с указанного каталога?
со своего списка - кларион таблицы или хотя бы с указанного каталога?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Запуск видеофайла с определенной временной позиции
У меня есть такой сервис. На экране Электронного Киоска при бездействии включается просмотр видео и фоток (не важно чего) из определённого каталога.
Делаю так.
Сначала считываем содержимое каталога в очередь:
Потом в таймере (прошу прощения за некоторую обрезку, что-то очень много текста, боюсь будет сложно понять). Идёт проверка на время бездействия. Если пора включать проигрывание, то:
Если уже идёт проигрывание, то:
Попробуйте разобраться. Если что, готов пояснить.
Делаю так.
Сначала считываем содержимое каталога в очередь:
Код: Выделить всё
ZZZ{prop:SQL} = 'select n.VAL ' & |
'from NASTR n ' & |
'where n.PARAM=''ETScreenSaverDir'''
if ~Access:ZZZ.Next()
directory(LOC:FileQueue,clip(ZZZ.A1) & '*.*',ff_:NORMAL)
LOC:FileQueueRecords = records(LOC:FileQueue)
loop i#=LOC:FileQueueRecords to 1 by -1
get(LOC:FileQueue,i#)
LOC:FileName = clip(ZZZ.A1) & clip(LOC:FileQueue.Name)
PathSplit(LOC:FileName, , , , LOC:FileExtension)
if clip(LOC:FileExtension)<>'.bmp' and clip(LOC:FileExtension)<>'.jpg' and clip(LOC:FileExtension)<>'.jpeg' and clip(LOC:FileExtension)<>'.png' |
and clip(LOC:FileExtension)<>'.pcx' and clip(LOC:FileExtension)<>'.jpg' and clip(LOC:FileExtension)<>'.wmf' and clip(LOC:FileExtension)<>'.avi' |
and clip(LOC:FileExtension)<>'.mp4' and clip(LOC:FileExtension)<>'.div' and clip(LOC:FileExtension)<>'.divx' and clip(LOC:FileExtension)<>'.mkv' |
and clip(LOC:FileExtension)<>'.mov' and clip(LOC:FileExtension)<>'.vob' and clip(LOC:FileExtension)<>'.wmv'
delete(LOC:FileQueue)
if error()
stop(error())
end
else
LOC:FileQueue.Name = LOC:FileName
put(LOC:FileQueue)
if error()
stop(error())
end
end
end
Код: Выделить всё
if LOC:FileCounter=LOC:FileQueueRecords
LOC:FileCounter = 1
else
LOC:FileCounter += 1
end
get(LOC:FileQueue, LOC:FileCounter)
LOC:FileName = clip(LOC:FileQueue.Name)
PathSplit(LOC:FileName, , , , LOC:FileExtension)
if clip(LOC:FileExtension)='.bmp' or clip(LOC:FileExtension)='.jpg' or clip(LOC:FileExtension)='.jpeg' or clip(LOC:FileExtension)='.png' |
or clip(LOC:FileExtension)='.pcx' or clip(LOC:FileExtension)='.jpg' or clip(LOC:FileExtension)='.wmf'
?Image1{prop:NoHeight} = True
?Image1{prop:NoWidth} = True
?IMAGE1{prop:Text} = clip(LOC:FileQueue.Name)
x1# = ?PANEL1{prop:At, 3}
x2# = ?Image1{prop:At, 3}
if x2#>x1# ! ?IMAGE1{prop:at,3}>?PANEL1{prop:at,3}
?Image1{prop:at,4} = ?Image1{prop:at,4}/?Image1{prop:at,3}*?PANEL1{prop:at,3}
?Image1{prop:at,3} = ?PANEL1{prop:at, 3}
end
x1# = ?PANEL1{prop:At, 4}
x2# = ?Image1{prop:At, 4}
if x2#>x1#
?Image1{prop:at,3} = ?Image1{prop:at,3}/?Image1{prop:at,4}*?PANEL1{prop:at,4}
?Image1{prop:at,4} = ?PANEL1{prop:at,4}
end
?Image1{prop:at,1} = ?PANEL1{prop:at,1} + (?PANEL1{prop:at,3} - ?Image1{prop:at,3}) / 2
?Image1{prop:at,2} = ?PANEL1{prop:at,2} + (?PANEL1{prop:at,4} - ?Image1{prop:at,4}) / 2
LOC:FileType = 0
else
LOC:FileType = 1
?IMAGE1{prop:Hide} = True
LOC:mciCommand = 'open "' & clip(LOC:FileName) & '" type mpegvideo alias video parent ' & 0{prop:Handle} & ' style child'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка открытия видео. Err #' & err#, 500)
end
LOC:X = ?PANEL1{prop:at,1}
LOC:Y = ?PANEL1{prop:at,2}
LOC:mciCommand = 'put video window client at ' & LOC:X & ' ' & LOC:Y & ' ' & ?PANEL1{prop:at,3} & ' ' & ?PANEL1{prop:at,4}
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка клиентского окна. Err #' & err#, 500)
end
LOC:mciCommand = 'play video'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка проигрывания видео. Err #' & err#, 500)
end
LOC:mciCommand = 'set video time format milliseconds'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'status video length'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:Duration = LOC:mciReturn
end
Код: Выделить всё
LOC:mciCommand = 'status video position'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:Position = LOC:mciReturn
if (LOC:Position>=LOC:Duration)
if LOC:FileCounter=LOC:FileQueueRecords
LOC:FileCounter = 1
else
LOC:FileCounter += 1
end
get(LOC:FileQueue, LOC:FileCounter)
LOC:FileName = clip(LOC:FileQueue.Name)
PathSplit(LOC:FileName, , , , LOC:FileExtension)
if clip(LOC:FileExtension)='.bmp' or clip(LOC:FileExtension)='.jpg' or clip(LOC:FileExtension)='.jpeg' or clip(LOC:FileExtension)='.png' |
or clip(LOC:FileExtension)='.pcx' or clip(LOC:FileExtension)='.jpg' or clip(LOC:FileExtension)='.wmf'
LOC:mciCommand = 'status video mode'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'stop video'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'close all'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:FileType = 0
?Image1{prop:NoHeight} = True
?Image1{prop:NoWidth} = True
?IMAGE1{prop:Text} = clip(LOC:FileQueue.Name)
x1# = ?PANEL1{prop:At, 3}
x2# = ?Image1{prop:At, 3}
if x2#>x1# ! ?IMAGE1{prop:at,3}>?PANEL1{prop:at,3}
?Image1{prop:at,4} = ?Image1{prop:at,4}/?Image1{prop:at,3}*?PANEL1{prop:at,3}
?Image1{prop:at,3} = ?PANEL1{prop:at, 3}
end
x1# = ?PANEL1{prop:At, 4}
x2# = ?Image1{prop:At, 4}
if x2#>x1# ! ?Image1{prop:at,4}>?PANEL1{prop:at,4}
?Image1{prop:at,3} = ?Image1{prop:at,3}/?Image1{prop:at,4}*?PANEL1{prop:at,4}
?Image1{prop:at,4} = ?PANEL1{prop:at,4}
end
?Image1{prop:at,1} = ?PANEL1{prop:at,1} + (?PANEL1{prop:at,3} - ?Image1{prop:at,3}) / 2
?Image1{prop:at,2} = ?PANEL1{prop:at,2} + (?PANEL1{prop:at,4} - ?Image1{prop:at,4}) / 2
?IMAGE1{prop:Hide} = False
LOC:Clock = clock()
LOC:FileType = 0
else
LOC:mciCommand = 'status video mode'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'stop video'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'close all'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'open "' & clip(LOC:FileName) & '" type mpegvideo alias video parent ' & 0{prop:Handle} & ' style child'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка открытия видео. Err #' & err#, 500)
end
LOC:X = ?PANEL1{prop:at,1}
LOC:Y = ?PANEL1{prop:at,2}
LOC:mciCommand = 'put video window client at ' & LOC:X & ' ' & LOC:Y & ' ' & ?PANEL1{prop:at,3} & ' ' & ?PANEL1{prop:at,4}
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка клиентского окна. Err #' & err#, 500)
end
LOC:mciCommand = 'play video'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
if err#
MessageLite('Ошибка проигрывания видео!!!', 'Ошибка проигрывания видео. Err #' & err#, 500)
end
LOC:mciCommand = 'set video time format milliseconds'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:mciCommand = 'status video length'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
LOC:Duration = LOC:mciReturn
LOC:FileType = 1
end
We are hard at work… for you.
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Запуск видеофайла с определенной временной позиции
Здесь сборник winapi классов, есть и обёртка для mciSendString:
Код: Выделить всё
player TMpegVideo
player.Open(mp3file)
player.Play()
...
if player.IsStopped() !- песня закончилась
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Запуск видеофайла с определенной временной позиции
Спасибо попробую
спасибо, с первого взгляда - простоДед Пахом писал(а): ↑15 Июль 2020, 15:37 Здесь сборник winapi классов, есть и обёртка для mciSendString:Код: Выделить всё
player TMpegVideo player.Open(mp3file) player.Play() ... if player.IsStopped() !- песня закончилась
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп