docmumentação da api
EncryptSuport
suporte a operações de criptografia AES-128 relacionadas a M3U8.
Fornece métodos para obter a URL da chave de criptografia e o IV (vetor de inicialização) associado, necessários para descriptografar conteúdos M3U8 protegidos por AES-128.
Métodos
- get_url_key_m3u8: Extrai a URL da chave de criptografia e o IV de um conteúdo M3U8.
get_url_key_m3u8(m3u8_content, player, headers=None)
staticmethod
Extrai a URL da chave de criptografia AES-128 e o IV (vetor de inicialização) de um conteúdo M3U8.
Este método analisa o conteúdo M3U8 para localizar a URL da chave de criptografia e o IV, se disponível. Em seguida, faz uma requisição HTTP para obter a chave em formato hexadecimal.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m3u8_content |
str
|
String contendo o conteúdo do arquivo M3U8. |
required |
player |
str
|
URL base para formar o URL completo da chave, se necessário. |
required |
headers |
dict
|
Cabeçalhos HTTP opcionais para a requisição da chave. Se não fornecido, cabeçalhos padrão serão utilizados. |
None
|
Returns:
Name | Type | Description |
---|---|---|
dict |
Um dicionário contendo as seguintes chaves: - 'key' (str): A chave de criptografia em hexadecimal. - 'iv' (str): O vetor de inicialização (IV) em hexadecimal, se disponível. |
|
Caso não seja possível extrair a URL da chave ou o IV, retorna None. |
Examples:
m3u8_content = '''
#EXTM3U
#EXT-X-KEY:METHOD=AES-128,URI="https://example.com/key.bin",IV=0x1234567890abcdef
#EXTINF:10.0,
http://example.com/segment1.ts
'''
player = "https://example.com"
result = EncryptSuport.get_url_key_m3u8(m3u8_content, player)
print(result)
# Saída esperada:
# {'key': 'aabbccddeeff...', 'iv': '1234567890abcdef'}
# Com cabeçalhos personalizados
headers = {
"Authorization": "Bearer your_token"
}
result = EncryptSuport.get_url_key_m3u8(m3u8_content, player, headers=headers)
print(result)
Raises:
Type | Description |
---|---|
HTTPError
|
Se a requisição HTTP para a chave falhar. |
M3U8Playlist
análise de maneira mais limpa de m3u8
__get_version_manifest(content)
Obtém a versão do manifesto #EXTM em uma playlist m3u8.
EXT-X-VERSION:4
EXT-X-VERSION:3
etc... :param content: Conteúdo da playlist m3u8. :return: A versão do manifesto encontrada ou None se não for encontrado.
__load_playlist()
Método privado para carregar a playlist a partir de uma URL ou arquivo.
filter_resolution(filtering)
Filtra e retorna a URL do segmento com a resolução especificada.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
filtering |
str
|
Resolução desejada (ex: '1920x1080'). |
required |
Returns:
Type | Description |
---|---|
Optional[str]: URL do segmento correspondente à resolução, ou None se não encontrado. |
get_codecs()
obter codecs na playlist
get_resolutions()
Retorna as resoluções disponíveis na playlist M3U8.
Returns:
Name | Type | Description |
---|---|---|
list |
Lista de resoluções. |
info()
Retorna informações básicas sobre a playlist.
Returns:
Name | Type | Description |
---|---|---|
dict |
Informações sobre a URL, versão do manifesto, número de segmentos, tipo da playlist, se é criptografada e URIs dos segmentos. |
number_segments()
Retorna o número total de segmentos na playlist.
Returns:
Name | Type | Description |
---|---|---|
int |
Número de segmentos. |
playlist_type()
Retorna o tipo da playlist M3U8.
Returns:
Name | Type | Description |
---|---|---|
str |
Tipo da playlist. |
this_encrypted()
Verifica se a playlist M3U8 está criptografada.
Returns:
Name | Type | Description |
---|---|---|
bool |
True se a playlist estiver criptografada, False caso contrário. |
uris()
Retorna a lista de URIs dos segmentos.
Returns:
Name | Type | Description |
---|---|---|
list |
Lista de URIs dos segmentos. |
version_manifest()
Retorna a versão do manifesto da playlist M3U8.
Returns:
Name | Type | Description |
---|---|---|
str |
Versão do manifesto. |
M3u8Analyzer
__init__()
análise e manipulação de streams M3U8 de maneira bruta
get_audio_playlist(m3u8_content)
staticmethod
Extrai o URL da playlist de áudio de um conteúdo M3U8.
Este método analisa o conteúdo fornecido de um arquivo M3U8 e retorna o URL da playlist de áudio incluída na playlist M3U8.
O método busca a linha que contém a chave #EXT-X-MEDIA
e extrai a URL associada ao áudio.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m3u8_content |
str
|
Conteúdo da playlist M3U8 como uma string. Deve incluir informações sobre áudio se disponíveis. |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
URL da playlist de áudio encontrada no conteúdo M3U8. Retorna |
Examples:
# Exemplo 1
content = '''
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",DEFAULT=YES,URI="http://example.com/audio.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=256000,AUDIO="audio"
http://example.com/stream.m3u8
'''
url = M3u8Analyzer.get_audio_playlist(content)
print(url) # Saída esperada: 'http://example.com/audio.m3u8'
# Exemplo 2
content = '''
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="French",DEFAULT=NO,URI="http://example.com/french_audio.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=256000,AUDIO="audio"
http://example.com/stream.m3u8
'''
url = M3u8Analyzer.get_audio_playlist(content)
print(url) # Saída esperada: 'http://example.com/french_audio.m3u8'
# Exemplo 3
content = '''
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=256000
http://example.com/stream.m3u8
'''
url = M3u8Analyzer.get_audio_playlist(content)
print(url) # Saída esperada: None
get_high_resolution(m3u8_content)
staticmethod
Obtém a maior resolução disponível em um arquivo M3U8 e o URL correspondente.
Este método analisa o conteúdo de um arquivo M3U8 para identificar a maior resolução disponível entre os fluxos de vídeo listados. Também retorna o URL associado a essa maior resolução, se disponível.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m3u8_content |
str
|
O conteúdo do arquivo M3U8 como uma string. Este conteúdo deve incluir as tags e atributos típicos de uma playlist HLS. |
required |
Returns:
Name | Type | Description |
---|---|---|
tuple |
Uma tupla contendo: - str: A maior resolução disponível no formato 'Largura x Altura' (ex.: '1920x1080'). - str: O URL correspondente à maior resolução. Se o URL não for encontrado, retorna None. Se o tipo de playlist não contiver resoluções, retorna uma mensagem indicando o tipo de playlist. |
Raises:
Type | Description |
---|---|
ValueError
|
Se o conteúdo do M3U8 não contiver resoluções e a função não conseguir determinar o tipo de playlist. |
Examples:
m3u8_content = '''
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=500000,RESOLUTION=640x360
http://example.com/360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=1280x720
http://example.com/720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1920x1080
http://example.com/1080p.m3u8
'''
result = M3u8Analyzer.get_high_resolution(m3u8_content)
print(result) # Saída esperada: ('1920x1080', 'http://example.com/1080p.m3u8')
m3u8_content_no_resolutions = '''
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=500000
http://example.com/360p.m3u8
'''
result = M3u8Analyzer.get_high_resolution(m3u8_content_no_resolutions)
print(result) # Saída esperada: 'Playlist type: <TIPO DA PLAYLIST> not resolutions...'
get_m3u8(url_m3u8, headers=None, save_in_file=None, timeout=None)
staticmethod
Obtém o conteúdo de um arquivo M3U8 a partir de uma URL HLS.
Este método permite acessar, visualizar ou salvar playlists M3U8 utilizadas em transmissões de vídeo sob demanda.
Args: url_m3u8 (str): A URL do arquivo M3U8 que você deseja acessar. headers (dict, optional): Cabeçalhos
HTTP opcionais para a requisição. Se não forem fornecidos, serão usados cabeçalhos padrão. save_in_file (str,
optional): Nome do arquivo para salvar o conteúdo M3U8. Se fornecido, o conteúdo da playlist será salvo no
diretório atual com a extensão .m3u8
. timeout (int, optional): Tempo máximo (em segundos) para aguardar uma
resposta do servidor. O padrão é 20 segundos.
Returns:
Name | Type | Description |
---|---|---|
str |
O conteúdo do arquivo M3U8 como uma string se a requisição for bem-sucedida. |
|
None |
Se a requisição falhar ou se o servidor não responder com sucesso. |
Raises:
Type | Description |
---|---|
ValueError
|
Se a URL não for válida ou se os headers não forem um dicionário. |
ConnectionAbortedError
|
Se o servidor encerrar a conexão inesperadamente. |
ConnectionRefusedError
|
Se a conexão for recusada pelo servidor. |
TimeoutError
|
Se o tempo de espera pela resposta do servidor for excedido. |
ConnectionError
|
Se não for possível se conectar ao servidor por outros motivos. |
Example
from m3u8_analyzer import M3u8Analyzer
url = "https://example.com/playlist.m3u8"
headers = {"User-Agent": "Mozilla/5.0"}
playlist_content = M3u8Analyzer.get_m3u8(url, headers=headers, save_in_file="minha_playlist", timeout=30)
if playlist_content:
print("Playlist obtida com sucesso!")
else:
print("Falha ao obter a playlist.")
get_player_playlist(m3u8_url)
staticmethod
Obtém o caminho do diretório base do arquivo M3U8, excluindo o nome do arquivo.
Este método analisa a URL fornecida do arquivo M3U8 e retorna o caminho do diretório onde o arquivo M3U8 está localizado. A URL deve ser uma URL completa e o método irá extrair o caminho do diretório base.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m3u8_url |
str
|
A URL completa do arquivo M3U8. Pode incluir o nome do arquivo e o caminho do diretório. |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
O caminho do diretório onde o arquivo M3U8 está localizado. Se a URL não contiver um arquivo M3U8, retornará uma string vazia. |
Examples:
# Exemplo 1
url = 'http://example.com/videos/playlist.m3u8'
path = M3u8Analyzer.get_player_playlist(url)
print(path) # Saída esperada: 'http://example.com/videos/'
# Exemplo 2
url = 'https://cdn.example.com/streams/segment.m3u8'
path = M3u8Analyzer.get_player_playlist(url)
print(path) # Saída esperada: 'https://cdn.example.com/streams/'
# Exemplo 3
url = 'https://example.com/playlist.m3u8'
path = M3u8Analyzer.get_player_playlist(url)
print(path) # Saída esperada: 'https://example.com/'
# Exemplo 4
url = 'https://example.com/videos/'
path = M3u8Analyzer.get_player_playlist(url)
print(path) # Saída esperada: ''
get_segments(content)
staticmethod
Extrai URLs de segmentos de uma playlist M3U8 e fornece informações detalhadas sobre os segmentos.
Este método analisa o conteúdo de uma playlist M3U8 para extrair URLs de segmentos, identificar resoluções associadas, e retornar um dicionário com informações sobre as URLs dos segmentos, a quantidade total de segmentos, e a ordem de cada URI.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
content |
str
|
Conteúdo da playlist M3U8 como uma string. Não deve ser uma URL. Deve incluir as informações sobre segmentos e, opcionalmente, informações sobre resoluções e URLs de stream. |
required |
Returns:
Name | Type | Description |
---|---|---|
dict |
Dict[str, List[Tuple[str, str]]]
|
Um dicionário com as seguintes chaves: - 'uris' (List[str]): Lista de URLs dos segmentos. - 'urls' (List[str]): Lista de URLs de stream extraídas do conteúdo. - 'len' (int): Contagem total de URLs de stream encontradas. - 'enumerated_uris' (List[Tuple[int, str]]): Lista de tuplas contendo a ordem e o URL de cada segmento. - 'resolutions' (Dict[str, str]): Dicionário mapeando resoluções para suas URLs correspondentes. |
Raises:
Type | Description |
---|---|
ValueError
|
Se o conteúdo fornecido for uma URL em vez de uma string de conteúdo M3U8. |
Examples:
# Exemplo 1: Conteúdo simples de M3U8 com URLs de segmentos e stream
content = '''
#EXTM3U
#EXTINF:10.0,
http://example.com/segment1.ts
#EXTINF:10.0,
http://example.com/segment2.ts
#EXT-X-STREAM-INF:BANDWIDTH=256000,RESOLUTION=1280x720
http://example.com/stream_720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=512000,RESOLUTION=1920x1080
http://example.com/stream_1080p.m3u8
'''
result = M3u8Analyzer.get_segments(content)
print(result)
# Saída esperada:
# {
# 'uris': ['http://example.com/segment1.ts', 'http://example.com/segment2.ts'],
# 'urls': ['http://example.com/stream_720p.m3u8', 'http://example.com/stream_1080p.m3u8'],
# 'len': 2,
# 'enumerated_uris': [(1, 'http://example.com/segment1.ts'), (2, 'http://example.com/segment2.ts')],
# 'resolutions': {'1280x720': 'http://example.com/stream_720p.m3u8', '1920x1080': 'http://example.com/stream_1080p.m3u8'}
# }
# Exemplo 2: Conteúdo sem informações de resolução
content = '''
#EXTM3U
#EXTINF:10.0,
http://example.com/segment1.ts
#EXTINF:10.0,
http://example.com/segment2.ts
'''
result = M3u8Analyzer.get_segments(content)
print(result)
# Saída esperada:
# {
# 'uris': ['http://example.com/segment1.ts', 'http://example.com/segment2.ts'],
# 'urls': [],
# 'len': 0,
# 'enumerated_uris': [(1, 'http://example.com/segment1.ts'), (2, 'http://example.com/segment2.ts')],
# 'resolutions': {}
# }
get_type_m3u8_content(m3u8_content)
staticmethod
Determina o tipo de conteúdo de um arquivo M3U8 (Master ou Segmentos).
Este método analisa o conteúdo de um arquivo M3U8 para identificar se ele é do tipo 'Master', 'Master encrypted', 'Segments', 'Segments encrypted', 'Segments Master', ou 'Desconhecido'. A identificação é baseada na presença de tags e chaves específicas no conteúdo da playlist M3U8.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m3u8_content |
str
|
O conteúdo do arquivo M3U8 como uma string. Pode ser uma URL ou o próprio conteúdo da playlist. |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
O tipo de conteúdo identificado. Os possíveis valores são: - 'Master': Playlist mestre sem criptografia. - 'Master encrypted': Playlist mestre com criptografia. - 'Segments': Playlist de segmentos sem criptografia. - 'Segments encrypted': Playlist de segmentos com criptografia. - 'Segments .ts': Playlist de segmentos com URLs terminando em '.ts'. - 'Segments .m4s': Playlist de segmentos com URLs terminando em '.m4s'. - 'Segments Master': Playlist de segmentos com URLs variadas. - 'Desconhecido': Se o tipo não puder ser identificado. |
Examples:
m3u8_content_master = '''
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=500000
http://example.com/master.m3u8
'''
result = M3u8Analyzer.get_type_m3u8_content(m3u8_content_master)
print(result) # Saída esperada: 'Master'
m3u8_content_master_encrypted = '''
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=500000
#EXT-X-KEY:METHOD=AES-128,URI="http://example.com/key.key"
http://example.com/master.m3u8
'''
result = M3u8Analyzer.get_type_m3u8_content(m3u8_content_master_encrypted)
print(result) # Saída esperada: 'Master encrypted'
m3u8_content_segments = '''
#EXTM3U
#EXTINF:10,
http://example.com/segment1.ts
#EXTINF:10,
http://example.com/segment2.ts
'''
result = M3u8Analyzer.get_type_m3u8_content(m3u8_content_segments)
print(result) # Saída esperada: 'Segments .ts'
m3u8_content_unknown = '''
#EXTM3U
#EXTINF:10,
http://example.com/unknown_segment
'''
result = M3u8Analyzer.get_type_m3u8_content(m3u8_content_unknown)
print(result) # Saída esperada: 'Segments Master'
Raises:
Type | Description |
---|---|
Exception
|
Em caso de erro durante o processamento do conteúdo, o método retornará uma mensagem de erro descritiva. |
M3u8Downloader
Requer que o ffmpeg esteja em seu ambiente
__clear_line()
staticmethod
Limpa a linha atual no terminal de forma compatível com diferentes sistemas.
Essa função utiliza o caractere de retrocesso para mover o cursor para o início da linha e sobrescreve o conteúdo da linha com espaços em branco, limpando assim a linha no terminal.
__descriptografar_segmento(path, key, iv, logs=None)
staticmethod
Descriptografa um segmento de vídeo se necessário.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
str
|
Caminho do arquivo a ser descriptografado. |
required |
key |
bytes
|
Chave de descriptografia em bytes. |
required |
iv |
bytes
|
IV (vetor de inicialização) em bytes. |
required |
logs |
bool
|
Se True, exibe a barra de progresso. |
None
|
Returns: None
__ffmpeg_concatener(output, extension)
staticmethod
Concatena os segmentos de vídeo em um único arquivo de vídeo usando FFmpeg.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
output |
str
|
Caminho de saída para o vídeo final, incluindo o nome do arquivo e extensão (ex: 'dir/nome.mp4'). |
required |
extension |
str
|
Extensão dos arquivos de vídeo a serem concatenados (ex: '.ts'). |
required |
Returns:
Type | Description |
---|---|
None |
__filter_ffmpeg_output(line, index)
staticmethod
Filtra e imprime apenas as linhas que contêm a palavra 'Opening' na saída do ffmpeg. Args: line(bytes): Linha de saída do ffmpeg. index(int): Índice de progresso. Returns: None
__filter_ffmpeg_stdout(line, filtering)
staticmethod
Filtra apenas as linhas que contêm o filtro na saída do ffmpeg. Args: line(bytes): Linha de saída do ffmpeg. filtering(str): o filtro desejado Returns: o valor da linha
__handle_remove_readonly(func, path, exc_info)
staticmethod
Função de callback para lidar com arquivos somente leitura.
__ocute_terminal()
staticmethod
Verifica o sistema operacional do usuário e retorna uma inicial correspondente.
O método utiliza a biblioteca platform
para identificar o sistema operacional e retorna:
- 'w' para Windows
- 'l' para Linux ou macOS (Darwin)
- 'null' para outros sistemas operacionais não suportados
Returns:
Name | Type | Description |
---|---|---|
str |
Inicial correspondente ao sistema operacional do usuário. |
Example
os_initial = M3U8Analyzer.__ocute_terminal()
print(os_initial)
__verific_path_bin(binPath, typePath)
staticmethod
Esta função verifica se um caminho de arquivo ou diretório existe e retorna True ou False.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
binPath |
str
|
O caminho a ser verificado. |
required |
typePath |
str
|
O tipo de caminho a verificar ('file' para arquivo, 'dir' para diretório). |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
True se o caminho existir e for do tipo especificado, False caso contrário. |
__verificar_audio(path)
staticmethod
Verifica se o vídeo contém faixas de áudio usando ffmpeg.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
str
|
Caminho do arquivo de vídeo. |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
bool
|
True se o vídeo contiver áudio, False caso contrário. |
__verificar_video(path)
staticmethod
Verifica se o vídeo contém faixas de vídeo usando ffmpeg.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
str
|
Caminho do arquivo de vídeo. |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
bool
|
True se o vídeo contiver vídeo, False caso contrário. |
downloader_and_remuxer_segments(url_playlist, output, key_hex=None, iv_hex=None, player=None, headers=None, segmentsType=None, logs=None)
staticmethod
Baixa os segmentos de uma playlist M3U8, opcionalmente descriptografa-os, e os combina em um arquivo de vídeo.
Este método faz o download dos segmentos de uma playlist M3U8, possibilita a descriptografia dos segmentos usando uma chave e um IV fornecidos, e combina os segmentos em um único arquivo de vídeo. O tipo de segmento (por exemplo, '.ts' ou '.m4s') pode ser especificado. Após o processamento, o método remove os arquivos temporários criados durante o processo.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url_playlist |
str
|
URL da playlist M3U8 contendo a lista de segmentos. |
required |
output |
str
|
Caminho para o arquivo de saída final (por exemplo, 'dir/nome.mp4'). |
required |
key_hex |
Optional[str]
|
Chave de descriptografia em formato hexadecimal (opcional). |
None
|
iv_hex |
Optional[str]
|
IV (vetor de inicialização) em formato hexadecimal (opcional). |
None
|
player |
Optional[str]
|
URL base para os segmentos, se necessário para formar URLs completas. |
None
|
headers |
Optional[dict]
|
Cabeçalhos HTTP adicionais para as requisições (opcional). |
None
|
segmentsType |
Optional[str]
|
Tipo de segmento de saída, como '.ts' ou '.m4s' (opcional). |
None
|
logs |
Optional[bool]
|
Se True, exibe a saída do processo de download e concatenação. |
None
|
Returns:
Type | Description |
---|---|
None
|
None |
Raises:
Type | Description |
---|---|
ValueError
|
Se a URL da playlist não for válida ou se não houver URL base para os segmentos quando necessário. |
OSError
|
Se houver erros ao remover arquivos temporários ou o diretório temporário. |
RequestException
|
Se ocorrer um erro ao fazer a requisição HTTP. |
Examples:
url_playlist = "https://example.com/playlist.m3u8"
output = "output/video.mp4"
key_hex = "00112233445566778899aabbccddeeff"
iv_hex = "00112233445566778899aabbccddeeff"
player = "https://example.com/"
headers = {
"Accept": "application/json",
"User-Agent": "CustomAgent/1.0"
}
segmentsType = ".ts"
M3u8Analyzer.downloader_and_remuxer_segments(
url_playlist=url_playlist,
output=output,
key_hex=key_hex,
iv_hex=iv_hex,
player=player,
headers=headers,
segmentsType=segmentsType,
logs=True
)
Notes
- O método cria um diretório temporário para armazenar os segmentos baixados e, em seguida, remove-o após a concatenação.
- Se ocorrer um erro durante a requisição HTTP ou o processo de concatenação, o método tentará remover arquivos temporários criados.
- A chave e o IV fornecidos são usados para descriptografar os segmentos se fornecidos; caso contrário, os segmentos são baixados diretamente.
ffmpegImage(commands, logs=None, callback=None)
staticmethod
Executa comandos personalizados no FFmpeg e processa a saída.
Este método permite executar comandos FFmpeg fornecidos pelo usuário e oferece a opção de visualizar a saída do FFmpeg em tempo real. Além disso, é possível fornecer uma função de callback que será chamada com cada linha de saída gerada pelo FFmpeg.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
commands |
list
|
Lista de argumentos de comando para o FFmpeg. O binário do FFmpeg será adicionado automaticamente no início da lista de comandos fornecida. |
required |
logs |
Optional[bool]
|
Se True, exibe a saída do FFmpeg no console. Se False ou None, a saída é suprimida. |
None
|
callback |
Optional[callable]
|
Função opcional que será chamada com cada linha de saída gerada pelo FFmpeg. A função deve aceitar um argumento, que é a linha de saída como uma string. |
None
|
Returns:
Type | Description |
---|---|
None
|
None |
Raises:
Type | Description |
---|---|
TypeError
|
Se o parâmetro 'commands' não for uma lista. |
Examples:
# Para executar um comando FFmpeg e exibir a saída
ffmpegImage(
commands=['-i', 'input.mp4', '-vf', 'scale=1280:720', 'output.mp4'],
logs=True
)
# Para executar um comando FFmpeg com uma função de callback para processar a saída
def process_output(line):
print(f"Saída do FFmpeg: {line}")
ffmpegImage(
commands=['-i', 'input.mp4', '-vf', 'scale=1280:720', 'output.mp4'],
callback=process_output
)
Notes
- O parâmetro
commands
deve ser uma lista de argumentos de linha de comando válidos para o FFmpeg. O binário do FFmpeg é automaticamente adicionado à lista de comandos. - Se
logs
for True, a saída do FFmpeg será exibida no console, removendo as linhas em branco. - Se
callback
for fornecido, a função será chamada com cada linha de saída do FFmpeg, permitindo processamento personalizado da saída. - O método é capaz de ocultar a janela do terminal no Windows e suprimir a saída no Linux conforme a configuração do terminal.
ffmpeg_donwloader(input_url, output, type_playlist, resolution=None, logs=None)
staticmethod
Baixa um vídeo ou áudio usando FFmpeg a partir de uma URL de playlist M3U8.
Este método utiliza FFmpeg para baixar e salvar vídeo ou áudio de uma URL M3U8. Dependendo do tipo de playlist ('audio' ou 'video'), o método pode especificar a resolução para vídeos ou escolher um formato padrão para áudios.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
input_url |
str
|
URL da playlist M3U8 contendo os segmentos de vídeo ou áudio. |
required |
output |
str
|
Caminho para o arquivo final a ser salvo, com extensão apropriada (por exemplo, 'dir/nome.mp4' ou 'dir/nome.mp3'). |
required |
type_playlist |
str
|
Tipo da playlist, deve ser 'audio' ou 'video'. |
required |
resolution |
Optional[str]
|
Define a resolução desejada para o vídeo ('lower', 'medium', 'high'). Ignorado para áudio. |
None
|
logs |
Optional[bool]
|
Se True, exibe a saída do FFmpeg. Se False ou None, a saída é suprimida. |
None
|
Returns:
Type | Description |
---|---|
None
|
None |
Raises:
Type | Description |
---|---|
SyntaxError
|
Se o parâmetro 'type_playlist' não for fornecido como string. |
ValueError
|
Se o tipo de playlist fornecido não for 'audio' ou 'video'. |
Examples:
# Para baixar um vídeo com resolução 'medium'
ffmpeg_donwloader(
input_url="https://example.com/video_playlist.m3u8",
output="output/video.mp4",
type_playlist="video",
resolution="medium",
logs=True
)
# Para baixar áudio sem especificar resolução
ffmpeg_donwloader(
input_url="https://example.com/audio_playlist.m3u8",
output="output/audio.mp3",
type_playlist="audio",
logs=False
)
Notes
- O comando FFmpeg é executado de forma oculta no Windows e Linux para evitar exibição de terminal.
- O parâmetro
resolution
é usado somente para vídeos, e o padrão é 'high' se a resolução não for reconhecida. - A saída do FFmpeg pode ser controlada com o parâmetro
logs
, que, se definido como True, exibe as mensagens de progresso e erros.
remuxer_audio_and_video(audioPath, videoPath, outputPath, logs=None)
staticmethod
Remuxa um arquivo de áudio e um arquivo de vídeo em um único arquivo MP4 usando FFmpeg.
Este método combina um arquivo de áudio e um arquivo de vídeo em um único arquivo MP4 sem recodificação dos streams, o que preserva a qualidade original dos arquivos de entrada.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
audioPath |
str
|
Caminho para o arquivo de áudio que será combinado. |
required |
videoPath |
str
|
Caminho para o arquivo de vídeo que será combinado. |
required |
outputPath |
str
|
Caminho de saída para o arquivo remuxado, por exemplo, 'dir/nome.mp4'. |
required |
logs |
Optional[bool]
|
Se True, exibe a saída do FFmpeg durante o processamento. Se False ou None, a saída é suprimida. |
None
|
Returns:
Type | Description |
---|---|
None
|
None |
Raises:
Type | Description |
---|---|
ValueError
|
Se os caminhos dos arquivos de áudio ou vídeo não existirem. |
Examples:
# Para remuxar áudio e vídeo em um único arquivo MP4 com logs ativados
remuxer_audio_and_video(
audioPath="path/to/audio.mp3",
videoPath="path/to/video.mp4",
outputPath="output/combined.mp4",
logs=True
)
# Para remuxar áudio e vídeo em um arquivo MP4 sem exibir logs
remuxer_audio_and_video(
audioPath="path/to/audio.mp3",
videoPath="path/to/video.mp4",
outputPath="output/combined.mp4"
)
Notes
- O comando FFmpeg usa a opção
-c copy
para copiar os streams de áudio e vídeo sem recodificação, o que preserva a qualidade original. - A remoção dos arquivos de áudio e vídeo de entrada após o remuxing é tentada, mas qualquer falha na remoção é ignorada.
- O comportamento da exibição de logs é controlado pelo parâmetro
logs
. Selogs
for True, as mensagens de saída do FFmpeg são impressas no console.
Wrapper
Classe para parsear playlists M3U8.
parsing_m3u8(url, headers=None)
staticmethod
Cria uma instância de M3U8Playlist a partir de uma URL de playlist M3U8.
Este método estático é utilizado para inicializar e retornar um objeto da classe M3U8Playlist
,
que fornece funcionalidades para análise e manipulação de playlists M3U8.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url |
str
|
URL da playlist M3U8 que deve ser parseada. |
required |
headers |
Optional[dict]
|
Cabeçalhos HTTP adicionais para a requisição (opcional). |
None
|
Returns:
Name | Type | Description |
---|---|---|
M3U8Playlist |
M3U8Playlist
|
Uma instância da classe |
Raises:
Type | Description |
---|---|
ValueError
|
Se a URL não for uma URL válida. |
Examples:
url_playlist = "https://example.com/playlist.m3u8"
headers = {
"User-Agent": "CustomAgent/1.0"
}
playlist = ParsingM3u8.parsing_m3u8(url=url_playlist, headers=headers)
print(playlist.info())
Notes
- Certifique-se de que a URL fornecida é uma URL válida e acessível.
- Se os cabeçalhos forem fornecidos, eles serão utilizados na requisição para obter o conteúdo da playlist.