O BMF (BABIT Multimedia Framework) é uma estrutura de processamento multimídia de plataforma cruzada, multi-idioma, desenvolvida pela Bytedance . Com mais de 4 anos de testes e melhorias, o BMF foi adaptado para enfrentar os desafios de nossos ambientes de produção do mundo real. Atualmente, é amplamente utilizado no streaming de vídeo, transcodificação ao vivo, edição em nuvem e cenários de processamento pré/pós -processamento móveis. Mais de 2 bilhões de vídeos são processados pela estrutura todos os dias.
Aqui estão alguns recursos importantes do BMF:
Suporte de plataforma cruzada: compatibilidade nativa com Linux, Windows e Mac OS, bem como otimização para CPUs X86 e ARM.
Fácil de usar: o BMF fornece APIs Python, GO e C ++, permitindo aos desenvolvedores a flexibilidade de codificar em seus idiomas favoritos.
Customizabilidade: os desenvolvedores podem aprimorar os recursos da estrutura adicionando seus próprios módulos de forma independente devido à arquitetura desacoplada do BMF.
Alto desempenho: o BMF possui um agendador poderoso e um forte suporte para hardware de aceleração heterogênea. Além disso, a NVIDIA está cooperando conosco para desenvolver um pipeline de GPU altamente otimizado para transcodificação de vídeo e inferência de IA.
Conversão de dados eficientes: o BMF oferece conversões de formato de dados sem costura em estruturas populares (FFMPEG/Numpy/Pytorch/OpenCV/Tensorrt), conversão entre dispositivos de hardware (CPU/GPU) e espaço de cores e conversão de formato de pixel.
O BMflite é uma estrutura de processamento multimídia do lado do cliente, da plataforma cruzada, leve e mais eficiente. Até agora, o algoritmo do bmflite do cliente é usado em aplicativos como Douyin/Xigua, servindo mais de um bilhão de usuários em streaming ao vivo/jogo de vídeo/fotos/jogos em nuvem e outros cenários, e processando vídeos e fotos trilhões de vezes todos os dias .
Mergulhe mais fundo nos recursos da BMF em nosso site para obter mais detalhes.
Nesta seção, exibiremos diretamente os recursos da estrutura BMF em torno de seis dimensões: transcode , editar , reunir/emissoras , aceleração da GPU , inferência de AI e estrutura do lado do cliente . Para todas as demos fornecidas abaixo, as implementações e documentação correspondentes estão disponíveis no Google Colab, permitindo que você as experimente intuitivamente.
Esta demonstração descreve passo a passo como usar o BMF para desenvolver um programa de transcodificação, incluindo transcodificação de vídeo, transcodificação de áudio e transcodificação de imagem. Nele, você pode se familiarizar com como usar o BMF e como usar opções compatíveis com o FFMPEG para alcançar os recursos necessários.
Se você quiser ter um experimento rápido, pode experimentá -lo
A demonstração Editar mostrará como implementar um pipeline de edição de áudio e vídeo de alta complexidade através da estrutura do BMF. Implementamos dois módulos Python, video_concat e video_overlay, e combinamos vários recursos atômicos para construir um gráfico BMF complexo.
Se você quiser ter um experimento rápido, pode experimentá -lo
Esta demonstração usa a estrutura do BMF para construir um serviço de transmissão simples. O serviço fornece uma API que permite puxar a fonte dinâmica de vídeo, controle de layout de vídeo, mixagem de áudio e, finalmente, transmitir a saída para um servidor RTMP. Essa demonstração mostra a modularidade do BMF, o desenvolvimento de várias linguagens e a capacidade de ajustar dinamicamente o pipeline.
Abaixo está uma gravação de tela que demonstra a operação de emissora:

A demonstração de aceleração de extração de quadros de vídeo mostra:
BMF Capacidade flexível de:
Aceleração de hardware Capacidade rapidamente e suporte de pipeline de CPU/GPU
Se você quiser ter um experimento rápido, pode experimentá -lo
A demonstração de transcodificação e filtro da GPU mostra:
A demonstração constrói um pipeline de transcodificação que é executado totalmente na GPU:
decodge-> escala-> flip-> giration-> cultiv-> bleur-> codifica
Se você quiser ter um experimento rápido, pode experimentá -lo
O protótipo de como criar um vídeo pré -processamento para dados de treinamento de LLM em Bytedance, que serve bilhões de processamento de clipes todos os dias.
O vídeo de entrada será dividido de acordo com a mudança de cena, e as legendas no vídeo serão detectadas e cortadas pelo módulo OCR, e a qualidade do vídeo será avaliada pelo módulo estético fornecido pelo BMF. Depois disso, os videoclipes finalizados serão codificados como saída.
Se você quiser ter um experimento rápido, pode experimentá -lo
Esta demonstração mostra como integrar o estado da arte AI algoritmos no pipeline de processamento de vídeo BMF. O famoso algoritmo de colorização de código aberto é embrulhado como um módulo BMF Pyhton em menos de 100 linhas de códigos. O efeito final é ilustrado abaixo, com o vídeo original no lado esquerdo e o vídeo colorido à direita.
Se você quiser ter um experimento rápido, pode experimentá -lo

Essa demonstração implementa o processo de inferência de super-resolução do Real-Esrgan como um módulo BMF, mostrando um pipeline BMF que combina a decodificação e inferência de super-resolução e codificação.
Se você quiser ter um experimento rápido, pode experimentá -lo
Esta demonstração mostra como invocar nosso modelo de avaliação estética usando BMF. Nosso modelo de aprendizado profundo AesMode alcançou uma precisão de classificação binária de 83,8% no conjunto de dados da AVA, atingindo o nível do SOTA acadêmico e pode ser usado diretamente para avaliar o grau estético de vídeos por meio de processamento de extração de quadros.
Se você quiser ter um experimento rápido, pode experimentá -lo
Esta demonstração mostra um pipeline de detecção de face de ligação completa baseada na aceleração da tensorrção, que usa internamente o modelo ONNX acelerado por tensorrt para processar o vídeo de entrada. Ele usa o algoritmo NMS para filtrar caixas candidatas repetidas para formar uma saída, que pode ser usada para processar uma tarefa de detecção de rosto com eficiência.
Se você quiser ter um experimento rápido, pode experimentá -lo
Este caso ilustra os procedimentos de integrar um módulo de algoritmo externo na estrutura BMFLite e gerenciamento de sua execução.

Este exemplo implementa o algoritmo de denoise como um módulo BMF, mostrando um pipeline BMF que combina captura de vídeo, redução de ruído e renderização.

Sobre BMF
Experiência rápida
Começando
Modo de sincronização com 3 idiomas. Você pode experimentar:
Python: C ++: GO:
Vários recursos (com exemplos)
APIs
Licença
Contribuindo
O projeto possui uma licença Apache 2.0. Componentes e dependências de terceiros permanecem sob suas próprias licenças.
Contribuições são bem -vindas. Siga as diretrizes.
Usamos problemas do GitHub para rastrear e resolver problemas. Se você tiver alguma dúvida, não hesite em participar da discussão e trabalhar conosco para encontrar uma solução.
O decodificador, o codificador e o filtro de referência FFMPEG CMDLINE Tool. Eles são embrulhados como módulos internos da BMF sob a licença LGPL.
O projeto também se inspira em outras estruturas populares, como FFMPEG-Python e MediaPipe. Nosso site está usando o projeto da Docsy baseado em Hugo.
Aqui, gostaríamos de expressar nossos sinceros mais graças aos desenvolvedores dos projetos acima!