기사 출처|BMF 오픈소스 커뮤니티
GitHub|github.com/BabitMF/bmf
오픈소스 배경
라이브 단편 영상과 5G의 급속한 발전으로 인해 점점 더 많은 데이터가 영상 형태로 기록되고 유포되고 있습니다. 이는 다양한 비디오 애플리케이션을 구현하기 위한 범용 도구, SDK 및 솔루션인 비디오 처리 기술의 연구 및 적용을 특히 중요하게 만듭니다.
비디오 시대에 멀티미디어 개발은 다음과 같은 다양한 과제에 직면해 있습니다.
- 복잡한 시나리오 : 복잡한 처리 링크, 알고리즘과 프로젝트 간의 상호 의존성, 다양한 비즈니스 시나리오.
- 확장 및 협업 : 일부 알고리즘 개발자의 경우 Python과 같은 고급 언어가 자주 사용되는 반면 일부 멀티미디어 처리 솔루션은 C/C++ 인터페이스만 제공합니다. 또한 어떤 경우에는 기능 재사용을 더 잘 달성하기 위해 성숙한 기능에 사용되는 개발 언어가 현재 개발 중인 프로젝트와 동일하지 않은 경우 기능을 빠르고 효과적으로 재사용하고 통합하는 방법이 큰 경우가 많습니다. 문제 엔지니어링은 상당한 과제를 안겨줍니다.
- 표준 및 호환성 : 멀티미디어 개발 사용자는 다양한 처리 요구 사항에 직면하는 경우가 많습니다. 업계 표준을 충족하려면 자신의 요구 사항을 충족하기 위해 개발에 많은 노력을 투자해야 합니다. 업계 규정 준수, 표준 트랜스코딩 및 필터 처리 세부 사항, 다양한 주류 데이터 간의 상호 운용성을 요구하는 복잡한 개발 상황도 있습니다.개발자는 종종 다양한 표준 및 SDK와의 인터페이스를 배우는 데 많은 에너지를 투자해야 합니다.
- 이기종 컴퓨팅 : 대규모 비디오 처리의 경우 멀티 코어 CPU에만 의존하는 계산은 때때로 성능 및 비용 요구 사항을 충족할 수 없습니다. 이를 위해서는 GPU 및 DSP와 같은 보조 프로세서와 결합된 하드웨어 가속이 필요합니다. 사용자 처리 링크의 간단하고 사용하기 쉬운 데이터 전송 및 변환, 고성능 비동기 스케줄링 등 이기종 기능을 편리하고 효율적으로 연결하는 방법은 새로운 시대의 과제입니다.
위에서 언급한 몇 가지 문제를 해결하기 위해 Volcano Engine은 간단하고 사용하기 쉬운 교차 언어 인터페이스, 유연한 스케줄링 및 확장성, 동적 확장을 제공할 수 있는 BMF(Babit Multimedia Framework ) 범용 멀티미디어 처리 프레임워크를 개발했습니다. 모듈식 방식으로 비디오 처리의 원자적 기능을 관리 및 재사용하고, 그래프/파이프라인 형태로 고성능 멀티미디어 처리 링크를 구축하거나, 개별 처리 기능을 직접 호출하여 엔지니어링 통합을 구현하여 멀티미디어 사용자가 제작 환경에서 프로젝트를 구현할 수 있도록 지원합니다. 편리하고 효율적으로. BMF 팀은 오픈 소스 형태로 사용자가 업계의 문제점을 해결하도록 도움 으로써 사용자와 커뮤니티로부터 더 많은 관심과 피드백을 얻고 회사의 기술적 영향력을 지속적으로 강화할 수 있기를 바랍니다.
BMF란 무엇인가?
BMF (Babit Multimedia Framework, 8비트 멀티미디어 처리 프레임워크)는 Volcano Engine 이 자체 개발한 범용 멀티미디어 처리 프레임워크로 간단하고 사용하기 쉬운 교차 언어 인터페이스, 유연한 스케줄링 및 확장성을 제공할 수 있으며 동적으로 처리할 수 있습니다. 모듈 방식으로 확장되었습니다. 비디오 처리의 원자적 기능을 관리 및 재사용하고 고성능 멀티미디어 처리 링크를 그래프 형태로 구축하여 멀티미디어 사용자가 프로젝트를 프로덕션 환경에 빠르고 효율적으로 구현할 수 있도록 지원합니다. BMF의 전반적인 생태계 구조가 그림에 나와 있습니다.
BMF 프레임워크의 특징
- 간단한 다국어 인터페이스 : BMF는 사용자가 프로젝트 요구에 따라 다양한 언어로 개발을 통합하여 호환성을 극대화하고 전체 프레임워크를 재사용할 수 있도록 다국어 인터페이스를 제공합니다.
- 느슨하게 결합된 다중 언어 모듈 : 이 모듈은 비디오 처리를 위한 원자적 기능을 제공합니다. 사용자는 모듈 개발에 집중하기 위해 Python, C++ 또는 Go를 선택할 수 있습니다. 모듈과 프레임워크 간, 그리고 모듈 간에는 느슨한 결합이 있으므로 엔지니어링에서 알고리즘이 분리됩니다. , 상위 계층 애플리케이션에서 사용되는 개발 언어와 다른 언어로 개발된 처리 모듈을 분리하여 확장 기능과 다양한 협업 기능을 크게 향상시킵니다.
- 강력한 스케줄링 엔진 : BMF는 구성 가능한 병렬 스케줄러, 다중 사용 모드 및 그래프를 동적으로 조정하는 고급 기능을 제공하여 DAG/그래프/파이프라인 작동을 담당하는 고성능 스케줄링 메커니즘을 실현하고 다양한 솔루션을 통해 사용자를 돕습니다. 복잡한 시나리오의 기능 및 성능 요구 사항.
- FFmpeg 기능 및 표준과 완벽하게 호환 : BMF는 캡슐화 해제, 디코딩, 필터, 인코딩 및 캡슐화 기능과 같은 FFmpeg의 처리 기능 및 표시기와 완벽하게 호환됩니다. 이러한 처리 기능의 구성과 pts, 기간, 비트 전송률, FFmpeg를 사용한 fps 등 일관된 표시기의 결과는 FFmpeg 기능을 프로젝트에 신속하게 통합해야 하는 필요성을 잘 충족시킵니다.
- 여러 프레임워크와 이기종 장치 간의 데이터 변환 기능 : 여러 주류 데이터 형식 간의 제로 복사 변환을 지원하고 서로 다른 모듈 간의 데이터 연결과의 호환성이 높습니다. 예를 들어, ffmpeg의 인코딩, 디코딩 및 필터 기능, OpenCV의 변환 처리 및 지능형 분석을 위해 Pytorch를 사용해야 하는 더 복잡한 상황을 동시에 사용해야 하며, 이기종 교차 장치 데이터 전송, 픽셀 형식을 지원합니다. 변환 기능 및 비동기식 스케줄링 기능을 통해 사용자가 프로덕션 환경에서 가속화된 최적화 문제를 신속하게 해결할 수 있도록 도와줍니다.
애플리케이션 시나리오
회사는 회사 내에서 하루 1억 개 수준의 비디오 트랜스코딩, 향상, 지능형 처리 서비스, 프레임 추출 및 검토 서비스 , 라이브 비디오 강화 인물 컷아웃 , 알고리즘 구현을 모바일 단말기에 구현 하여 회사가 개발, 컴퓨팅을 줄이는 데 도움을 주었습니다. 및 대역폭 비용을 절감하여 엔지니어링 및 알고리즘의 협업 및 개발 효율성을 향상시킵니다.
사용하는 방법
오픈소스 주소:
https://github.com/BabitMF/bmf
후속 계획
BMF는 현재 오픈 소스입니다. 앞으로는 이종 생태 구축, 더 많은 원자 성능 구축 및 모바일 단말기 지원에 대한 노력을 기울여 멀티미디어 개발 생태계를 개선하고 산업 협력을 강화할 것입니다. 커뮤니티 구축에 참여하고 기술 표준화를 촉진하십시오.
감사와 소통
누구나 GitHub를 통해 후속 커뮤니케이션과 피드백을 진행할 수 있으며, BMF 웹사이트 도 방문하실 수 있습니다 .
동료 치킨 "오픈 소스" deepin-IDE 및 마침내 부트스트랩을 달성했습니다! 좋은 친구, Tencent는 Switch를 "생각하는 학습 기계"로 전환했습니다. Tencent Cloud의 4월 8일 실패 검토 및 상황 설명 RustDesk 원격 데스크톱 시작 재구성 웹 클라이언트 WeChat의 SQLite 기반 오픈 소스 터미널 데이터베이스 WCDB의 주요 업그레이드 TIOBE 4월 목록: PHP 사상 최저치로 떨어졌고 FFmpeg의 아버지인 Fabrice Bellard는 오디오 압축 도구인 TSAC를 출시했으며 Google은 대규모 코드 모델인 CodeGemma를 출시했습니다 . 오픈소스라서 너무 좋아요 - 오픈소스 사진 및 포스터 편집기 도구