Мультимедиа

Получение видеоизображения

Для получения видеоизображения с камеры устройства, необходимо вызвать функцию со следующей сигнатурой:

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)