Estrutura geral de processamento de multimídia de código aberto do mecanismo Volcano BMF

Fonte do artigo|Comunidade de código aberto BMF

GitHub|github.com/BabitMF/bmf

Plano de fundo de código aberto

Com o rápido desenvolvimento de vídeos curtos ao vivo e 5G, cada vez mais dados são gravados e divulgados na forma de vídeos. Isso torna particularmente importante a pesquisa e aplicação de tecnologias de processamento de vídeo, que são ferramentas universais, SDKs e soluções para implementação de diversas aplicações de vídeo.

Na era do vídeo, o desenvolvimento multimédia enfrenta diversos desafios, incluindo,

  • Cenários complexos : links de processamento complexos, interdependência entre algoritmos e projetos e diversos cenários de negócios.
  • Extensão e colaboração : Para alguns desenvolvedores de algoritmos, linguagens de alto nível como Python são frequentemente usadas, enquanto algumas soluções de processamento multimídia fornecem apenas interfaces C/C++. Além disso, em alguns casos, para melhor conseguir a reutilização de capacidades, verifica-se frequentemente que a linguagem de desenvolvimento utilizada para capacidades maduras não é a mesma do projecto actualmente em desenvolvimento. Como reutilizar e integrar capacidades de forma rápida e eficaz é um grande problema. problema. A engenharia apresenta desafios significativos.
  • Padrões e compatibilidade : Os usuários de desenvolvimento multimídia geralmente enfrentam diferentes necessidades de processamento. Alguns recursos clássicos e comumente usados ​​de transcodificação e filtro são usados ​​com muita frequência. Para atender aos padrões da indústria, eles precisam investir muito esforço no desenvolvimento para atender às suas próprias necessidades. alcançar a conformidade da indústria. Detalhes de processamento de filtro e transcodificação padrão também existem algumas situações de desenvolvimento complexas que exigem interoperabilidade entre diferentes dados convencionais. Os desenvolvedores geralmente precisam investir muita energia no aprendizado da interface com vários padrões e SDKs.
  • Computação heterogênea : para processamento massivo de vídeo, os cálculos que dependem exclusivamente de CPUs multi-core às vezes não conseguem atender aos requisitos de desempenho e custo. Isso requer aceleração de hardware em combinação com coprocessadores, como GPUs e DSPs. Como conectar recursos heterogêneos de maneira conveniente e eficiente, incluindo transmissão e conversão de dados simples e fáceis de usar em links de processamento de usuários e agendamento assíncrono de alto desempenho, é um desafio na nova era.

Para resolver vários dos desafios mencionados acima, a Volcano Engine desenvolveu a estrutura universal de processamento de multimídia BMF (Babit Multimedia Framework ) , que pode fornecer interfaces de linguagem cruzada simples e fáceis de usar, agendamento e escalabilidade flexíveis e expansão dinâmica em de maneira modular, gerencie e reutilize os recursos atômicos de processamento de vídeo, construa links de processamento multimídia de alto desempenho na forma de gráfico/pipeline ou implemente integração de engenharia chamando diretamente recursos de processamento individuais, ajudando usuários de multimídia a implementar projetos no ambiente de produção. de forma conveniente e eficiente. Na forma de código aberto, a equipe da BMF espera que, ao ajudar os usuários a resolver os problemas do setor , possa atrair mais atenção e feedback dos usuários e das comunidades e aumentar continuamente a influência técnica da empresa.

O que é BMF

BMF (Babit Multimedia Framework, estrutura de processamento de multimídia de oito bits) é uma estrutura de processamento de multimídia universal autodesenvolvida pelo Volcano Engine . Ele pode fornecer interfaces de linguagem cruzada simples e fáceis de usar, agendamento e escalabilidade flexíveis e pode ser dinamicamente. expandido de maneira modular Gerenciar e reutilizar os recursos atômicos de processamento de vídeo e construir links de processamento multimídia de alto desempenho na forma de Graph para ajudar os usuários de multimídia a implementar projetos no ambiente de produção de forma rápida e eficiente. A estrutura geral do ecossistema do BMF é mostrada na figura.

Recursos da estrutura BMF

  • Interface multilíngue simples : BMF fornece uma interface multilíngue para facilitar aos usuários a integração do desenvolvimento em diferentes linguagens de acordo com as necessidades do projeto, maximizando a compatibilidade e reutilização de todo o framework.
  • Módulo multilíngue fracamente acoplado : O módulo fornece recursos atômicos para processamento de vídeo. Os usuários podem escolher Python, C++ ou Go para se concentrar no desenvolvimento de módulos, há acoplamento fraco entre módulos e estruturas, e entre módulos, dissociando assim os algoritmos da engenharia; , desacoplando módulos de processamento desenvolvidos em diferentes linguagens das linguagens de desenvolvimento usadas em aplicativos de camada superior, melhorando significativamente as capacidades de expansão e capacidades de colaboração diversificadas.
  • Poderoso mecanismo de agendamento : o BMF fornece um agendador paralelo configurável, vários modos de uso e recursos avançados de ajuste dinâmico do Graph para realizar um mecanismo de agendamento de alto desempenho responsável pela operação de DAG/Graph/Pipeline e ajudar os usuários por meio de várias soluções. requisitos funcionais e de desempenho em cenários complexos.
  • Totalmente compatível com funções e padrões FFmpeg : BMF é totalmente compatível com os recursos e indicadores de processamento do FFmpeg, como desencapsulamento, decodificação, filtro, codificação e recursos de encapsulamento. A configuração desses recursos de processamento e a capacidade de obter pts, duração, taxa de bits,. fps, etc. com FFmpeg Os resultados com indicadores consistentes atendem bem à necessidade de integrar rapidamente os recursos do FFmpeg aos projetos.
  • Capacidades de conversão de dados entre múltiplas estruturas e dispositivos heterogêneos : suporta conversão de cópia zero entre vários formatos de dados convencionais e é altamente compatível com conexões de dados entre diferentes módulos. Por exemplo, é necessário usar os recursos de codificação, decodificação e filtro do ffmpeg, o processamento de transformação do OpenCV e situações mais complexas onde o Pytorch precisa ser usado para análise inteligente ao mesmo tempo, ele suporta transferência heterogênea de dados entre dispositivos, formato de pixel; recursos de conversão e recursos de agendamento assíncronos, ajudando assim os usuários a resolver rapidamente problemas de otimização acelerada no ambiente de produção.

Cenários de aplicação

A empresa implementou transcodificação de vídeo, aprimoramento, serviços de processamento inteligente, serviços de extração e revisão de quadros , recortes de retrato aprimorados de vídeo ao vivo e implementação de algoritmo em terminais móveis no nível de 100 milhões por dia dentro da empresa , ajudando a empresa a reduzir o desenvolvimento, a computação e custos de largura de banda, melhorando a eficiência de colaboração e desenvolvimento de engenharia e algoritmos.

Como usar

Endereço de código aberto:

https://github.com/BabitMF/bmf

Plano de acompanhamento

BMF agora é de código aberto. O projeto ainda está em iteração ativa. No futuro, serão feitos esforços na construção ecológica heterogênea, na construção de mais capacidade atômica e no suporte de terminais móveis para melhorar a ecologia do desenvolvimento multimídia e fortalecer a cooperação industrial. tentar participar na construção da comunidade e promover a padronização tecnológica.

Obrigado e comunicação

Todos são bem-vindos para realizar comunicações de acompanhamento e feedback por meio do GitHub, e você também pode visitar o site do BMF .

Companheiro de frango, deepin-IDE de "código aberto" e finalmente conseguiu a inicialização! Bom cara, a Tencent realmente transformou o Switch em uma "máquina de aprendizagem pensante" Revisão de falhas e explicação da situação da Tencent Cloud em 8 de abril Reconstrução de inicialização de desktop remoto RustDesk Cliente Web Banco de dados de terminal de código aberto do WeChat baseado em SQLite WCDB inaugurou uma grande atualização Lista de abril TIOBE: PHP caiu para o nível mais baixo, Fabrice Bellard, o pai do FFmpeg, lançou a ferramenta de compressão de áudio TSAC , o Google lançou um grande modelo de código, CodeGemma , isso vai te matar? É tão bom que é de código aberto - ferramenta de edição de imagens e pôsteres de código aberto
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/6210722/blog/10105899
Recomendado
Clasificación