Site oficial https://ffmpeg.org/download.html
e adicionado às variáveis de ambiente
ffmpeg -v ffmpeg versão 6.0 Copyright (c) 2000-2023 os desenvolvedores do FFmpeg construíram com Apple clang versão 14.0.3 (clang-1403.0.22.14.1)
Exibir o número da versão indica sucesso
No lado do navegador, pressione F12 para entrar na interface para visualizar as solicitações de rede, filtrar as informações m3u8
, pesquisar o conteúdo de visualização, clicar no vídeo, encontrar a reprodução da transmissão ao vivo, clicar nela e arrastar a barra de progresso para trás, se não houver. conteúdo, atualize-o. Esta solicitação está em Acessado antes do vídeo ser carregado, ele pode não ser gravado.
O primeiro passo é dar uma olhada na sala de informática de onde vem header
.
Na segunda etapa, Ctrl + A seleciona todo o conteúdo do Preview.
Algo assim:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Salve-o como aa.bj.m3u8
, no mesmo diretório do script python. Observe que o bj no meio pode ser diferente sz significa Shenzhen e bj significa Pequim.
Em seguida, execute o script python3 a.py
Uma pasta de cache será criada, que suporta a retomada do download e será excluída automaticamente após a conclusão do download.
O parâmetro -mac-crf
não pode ser usado para compactar o vídeo e as instruções do codificador precisam ser substituídas.
Versão demo, diferente do script de automação
solicitações de importação, os, re, time# sz significa Shenzhen, bj significa Pequim, base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] with open("aa. m3u8", "r") como f: s = f.readlines() para i em s: if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef download(): urls = get_url() para i, url em enumerate(urls): com open(f"{i + 1}.ts", "wb") como f: response = requests.get(url[: -1]) # Remova caracteres de nova linha print(i, "ok") # time.sleep(1)# Integre nomes de arquivos para facilitar a fusão do FFmpeg def parse_filename(): base_path = os.getcwd() urls = get_url() com open ("file.txt", "w+") como f: for i in range(1, 1 + len(urls)): path = f"file '{base_path}/{i}.ts'n" print( caminho) f.write(caminho)if __name__ == "__main__": download() print("download concluído...") parse_filename()
Se for bem-sucedido, uma série de arquivos二进制
será baixada, 1.ts, 2.ts, 3.ts, ...
Se estiver errado, é um arquivo com conteúdo em formato xml
, e uma mensagem de erro será exibida ao ser aberto.
A solução é ver se base_url
não corresponde ou se sz e bj estão errados.
ffmpeg -f concat -safe 0 -i arquivo.txt -c copiar a.mp4
Acredito que se o arquivo ficar muito grande após a mesclagem, você pode usar ffmpeg
para compactar novamente ou usar h256/hevc
para recodificar e obter um tamanho de arquivo menor.
Recomenda-se usar a compactação de software permute
Usar um formato de codificação de vídeo mais eficiente é um método comum para reduzir o tamanho dos arquivos de vídeo usando um formato de codificação de vídeo com uma taxa de compactação mais alta. Aqui está um exemplo de uso do FFmpeg para converter vídeo para o formato de codificação H.265:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
O comando acima converte o vídeo de entrada input.mp4 para o formato de codificação H.265 e salva o resultado como arquivo output.mp4. Entre eles, a opção -c:v indica o codificador de vídeo, libx265 indica o uso do codificador x265, a opção -crf indica a qualidade do vídeo e 28 indica a qualidade do vídeo alvo. Quanto menor o valor, maior será a qualidade do vídeo e maior será a qualidade do vídeo. maior o tamanho do arquivo.
Teste, o vídeo de 1,3g está compactado para o tamanho de 231m, mas a velocidade é muito lenta = 0,8, 3 horas de compactação de vídeo levei 4 horas, procurando outros métodos
hevc_videotoolbox não é tão bom quanto libx265, mas é muito rápido no meu MacBook air 13 m1,
Como a maioria dos codificadores acelerados por hardware, o hevc_videtoolbox não é tão eficiente quanto o libx265. Portanto, pode ser necessário fornecer uma taxa de bits significativamente mais alta em comparação com a libx265 para corresponder à qualidade equivalente. Isso pode anular o propósito de recodificação de H.264 para HEVC/H.265.
Site oficial https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox
# VideoToolbox [¶](https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox "链接到这一节") [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) is the macOS framework for video decoding and encoding. The following codecs are supported: - Decoding: H.263, H.264, HEVC, MPEG-1, MPEG-2, MPEG-4 Part 2, ProRes - Encoding: H.264, HEVC, ProRes To use H.264/HEVC hardware encoding in macOS, just use the encoder `-c:v h264_videotoolbox` or `-c:v hevc_videotoolbox` for H.264 or HEVC respectively. Check `ffmpeg -h encoder=...` to see encoder options. VideoToolbox supports two types of rate control: - Bitrate-based using `-b:v` - Constant quality with `-q:v`. Note that the scale is 1-100, with 1 being the lowest and 100 the highest. Constant quality mode is only available for Apple Silicon and from ffmpeg 4.4 and higher.
Ative a aceleração GPU 3 e especifique o codificador de vídeo para codificação. Deve-se observar que o VideoToolbox não suporta CRF, portanto a taxa de bits deve ser especificada por meio de -b:v
.
Codec AVOption crf (Selecione a qualidade para o modo de qualidade constante) não foi usado para nenhum fluxo. O motivo mais provável é o tipo errado (por exemplo, uma opção de vídeo sem fluxos de vídeo) ou é uma opção privada de algum codificador que foi. na verdade não é usado para nenhum fluxo.
Testar as opções padrão é cerca de 10 vezes mais rápido
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
quadro = 126360 fps = 114 q = -0,0 Ltamanho = 413400kB tempo = 02:55:29,95 taxa de bits = 321,6 kbits / s dup = 663 queda = 0 velocidade = 9,51x vídeo: 315854kB áudio: 93814kB subtítulo: 0kB outros fluxos: 0kB cabeçalhos globais: 0kB sobrecarga de muxing: 0,910847%
É cerca de 10 vezes mais rápido que o anterior, e o tamanho do arquivo passou de 800m para 400m, mas a taxa de compactação caiu. Vou testar mais alguns arquivos.
As codificações correspondentes a h264 no macOS incluem libx264 e h264_videotoolbox. As duas velocidades são semelhantes, mas libx264 tem um alto uso de CPU e o tamanho do arquivo transcodificado também é pequeno. Ouvi dizer que os requisitos de decodificação para reproduzir vídeos serão maiores.
Após meu teste, descobri que os arquivos de gravação e transmissão usam a codificação h264. A codificação H265 tem vantagens óbvias em 4k e muitas cenas de esportes têm apenas 12 quadros e qualidade de imagem 1080p. gravação e transmissão que estudei A maioria deles são ppt e há muito poucas fotos esportivas.
As seguintes instruções são recomendadas:
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
Fonte do código https://blog.51cto.com/u_15366127/6084937 ↩
Várias maneiras de usar o ffmpeg para reduzir o tamanho do vídeo https://juejin.cn/post/7222575963564654648 ↩
Aceleração de hardware FMPEG https://blog.xm.mk/posts/1a3h/ ↩