Медиа проигрыватель на 1С



Пример работы с COM-объектом «WMPlayer.OCX»

В публикации представлена обработка, которая демонстрирует работу с COM-объектом "WMPlayer.OCX". встроенным в ОС Windows, и позволяет проигрывать различные медиа-файлы, которые, видимо, поддерживаются Windows Media Player. Обработку тестировал на файлах *.mp3 (в том числе по протоколу http), видео файлы *.mp4 (воспроизводится только звук) и др. медиа-файлы. Обработка будет интересна тем, кто еще не знает, как воспроизвести аудио файл из 1С, и тем, кто хочет узнать, какие еще есть возможности в "WMPlayer.OCX" для работы с аудио файлами. В публикации представлены обработки для обычного и управляемого приложения. Кратко работа с обработкой и ее внешний вид представлены в анимации ниже: 

WMPlayer

Также, кому интересно, код процедуры воспроизведения аудио файла разными способами: 

Процедура ВоспроизвестиЗвуковойФайл(ИмяФайла) Экспорт

Ошибка = Ложь;

Попытка
COMОбъект = Новый COMОбъект("WMPlayer.OCX");
COMОбъект.URL = ИмяФайла;
COMОбъект.controls.Play();
Исключение
Ошибка = Истина;
КонецПопытки;

Если Ошибка Тогда
Попытка
COMОбъект = Новый COMОбъект("MediaPlayer.MediaPlayer");
COMОбъект.Open(ИмяФайла);
COMОбъект.Play();
Ошибка = Ложь;
Исключение
Ошибка = Истина;
КонецПопытки;
КонецЕсли;

Если Ошибка Тогда
Попытка
COMОбъект = Новый COMОбъект("WScript.Shell");
COMОбъект.Run("wmplayer """ + ИмяФайла + """", 0, Ложь);
Ошибка = Ложь;
Исключение
Ошибка = Истина;
КонецПопытки;
КонецЕсли;

КонецПроцедуры

Каждый может добавить и свой способ.

 

 Обновление 2024/04/28

 

 Обновление 2024/09/25

 

26 Comments

  1. Fox-trot

    боян

    Reply
  2. frkbvfnjh

    Спасибо! Деструктивненькая критика 🙂

    Reply
  3. webester

    (1)Да? А когда было? Чота не вижу ничего похожего. Один абадона накатал ocx и на этом все.

    Reply
  4. PrinzOfMunchen

    (2) зачем для этого нужны внешние компоненты, когда http://v8.1c.ru/o7/201604mobile/index.htm ?

    Reply
  5. frkbvfnjh

    (4) PrinzOfMunchen, ну во первых это будет только в далеком будущем и во вторых только для мобильной платформы, бьюсь об заклад, что разработчики никогда не добавят эту возможность для настольной платформы. Вот ссылка на ветку официального форума 1С по этому вопросу: https://partners.v8.1c.ru/forum/message/1476252#m_1476252 Если у Вас нет доступа у форуму, то цитирую:

    В связи с Обсуждение 1474666 »» подниму тему о воспроизведении звука Обсуждение 827745 »»

    Как-то странно получается, что возможности мобильной платформы в этом направлении опережают возможности обычного приложения (в смысле тонкого клиента). В мобильной платформе уже появляется метод ВоспроизвестиЗвуковоеОповещение(), а когда же тонкий клиент получит такую штатную возможность? Есть это в планах?

    Оценить: -1 +1 Ответить

    0 Сосна Евгений (1Service, Москва) 12.04.2016 15:36 1476208 Отвечает на

    Что вам мешает использовать командную строку? Вызывать тот-же fmpeg и проигрывать необходимый звук хоть на linux, хоть на windows.

    Оценить: -1 +1 Ответить

    0 Буторин Александр (АйТимПро, Москва) 12.04.2016 16:29 1476245 Отвечает на

    1. Командная строка позволит только запустить стороннее приложение наличие которого нужно проверить перед вызовом.

    2. Необходимо загрузить звуковой файл который нужно воспроизвести

    3. Без шаманства невозможно воспроизвести стандартный звук установленный для оповещения в ОС.

    Оценить: -1 +1 Ответить

    0 Кузин Александр (Дилакс, Волгоград) 12.04.2016 16:41 1476252 Отвечает на

    Оно, в общем-то, понятно, что на компьютере большой простор для костылей.

    Про fmpeg я не знал. Для себя написал внешнюю NativeAPI компоненту (туда же добавил и паузу, и ещё каких-то хотелок, пока только под windows).

    Показать

    По сути это все, что ему ответили, так что ждите маны небесной и дальше, наивные оптимисты. В другой ветке предложили такие же костыли. К сожалению не смог найти повторно ветку в которой разработчики ответили, что данная возможность (воспроизведение звуковых файлов) необходима слишком редко, что бы включать ее в состав платформы. У разработчиков платформы всегда свои взгляды на то, какие должны быть возможности в платформе, а какие никогда не понадобятся разработчикам прикладных решений…

    Reply
  6. Bassgood

    (5) ну а в действительности, что разве разработчики платформы не правы в том, что возможность воспроизведения аудиофайлов в приложениях требуется крайне редко? По мне так это уже какие-то специфические задачи, все таки платформа предназначена для автоматизации учета, а не для реализации различных мультимедийных приложений.

    Reply
  7. sikuda

    Для меня проблема не в том, что разработчики не предоставили Voice API, а в том что современные Web технологии в 1С появляются с опоздание в несколько лет.

    А они уже позволяют сделать и звук и видео.

    Эмуляции по подходы по поводу звука: http://infostart.ru/public/248770/

    Эмуляции по поводу видео: http://infostart.ru/public/235751/

    Reply
  8. webester

    (6)(7)Тут как я понял, что вся фишка, в том, что мы получаем кучу контролов типа ползунка воспроизведения, баланса, громкости и скорости. А если надо просто проиграть звук, то можно и так:

    ScrptCtrl = Новый COMОбъект(«MSScriptControl.ScriptControl»);
    ScrptCtrl.Language = «VBScript»;
    Стр = «function PlaySound()
    |Set oVoice = CreateObject(«»SAPI.SpVoice»»)
    |set oSpFileStream = CreateObject(«»SAPI.SpFileStream»»)
    |oSpFileStream.Open «»D:123.wav»»
    |oVoice.SpeakStream oSpFileStream
    |oSpFileStream.Close
    |end function»;
    
    ScrptCtrl.AddCode(стр);
    Код = ScrptCtrl.Run(«PlaySound»);

    Показать

    Reply
  9. webester

    (6)

    По мне так это уже какие-то специфические задачи, все таки платформа предназначена для автоматизации учета, а не для реализации различных мультимедийных приложений

    Пользователь взял беспроводной сканер штрихкодов и пошел делать инвентаризацию. Если в процессе работы попался товар с левым штрихкодом, или попался товар, который не должен лежать на этой полке или еще, что то, система должна оповестить пользователя. А то он приходит через полчаса и ему говорят товар с штрихкодом 12345….02 отсутствует в базе. И как узнать что, он в этот момент держал в руках?

    Reply
  10. frkbvfnjh

    Я тоже считаю, что 1С не помешало бы встроить хотя бы базовую функциональность по работе со звуком, вполне достаточно добавить поддержку воспроизведения wav и mp3

    Reply
  11. v3rter

    Вот она, «базовая функциональность» — стандартный звук системы, он же «зведочка», он же echo #k8SjZc9DxkG в консоли:

        wshShell=new COMobject(«wscript.shell»);
    wshShell.run(«%comspec% /c echo «+Char(7),0,true);

    Неоднократно видел.

    Reply
  12. CheBurator

    звуковое оповещение однозначно надо. У меня на WMS разработчики столкнулись с этим — я не спец по восьмерке — подключают какое-то расширение платформы, а в результате подвисает. Попробую подсунуть эту возможность.

    На клюшках все звуковое оповещение мгновенно воспроизводилось через формекс, а как переползли на восьмерочную ВМС — звук накрылся… и часто получается что пипл сканирует кучу раз а потом видит что на экране висит вопрос или аларм — а без звука это нифига не отследишь — после каждого пика ТСД не будешь смотреть на экран…

    так что надо! однозначно надо!!

    Reply
  13. Fox-trot

    (11) v3rter, вариант для твоей капилки в стиле нет

     Попытка
    ф = Новый COMОбъект(«Net4Com.Audio»);
    ф.PlaySystemSound(12);
    Исключение
    КонецПопытки;
    
    Reply
  14. Fox-trot

    (3) webester, http://infostart.ru/public/281337/ годичной давности

    Reply
  15. premierex

    (0)? про возможность использования WMPlayer’a, действительно, уже не раз писали на Инфостарте.

    Вот, в этой публикации, например : Интересные возможности 1С, которая была опубликована всего-то на один день раньше Вашей. Правда, скудно довольно описаны возможности этого COM объекта, но… есть, как правило документация к COM-объекту, а если нет, то существует инструментарий, позволяющий эту документацию получить. Например, вот этот: HTML Help COM Assistant.

    Reply
  16. v3rter

    (13) Fox-trot, Спасибо, попробую.

    Reply
  17. apic

    А в демонстрации мелодия играет интересная! Нашел таки ее по названию файла, зачетная музЫчка…

    Reply
  18. Yashazz

    Таки боян действительно. Автор, а в тонком или веб-клиентах заработает?

    Reply
  19. frkbvfnjh

    (18) Yashazz, конкретно эта обработка работает только в обычном приложении. Смысла переписывать под тонкий и веб нет, сам понимаете — боян…

    Reply
  20. TreeDogNight

    Сигнал(); =)

    Reply
  21. alexandersh

    Ну не знаю баян напишу или нет, но на УФ достаточно просто решается полем HTML следующего содержания:

    ПолеHTML = «<html>

    |<head>

    |<meta http-equiv=»»X-UA-Compatible»» content=»»IE=edge»»/>

    |</head>

    |<body>

    |<audio controls>

    |<source src=»»» + АдресMP3 + «»» type=»»audio/mpeg»»>

    |Your browser does not support the audio element.

    |</audio>

    |</body>

    |</html>»;

    где АдресMP3 — это адрес временного хранилища, куда положили двоичные данные записи

    вот вам и бегунок и полоса прокрутки аудио)

    Reply
  22. dmitryada

    (6) Они во всем правы, но вот ротацию картинок не могут сделать на макетах уже лет 8. 🙂

    Reply
  23. frkbvfnjh

    (22) Если, вы имеете ввиду поворот картинки, то с определенной версии платформы появился объект «ОбработкаКартинок», который позволяет повернуть картинку на угол кратный 90. К примеру НоваяКартинка = ОбработкаКартинок.Повернуть(Картинка, 180)

    Reply
  24. frkbvfnjh

    (13) Спасибо, тоже попробую

    Reply
  25. frkbvfnjh

    (21) Возьму на заметку, спасибо…

    Reply
  26. nidom

    (21) Этот вариант самый быстрый и удобный для меня…

    Но вот заработало только когда в АдресМР3 указал абсолютный путь к файлу mp3, а из хранилища не получилось…

    И еще — как бы узнать, что проигрывание файла завершилось? Как к html-полю подключить какое-нибудь событие для этой цели? Требуется проигрывать такой же (или другой) файл через некоторое время после окончания проигрывания.. Подскажете, куда рыть?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *