Skip to content

Latest commit

 

History

History
194 lines (147 loc) · 9.09 KB

README_ja.md

File metadata and controls

194 lines (147 loc) · 9.09 KB

libaribcaption

English

テレビ放送の ARIB STD-B24 字幕をデコードしたり、レンダリングしたりするクロスプラットフォーム対応のライブラリです。

背景

デジタルテレビ放送で ATSC 規格を採用した北米では、CEA-608/708 規格の字幕(クローズドキャプション)が使われています。 DVB 規格を採用しているヨーロッパをはじめとする国々では、DVB Subtitles または DVB Teletext の形で字幕表示に対応しています。 一方、日本は電波産業会が ISDB という放送規格を独自に制定しました。中では ARIB STD-B24 規格の字幕仕様が含まれています。

ブラジルのデジタル放送も ISDB-T International を採用しています。 日本の ISDB 規格を基礎としつつ、いくつかの改良が含まれるブラジル方式 SBTVD / ISDB-Tb となっており、南米諸国にも採用されています。 ブラジル方式の中でも ABNT NBR 15606-1 にて字幕の規格が定義されており、 ARIB STD-B24 から改造してラテン語支援に向けたものです。 フィリピンもブラジル版の ISDB-T International を採用していますが、字幕規格はブラジルの ABNT 仕様ではなく、 日本の ARIB STD-B24 仕様を基づいて文字コードを UTF-8 に移行したものです。

ISDB 方式のデジタルテレビ放送はすでに 20 年近く行われていましたが、ARIB 字幕はまだほとんどの動画プレイヤーにサポートされていません。

概要

libaribcaption は ARIB 字幕を扱うためのデコーダーとレンダラーを提供し、 汎用的な動画プレイヤーにおいてもテレビと同じ効果で ARIB 字幕を再現できるようにしています。

libaribcaption は C++17 で開発されましたが、動画プレイヤーに導入しやすくなるため、C の API も同時に提供しています。 libaribcaption は最悪の場合でも libfreetype と libfontconfig のみに依存するので、非常に軽量なライブラリです。

libaribcaption はさまざまな OS やプラットフォームで使えます:

  • Windows 7+
  • Windows XP+ (libfreetype 必須)
  • Linux (libfreetype と libfontconfig が必須)
  • Android 2.x+ (libfreetype 必須)
  • macOS
  • iOS
  • など

スクショ

screenshot0.png

機能

  • 日本語字幕(ARIB STD-B24 JIS)、南米国家のラテン語字幕(ABNT NBR 15606-1)、およびフィリピンの字幕(UTF-8)の支援
  • DRCS および ARIB 外字の支援
  • さまざまなプラットフォームで動ける軽量なライブラリ
  • 最適化された画像処理(x86/x64 において SSE2 による最適化も含まれている)
  • DirectWrite, CoreText, FreeType を用いる複数なレンダリングバックエンドが選択可能
  • Windows または macOS / iOS においてサードパーティ依存なしで使用可能(DirectWrite / CoreText 利用)
  • 内蔵したフォントフォールバック機能
  • 内蔵した DRCS 置換機能および DRCS 置換テーブル

ビルド

CMake 3.11+ と C++17 対応のコンパイラが必要です。

cd libaribcaption
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j8
cmake --install .      # Optional

ディフォルトとして、libaribcaption はスタティックライブラリにコンパイルされます。 ARIBCC_SHARED_LIBRARY:BOOL=ON を指定すると、シェアードライブラリ(dll / so / dylib)にコンパイルできます。

cmake .. -DCMAKE_BUILD_TYPE=Release -DARIBCC_SHARED_LIBRARY:BOOL=ON    # or -DBUILD_SHARED_LIBS:BOOL=ON

libaribcaption はいくつかの CMake オプションを用意しています:

ARIBCC_BUILD_TESTS:BOOL            # Compile test codes inside /test. Default to OFF
ARIBCC_SHARED_LIBRARY:BOOL         # Compile as shared library. Default to OFF
ARIBCC_NO_EXCEPTIONS:BOOL          # Disable C++ Exceptions. Default to OFF
ARIBCC_NO_RTTI:BOOL                # Disable C++ RTTI. Default to OFF
ARIBCC_NO_RENDERER:BOOL            # Disable the renderer and leave only the decoder behind. Default to OFF
ARIBCC_IS_ANDROID:BOOL             # Indicate target platform is Android. Detected automatically by default.
ARIBCC_USE_DIRECTWRITE:BOOL        # Enable DirectWrite font provider & renderer. Default to ON on Windows
ARIBCC_USE_GDI_FONT:BOOL           # Enable GDI font provider which is necessary for WinXP support. Default to OFF.
ARIBCC_USE_CORETEXT:BOOL           # Enable CoreText font provider & renderer. Default to ON on macOS / iOS
ARIBCC_USE_FREETYPE:BOOL           # Enable FreeType based renderer. Default to ON on Linux / Android
ARIBCC_USE_EMBEDDED_FREETYPE:BOOL  # Use embedded FreeType instead of searching system library. Default to OFF
ARIBCC_USE_FONTCONFIG:BOOL         # Enable Fontconfig font provider. Default to ON on Linux and other platforms

ディフォルトとして、Windows および macOS / iOS においては OS が提供した DirectWrite と CoreText のみが使われます。 ただ、ARIBCC_USE_FREETYPE:BOOL=ON を指定すれば、FreeType ベースのレンダリングバックエンドをオンにすることも可能です。

Windows XP を支援したい場合は、DirectWrite を禁止し、GDI font provider と FreeType をオンにする必要があります:

cmake .. -DCMAKE_BUILD_TYPE=Release -ARIBCC_USE_DIRECTWRITE:BOOL=OFF -DARIBCC_USE_GDI_FONT:BOOL=ON -DARIBCC_USE_FREETYPE:BOOL=ON

Windows で FreeType または Fontconfig を利用する際に、vcpkg または msys2 の使用を検討してください。

Android NDK または Windows など、システムワイドでインストールされる FreeType の用意が困難な環境であれば、 -DARIBCC_USE_EMBEDDED_FREETYPE:BOOL=ON をつけて、埋め込み FreeType の利用を検討してください。 このオプションをオンにした場合、FreeType のソースが自動的にダウンロードされ、 libaribcaption にリンクされるスタティックライブラリにコンパイルされます。

使用

libaribcaption がシステムにインストールされた場合、CMake の find_package() でインポートできます:

cmake_minimum_required(VERSION 3.11)
project(testarib LANGUAGES C CXX)

find_package(aribcaption REQUIRED)

add_executable(testarib main.cpp)

target_compile_features(testarib
    PRIVATE
        cxx_std_17
)

target_include_directories(testarib
    PRIVATE
        ${ARIBCAPTION_INCLUDE_DIR}
)

target_link_libraries(testarib
    PRIVATE
        aribcaption::aribcaption
)

または、add_subdirectory() でソースコードのフォルダーを直接インポートできます:

cmake_minimum_required(VERSION 3.11)
project(testarib2 LANGUAGES C CXX)

set(ARIBCC_USE_FREETYPE ON CACHE BOOL "Enable FreeType")    # Indicate options here (optional)
add_subdirectory(thirdparty/libaribcaption)

add_executable(testarib2 main.cpp)

target_compile_features(testarib2
    PRIVATE
        cxx_std_17
)

target_link_libraries(testarib2
    PRIVATE
        aribcaption::aribcaption
)

もしくは、pkg-config 経由で使用することもできます(インストールされた場合):

# Link to libaribcaption static library
gcc main.c -o main `pkg-config --cflags --libs --static libaribcaption`

# Link to libaribcaption shared library
gcc main.c -o main `pkg-config --cflags --libs libaribcaption`

ドキュメント

public headers のコメントまたは sample code with ffmpeg を直接に読んでください。

ヒント

libaribcaption の public headers も C++17 で書かれているため、使用する際にも C++17 対応のコンパイラが必要です。 もし開発環境が C++17 に対応できない場合は、C API の使用を検討してください。

libaribcaption の C API (拡張子が ".h" の public headers)は C または他の言語から呼び出すために役立ちます。 capi sample を参考してください。

おすすめのフォント

Windows TV MaruGothic

Hiragino Maru Gothic ProN (macOS)

Rounded M+ 1m for ARIB

和田研中丸ゴシック2004ARIB

ライセンス

MIT License とします。再配布の際に copyright notice と permission notice を添付してください。

参考資料

ARIB STD-B24

ARIB TR-B14

ABNT NBR 15606-1

ISDB-T Standards (Philippines)

関連実装

libaribcaption は以下のプロジェクトからインスピレーションを得ています:

aribb24

aribb24.js

TVCaptionMod2