Мультимедиа
Получение видеоизображения
Для получения видеоизображения с камеры устройства, необходимо вызвать функцию со следующей сигнатурой:
const video = await window.asm.getVideo(condition)
Где, video - объект-структура, содержащей поле element, типа HTMLVideoElement, condition - объект-структура, содержащий поле withAudio, обозначающее необходимость передачи вместе с видеоизображением также аудио-информации с микрофона устройства.
Пример получения видеоизображения без аудио-информации для трансляции на странице:
// Получение условия необходимости передачи видеоизображения без аудио-информации
const condition = window.asm.newVideoCondition(false)
// Получение видеоизображения
const video = await window.asm.getVideo(condition)
// Добавление элемента с видеоизображением к телу страницы
document.body.appendChild(video.element)
Получение аудио информации
Для получения аудио-информации с микрофона устройства, необходимо вызвать функцию со следующей сигнатурой:
const audio = await window.asm.getAudio()
Где, audio - объект-структура, содержащей поле element, типа HTMLAudioElement.
Пример получения аудио-информации для записи с последующим скачиванием аудио-файла:
// Объявление буфера для записи
let recorded = [];
// Объявление функции для сохранения буфера в файл и создания ссылки
const saveToObjectUrl = () => {
const blob = new Blob(recorded, { type: 'audio/webm' });
return URL.createObjectURL(blob);
}
// Объявление функции для скачивания файла
const download = (url) => {
let a = document.createElement('a');
a.style = 'display: none';
a.href = url;
a.download = 'audio.webm';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}
// Объявление опций, с которыми аудио-информация будет записываться в файл
const options = {mimeType: 'audio/webm'};
// Получение аудио-информации
const audio = await window.asm.getAudio()
// Получение потока аудио-информации
const stream = audio.element.captureStream();
// Обявление рекордера для записи
const recorder = new MediaRecorder(stream, options);
// Объявление обработчика, который будет записывать информацию всякий раз, когда рекордер получает новую порцию данных
const dataHandler = (ev) => {
// Сохранение порции данных в буфер
if (ev.data.size > 0) {
recorded.push(ev.data)
}
// Сохранение буфера в файл и скачивание в случае окончания процесса записи
if (recorder.state == 'inactive') {
const url = saveToObjectUrl();
download(url);
}
}
// Назначение обработчика для обработки вновь полученных рекордером данных
recorder.ondataavailable = dataHandler;
// Запуск записи
recorder.start();
// ...Ожидание окончания записи
Проигрывание аудио
Для запуска проигрывания аудио на устройстве, необходимо вызвать функцию со следующей сигнатурой:
await window.asm.playAudio(condition)
Где, condition - объект-структура, содержащей поле source, типа string, характеризующее адрес ресурса, где находиться необходимый для проигрывания аудио файл, а также поле count, с числом, характеризующим количество повторений проигрывания.
Пример проигрывания аудио с 3 повоторениями:
// Объявление адреса ресурса с аудио-файлом
const url = "https://audio.src/1"
// Объявление количества повторений
const repeatCount = 3
// Объявление условий проигрывания
const condition = window.asm.netAudioCondition(url, repeatCount)
// Запуск процесса проигрывания
await window.asm.playAudio(condition)