火山エンジン オープンソース汎用マルチメディア処理フレームワーク BMF

記事ソース|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 の処理機能およびインジケーターと完全な互換性があり、これらの処理機能の構成と、ポイント、継続時間、ビットレート、 FFmpeg を使用した fps など 一貫したインジケーターを備えた結果は、FFmpeg 機能をプロジェクトに迅速に統合するというニーズを十分に満たしています。
  • 複数のフレームワークと異種デバイス間のデータ変換機能 :複数の主流データ形式間のゼロコピー変換をサポートし、異なるモジュール間のデータ接続との高い互換性を備えています。たとえば、ffmpeg のエンコード、デコード、フィルター機能、OpenCV の変換処理、およびインテリジェントな分析に Pytorch を使用する必要があるより複雑な状況で使用する必要があり、同時に異種クロスデバイス データ転送、ピクセル形式もサポートされます。変換機能と非同期スケジューリング機能により、ユーザーは実稼働環境で高速化された最適化問題を迅速に解決できます。

アプリケーションシナリオ

同社は、ビデオのトランスコーディング、強化、インテリジェント処理サービス、フレーム抽出およびレビュー サービス、ライブ ビデオ強化ポートレート カットアウト、モバイル端末へのアルゴリズム実装を社内で 1 日あたり 1 億件レベルで実装し、開発、コンピューティングの削減に貢献しています。 、帯域幅のコストが削減され、エンジニアリングとアルゴリズムのコラボレーションと開発効率が向上します。

使い方

オープンソースのアドレス:

https://github.com/BabitMF/bmf

フォローアップ計画

BMF は現在オープンソースであり、今後も、マルチメディア開発エコロジーを改善し、業界の協力を強化するために、異種環境の構築、よりアトミックな機能の構築 、および モバイル端末のサポートに取り組んでいきます。コミュニティ構築に参加し、技術の標準化を推進してください。

感謝とコミュニケーション

誰でも、GitHub を通じてフォローアップのコミュニケーションやフィードバックを行うことができます。また、BMF Web サイトにアクセスすることもできます。

仲間のニワトリがDeepin-IDE を 「オープンソース」化し、ついにブートストラップを達成しました。 いい奴だ、Tencent は本当に Switch を「考える学習機械」に変えた Tencent Cloud の 4 月 8 日の障害レビューと状況説明 RustDesk リモート デスクトップ起動の再構築 Web クライアント WeChat の SQLite ベースのオープンソース ターミナル データベース WCDB がメジャー アップグレードを開始 TIOBE 4 月リスト: PHPは史上最低値に落ち、 FFmpeg の父であるファブリス ベラールはオーディオ圧縮ツール TSAC をリリースし 、Google は大規模なコード モデル CodeGemma をリリースしました 。それはあなたを殺すつもりですか?オープンソースなのでとても優れています - オープンソースの画像およびポスター編集ツール
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/6210722/blog/10105899