Repository navigation
4.0.1: ライブ配信 (HLS / DASH / HTTP-FLV / MJPEG)、glTF の拡張、115 言語、FFmpeg がないときの対策 - #16
Merged
Merged
Conversation
- 映像と音声を時刻 0 からそろえ、フレームの番号と実際の時刻がずれないようにした (ライブ配信で 4 fps 程度まで落ちていた) - MJPEG の配信は時刻の情報がないので、届いた時刻を使う - ライブ配信が途切れたり、映像も音声も届かなくなったりしたら、待ち時間を延ばしながらつなぎ直す - multipart/x-mixed-replace の配信は、画像としてダウンロードしない - FFmpeg が見つからないときは、null のまま使わずに例外にする
- 法線マップで長さが 1 を超えた法線で、負の数の累乗が NaN になり黒い点になっていた - 透過の材質は半分まで透けるようにし、焼き込まない場合も厚みのある材質の色 (KHR_materials_volume) を付ける - 三角形の上限 (15 万) は、ゲームの中での負荷のために決めた値なので変えない
Draco の展開は openize-drako-java (MIT)、meshopt の展開は meshoptimizer (MIT) をもとにしているので、 その著作権表示とライセンスを marumasa_sign/licenses に置く。
インストールされているフォントから、文字の種類ごとに表示できるものを探して覚えておき、 1 つのフォントで表示できない文字列は文字ごとにフォントを変えて描く。
以前の実装は、可逆・非可逆とも正しい画素にならなかった (PSNR 5 - 10 dB)。 TwelveMonkeys ImageIO (BSD 3-Clause) の VP8 / VP8L デコーダを取り込み、RIFF の読み込み、 透明度 (ALPH、圧縮なし・可逆圧縮・予測)、アニメーションの最初のフレームは自分で書いた。 FFmpeg の結果と比べて、可逆は完全に一致、非可逆は 46 - 51 dB。
以前の BC7 は分け方の表が間違っていて、正しい画素にならなかった (PSNR 26 dB)。 BC6H と BC7 は bcdec (MIT) を Java に書き直したもの (Bptc)。Pillow のテスト画像と比べて、 BC1 - BC5、BC7、非圧縮、パレットは一致し、壊れたファイルは止まらずに失敗する。
以前の実装は ETC1S も UASTC も正しい画素にならなかった (灰色や黒の画像になっていた)。 - Zstandard の展開を RFC 8878 から書いた (ZstdDecoder) - ETC1S (BasisLZ) と UASTC は Basis Universal (Apache 2.0) の transcoder を Java に書き直した - 圧縮していない 8 ビットの形式と、BC1 - BC7 の形式、zlib の超圧縮にも対応 サンプルの KTX2 を WebP 版と比べて ETC1S は 35 - 43 dB (ETC1S 自体の劣化を含む)、 壊したファイル 2700 個で、IOException 以外の例外や止まることはなかった。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
4.0.1 として、次をまとめて入れます。main に入ると、release ワークフローが v4.0.1 を作ります。
Closes #15
ライブ配信 (#15)
HLS (
.m3u8)、MPEG-DASH (.mpd)、HTTP-FLV、MJPEG (multipart/x-mixed-replace) の URL を、動画と同じように看板に表示できるようにしました。長い URL は今までどおり自動で短縮されます。FFmpeg がないとき
FFmpeg が見つからない状態で、動画の看板を Fabric 1.21.1 / 26.3、Forge 1.7.10 / 1.12.2 / 26.3、NeoForge 26.3 の実機で表示しましたが、落ちることはありませんでした (チャットで知らせて、エラーの画像を出す)。
落ちる原因は特定できていませんが、FFmpeg の場所が null のまま使われうる箇所をなくし、探す処理の例外も止めるようにしました。
glTF の拡張
KHR_draco_mesh_compression、EXT_meshopt_compression/KHR_meshopt_compression、EXT_mesh_gpu_instancing、KHR_mesh_quantizationKHR_lights_punctual、EXT_lights_image_basedKHR_animation_pointerKHR_texture_basisu、ETC1S / UASTC、Zstandard)、WebP、DDS (BC1 - BC7)、AVIF (FFmpeg 経由)Draco、meshopt、WebP、BC6H/BC7、ETC1S/UASTC は、それぞれ openize-drako-java (MIT)、meshoptimizer (MIT)、TwelveMonkeys ImageIO (BSD 3-Clause)、bcdec (MIT)、Basis Universal (Apache 2.0) を取り込み、または Java に書き直したものです。
ライセンスは jar の
marumasa_sign/licensesに入れ、README に一覧を書きました。Zstandard の展開は RFC 8878 から書いています。115 言語
Minecraft のすべての言語 (115) に、画面・チャット・キーの割り当ての名前を翻訳しました。英語と日本語以外はネイティブの確認をしていません。
タミル文字やカンナダ文字など、代わりのフォントにもない文字は、インストールされているフォントから探して描くようにしました。
確認したこと
確認していないこと