Referência de API
Referência completa da API do Player M3U8 Online.
API do Player
Inicialização
Construtor Player
const player = new M3U8Player(options);
Parâmetros:
options
(Object): Opções de configuração do player
Opções de configuração:
const options = {
container: '#player', // Seletor do contêiner do player
autoplay: false, // Reprodução automática
muted: true, // Estado silenciado
preload: 'metadata', // Configuração de pré-carregamento
width: '100%', // Largura do player
height: 'auto', // Altura do player
controls: true, // Mostrar controles
fluid: true, // Responsivo
responsive: true, // Suporte responsivo
playbackRates: [0.5, 1, 1.25, 1.5, 2], // Velocidades de reprodução
defaultPlaybackRate: 1, // Velocidade de reprodução padrão
language: 'pt-BR', // Configuração de idioma
techOrder: ['html5'], // Ordem de prioridade das tecnologias
html5: {
vhs: {
overrideNative: true, // Substituir HLS nativo
enableLowInitialPlaylist: true,
smoothQualityChange: true,
handlePartialData: true,
},
},
};
Métodos
load()
Carrega um stream.
player.load(url);
Parâmetros:
url
(String): URL do stream M3U8
Valor de retorno:
Promise
: Promise de carregamento concluído
Exemplo:
try {
await player.load('https://example.com/stream.m3u8');
console.log('Stream carregado com sucesso');
} catch (error) {
console.error('Erro ao carregar stream:', error);
}
play()
Inicia a reprodução.
player.play();
Valor de retorno:
Promise
: Promise de início de reprodução
pause()
Pausa a reprodução.
player.pause();
currentTime()
Obtém ou define o tempo de reprodução atual.
// Obter tempo atual
const currentTime = player.currentTime();
// Definir tempo
player.currentTime(120); // Definir para 2 minutos
duration()
Obtém a duração total do stream.
const duration = player.duration();
volume()
Obtém ou define o volume.
// Obter volume (0.0 - 1.0)
const volume = player.volume();
// Definir volume
player.volume(0.5); // Definir para 50%
muted()
Obtém ou define o estado silenciado.
// Obter estado silenciado
const isMuted = player.muted();
// Definir estado silenciado
player.muted(true); // Silenciar
player.muted(false); // Dessilenciar
paused()
Obtém o estado de pausa.
const isPaused = player.paused();
ended()
Obtém o estado de finalização.
const isEnded = player.ended();
readyState()
Obtém o estado de preparação do player.
const readyState = player.readyState();
Valores de retorno:
0
: HAVE_NOTHING - Sem informações1
: HAVE_METADATA - Com metadados2
: HAVE_CURRENT_DATA - Com dados do frame atual3
: HAVE_FUTURE_DATA - Com dados do frame futuro4
: HAVE_ENOUGH_DATA - Com dados suficientes
networkState()
Obtém o estado da rede.
const networkState = player.networkState();
Valores de retorno:
0
: NETWORK_EMPTY - Estado inicial1
: NETWORK_IDLE - Estado inativo2
: NETWORK_LOADING - Carregando3
: NETWORK_NO_SOURCE - Sem fonte
Eventos
loadstart
Dispara quando o carregamento do stream começa.
player.on('loadstart', () => {
console.log('Iniciando carregamento do stream');
});
loadedmetadata
Dispara quando os metadados são carregados.
player.on('loadedmetadata', () => {
console.log('Metadados carregados');
console.log('Duração:', player.duration());
});
loadeddata
Dispara quando o primeiro frame é carregado.
player.on('loadeddata', () => {
console.log('Primeiro frame carregado');
});
canplay
Dispara quando é possível reproduzir.
player.on('canplay', () => {
console.log('Pronto para reproduzir');
});
canplaythrough
Dispara quando o buffering está completo e é possível reproduzir até o final.
player.on('canplaythrough', () => {
console.log('Pronto para reproduzir até o final');
});
play
Dispara quando a reprodução começa.
player.on('play', () => {
console.log('Reprodução iniciada');
});
pause
Dispara quando a reprodução é pausada.
player.on('pause', () => {
console.log('Reprodução pausada');
});
ended
Dispara quando a reprodução termina.
player.on('ended', () => {
console.log('Reprodução terminada');
});
timeupdate
Dispara quando o tempo de reprodução é atualizado.
player.on('timeupdate', () => {
const currentTime = player.currentTime();
const duration = player.duration();
const progress = (currentTime / duration) * 100;
console.log(`Progresso: ${progress.toFixed(1)}%`);
});
volumechange
Dispara quando o volume muda.
player.on('volumechange', () => {
console.log('Volume:', player.volume());
console.log('Silenciado:', player.muted());
});
error
Dispara quando ocorre um erro.
player.on('error', (error) => {
console.error('Erro do player:', error);
});
API HLS
Propriedades
hls
Acessa a instância HLS.
const hls = player.hls;
hls.levels
Obtém os níveis de qualidade disponíveis.
const levels = player.hls.levels;
console.log('Níveis de qualidade disponíveis:', levels);
hls.currentLevel
Obtém ou define o nível de qualidade atual.
// Obter nível atual
const currentLevel = player.hls.currentLevel;
// Definir nível
player.hls.currentLevel = 2; // Definir para o terceiro nível
hls.nextLevel
Obtém ou define o próximo nível de qualidade.
const nextLevel = player.hls.nextLevel;
hls.loadLevel
Obtém o nível de qualidade que está sendo carregado.
const loadLevel = player.hls.loadLevel;
hls.bandwidth
Obtém a largura de banda estimada.
const bandwidth = player.hls.bandwidth;
console.log('Largura de banda estimada:', bandwidth, 'bps');
hls.startLevel
Obtém ou define o nível de qualidade inicial.
// Definir nível inicial
player.hls.startLevel = 1;
Métodos
hls.startLoad()
Inicia o carregamento HLS.
player.hls.startLoad();
hls.stopLoad()
Para o carregamento HLS.
player.hls.stopLoad();
hls.swapAudioCodec()
Troca o codec de áudio.
player.hls.swapAudioCodec();
hls.recoverMediaError()
Tenta recuperar de um erro de mídia.
player.hls.recoverMediaError();
Eventos
hlsEvent
Monitora eventos relacionados ao HLS.
player.on('hlsEvent', (event, data) => {
console.log('Evento HLS:', event, data);
});
levelLoaded
Dispara quando um nível de qualidade é carregado.
player.on('levelLoaded', (event, data) => {
console.log('Nível de qualidade carregado:', data);
});
levelSwitched
Dispara quando o nível de qualidade muda.
player.on('levelSwitched', (event, data) => {
console.log('Nível de qualidade alterado:', data);
});
fragLoaded
Dispara quando um fragmento é carregado.
player.on('fragLoaded', (event, data) => {
console.log('Fragmento carregado:', data);
});
API de Eventos
Adicionar Ouvintes de Eventos
on()
Adiciona um ouvinte de evento.
player.on('eventName', callback);
Parâmetros:
eventName
(String): Nome do eventocallback
(Function): Função de callback
off()
Remove um ouvinte de evento.
player.off('eventName', callback);
one()
Adiciona um ouvinte de evento que executa apenas uma vez.
player.one('eventName', callback);
trigger()
Dispara um evento manualmente.
player.trigger('customEvent', data);
Eventos Personalizados
qualitychange
Dispara quando a qualidade muda.
player.on('qualitychange', (event, data) => {
console.log('Mudança de qualidade:', {
from: data.from,
to: data.to,
reason: data.reason,
});
});
bufferwarning
Dispara quando o buffer está baixo.
player.on('bufferwarning', (event, data) => {
console.log('Aviso de buffer:', data);
});
Tratamento de Erros
Tipos de Erro
MediaError
Erro relacionado à mídia.
player.on('error', (error) => {
if (error.code === 1) {
console.log('Erro de mídia: Abortado');
} else if (error.code === 2) {
console.log('Erro de mídia: Rede');
} else if (error.code === 3) {
console.log('Erro de mídia: Decodificação');
} else if (error.code === 4) {
console.log('Erro de mídia: Fonte não suportada');
}
});
HlsError
Erro relacionado ao HLS.
player.on('error', (error) => {
if (error.type === 'networkError') {
console.log('Erro de rede');
} else if (error.type === 'mediaError') {
console.log('Erro de mídia');
}
});
Recuperação de Erros
Recuperação Automática
O player tenta automaticamente recuperar de erros.
player.on('error', (error) => {
console.log('Erro ocorrido:', error);
// O player tenta automaticamente recuperar
});
Recuperação Manual
Você pode tentar recuperar manualmente de erros.
player.on('error', (error) => {
if (error.type === 'mediaError') {
// Para erros de mídia, tentar recuperação manual
player.hls.recoverMediaError();
}
});
Funções Utilitárias
Formatação de Tempo
formatTime()
Converte segundos para formato de tempo.
function formatTime(seconds) {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secs = Math.floor(seconds % 60);
if (hours > 0) {
return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
} else {
return `${minutes}:${secs.toString().padStart(2, '0')}`;
}
}
// Exemplo de uso
const currentTime = player.currentTime();
console.log('Tempo atual:', formatTime(currentTime));
Gerenciamento de Níveis de Qualidade
getQualityLevels()
Obtém os níveis de qualidade disponíveis.
function getQualityLevels() {
return player.hls.levels.map((level, index) => ({
index: index,
height: level.height,
width: level.width,
bitrate: level.bitrate,
name: `${level.height}p`,
}));
}
const qualityLevels = getQualityLevels();
console.log('Níveis de qualidade disponíveis:', qualityLevels);
setQualityLevel()
Define o nível de qualidade.
function setQualityLevel(levelIndex) {
if (levelIndex >= 0 && levelIndex < player.hls.levels.length) {
player.hls.currentLevel = levelIndex;
console.log(`Nível de qualidade definido para ${levelIndex}`);
} else {
console.error('Nível de qualidade inválido');
}
}
Esta referência de API permite aproveitar todas as funcionalidades do Player M3U8 Online.