Revival Gate

頻繁かつ最新の更新は本サイトではなく、 Classic Revival Gate で行っています。最新の記事の購読をお求めの方は、そちらもご覧ください。

Text of this document

  • 初版:2005-03-15
  • 改訂:2006-02-09

現下、MUSIC PC さんとのいくつかの実験・情報交換などを経て、この問題が Timescale code に起因するものであることが確認されています。詳細な問題・事情を知るためにはこの記事よりも後の記事を確認する必要があります。

この問題を回避する最も最適な方法としてこのサイトが推奨する方法は MKA 変換機のファイルチェックモードを使用することです。詳細は「mka を簡単に作れる「MKA変換機」」(2005-10-16)を参照してください。

例の mka から取り出すと tta が欠損する問題の続編。

flac / AAC / AC3 / Ogg-Vorbis / MP3(Lame) / PCM-wave はもちろんのこと、無理矢理に WMA までトラックとして mka に突っ込ませて実験してみましたが、これらの圧縮形式に関しては入力データと出力データは同じでした。厳密には、出てくるファイルと入れるファイルが同一でないことはありますが、それらはおそらくヘッダが書き換わっているだけで、実際には中に入っている音と時間は全く同じものです。上記の圧縮形式に関しては、出力ファイルに内包されている音と入力ファイルの音を比較すれば完全に一致するはずです。本来はこの結果が全ての mka に格納可能な圧縮形式に当てはまるべきなのですが、ところがどうやっても、やーっぱり tta だけがどうやっても短くなってしまうのです。

取り敢えずなにがどうなっているのかだけでも探り当てる

ハッシュが同じでないのは、音が変化してしまっているからですか?

前回はなにぶん超高速で記事を書き上げたためにやや不正確な書き方から誤解を生んでしまい、大変申し訳ありませんでした。結論から言えば、音が変化しているのではなく、終点から 1/44100 秒が失われるためです(16bit 2ch 44100Hz の場合)。

[input.wav → (ttaenc3.2) → input.tta → (mkvmerge) → midway (tta+cue).mka → (mkvextract) → output.tta → (ttaenc3.2) → output.wav]

(input.wav は 16bit 2ch 44100Hz の PCM / mkvToolnix は 1.4.1 'Cherry Lips' / libebml v0.7.3 + libmatroska v0.7.5)

merge のコマンドラインは、mkvmerge -o "midway.mka" --language 0:jpn -a 0 -D -S input.tta --track-order 0:0 --chapter-language jpn --chapter-charset UTF-8 --chapters input.cue。mkvextract のコマンドラインは、mkvextract tracks "midway.mka" 1:"output.tta"

中間に破壊圧縮が入っているわけではありませんから、他の可逆音声圧縮形式では必ず input.wav = output.wav になります(Lossless/Lossy を問わず、 input.xxx = output.xxx になるとは限らないことに注意。 .xxx は中間の音声圧縮形式の拡張子)。

しかし、tta に限っては input.wav ≠ output.wav になります

上記の例では extract した途端に、output.tta は input.tta よりもサンプル数が1つ足りなくなります。たとえば input.wav と input.tta のサンプル数が 40001640 であるとして、これを mka コンテナに詰め込んだ midway (tta+cue).mka は同様に 40001640 のサンプル数を保持します。しかしながら、この mka のトラック1(※デフォルトトラック)にある tta を mkvextract で抜き出してくると、1つ減損して 40001639 になってしまっているというあんばい。1サンプルの損失によって失われる時間は 1/44100 秒ですから、これは 16bit 44100Hz の PCM の場合には 4byte に相当します。結果としてそれを変換した output.wav は input.wav より 4byte 少ないという結果になります(もちろん output.wav のサンプル数は 40001639)。

なお、少なくとも私の環境では登場する5ファイルの全てにおいて、時間が不整合であることを除いて、出力される音が完全に同一であることを確認しています。最後の 1/44100 秒以外、音の波形は重なります。削られた部分が圧迫されるとか、あるいは音が変わってしまうといった問題ではなく、単純に最後の 1/44100 秒が足りなくなってしまうという問題の模様。

そのため、midway(tta+cue).mka は DSF 経由で再生すると 40001640 サンプル全てを再生します。現状、取り敢えず mka を DSF 経由で wave に戻しさえすれば mka を lossless 梱包コンテナとして扱えます。

なんでこの問題が起こるの?

それはわかんない…。私の手に負えないハイレベルすぎる問題な気がします。

作者さんに聞いてみるなり報告するべきかなとも思ったのですが、せいぜい動画と音声をくっつけて字幕とチャプターを埋め込む程度にしか mkvToolnix を使ったことがないので、これが本当にバグなのかという時点からして怪しい。単純に自分がやり方を間違えているだけかもしれないし、冷静に考えればこんなシンプルな問題が本当にバグなら誰も報告していていないわけがない気がするんですよ。下手くそな英語で作者さんを煩わせるのもどうかと思いますし、もう少し冷静に考えて、そしてもう少し調べてから聞いても遅くはないだろうと思っています。

再現率

私の家の3台の PC(XP-Home, XP-Pro, Win98)では 1.4.1 で完全に再現しました。メールフォームからの投稿で情報をいただいたので、たぶんそちらでも同様のことが起こったのかと想像しています。逆に起こらない環境もあるのかもしれません。所詮私がやったことなので決して信じこまず、まずは確認をしてみてください。他力本願ながら、いろいろと試していただいて、出来れば原因をどなたかに特定して欲しいところであります…。誰かとにかく詳しい神の降臨を希望。

Index

Sub Contents

Archives

Categories

Search

Recent Entries

2007-08-15T09:01
『ギャラクシーエンジェルII 無限回廊の鍵』の立ち絵が革命的に改善している件について [アニメ/ギャラクシーエンジェル]
2007-05-07T03:32
アニメ版『かみちゃまかりん』にコゲどんぼ先生のココロが折られた件について [アニメ/デ・ジ・キャラット/コゲどんぼ作品]
2007-04-04T08:47
ブロッコリーが事実上の黒字を達成 [社会/株式投資]
2007-04-02T02:08
『ギャラクシーエンジェルII 無限回廊の鍵』の発売日が2007年10月18日に確定 [アニメ/ギャラクシーエンジェル]
2007-03-25T07:35
東京国際アニメフェア2007に行ってきました [アニメ]
2007-03-21T04:58
『ギャラクシーエンジェルII 無限回廊の鍵』の立ち絵が酷く劣化している件について [アニメ/ギャラクシーエンジェル]
2007-02-27T12:58
「999円」ミントパック・ミルフィーパックの販売は28日で終了 [アニメ/ギャラクシーエンジェル]
2007-02-14T14:47
最近の「なかよし」はさすがにダメだと思う [アニメ]
2007-02-10T04:46
コミック版 『Yes! プリキュア5』 [アニメ]
2007-02-02T15:55
ミントに続いてミルフィーも999円に値下げになりました [アニメ/ギャラクシーエンジェル]

Address/Information

No Rights Reserved, Since 1999-09-05, Caren (TAKAEDA Caren) / Revival Gate.