表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
46/61

4. 動画ではシーク機能がないと不便だ

映画を流してて気が付いた。早送りできないと使いづらい。

早送りするには、映像と音声を任意の箇所に進める機能が必要。


映像は tar でまとめてるだけなので、頭から全部スキャンしないとだめ。(JPEGデータ本体はスキップできるけど、ヘッダを追うだけでもファイルアクセス処理が重そうだ)

音声はMPEGフレームを見ていかないとダメなので、かなり重そう。ただCBR(固定ビットレート)なら、サイズが固定のはずなので、一気にジャンプできそう。


検索すると、フレームサイズは特定の計算式で出せるようだ。なるほど、MP3プレイヤーを作ってるとき、何種類かのパターンがあった記憶と一致する。


では検証しようと、いろんな種類のMP3ファイルを作ってバイナリエディタで調べたら、22kHzのサンプリングレートでは計算が合わない。(具体的にはフレームサイズが44kHzの時の半分になってる)

ファイルサイズを見ていたら、ステレオとモノラルではファイルサイズが同じだとか、サンプリングレートを落としてもファイルサイズが大きい場合があるのにも気が付いた。

なんじゃこりゃ??


仕方がないのでデコーダのソースを見はじめて気が付いたこと。

MPEG-1の他にMPEG-2 や MPEG-2.5 ってのがある。確かにヘッダの解説の中にそんなのがあったけど…


調べた結果が以下。

・MP3のビットレートとはデータ量を規定する。モノラル/ステレオを変更してもデータ量は同じ。

ジョイントステレオという、左右の差分を使うモードを想定しているようだ。

(つまりモノラルの方が音が良いのか?)


・MP3とは、MPEG-1 layer3 のことだが、サンプリングレートが低いとMPEG-2やMPEG-2.5になる。

MPEG-1 (44.1kHz, 48kHz, 32kHz)が標準

サンプリング周波数がMPEG-1の半分だとMPEG-2 (22.05kHz, 24kHz, 16kHz)

更に低くなると、MPEG-2.5 (11kHz, 12kHz, 8kHz)


・ビットレートとサンプリングレートの組み合わせ(必要以上にビットレートが高い)の場合は、layer3 じゃなくて layer 1 になって計算式が変わる。

(もしかしたら音質も悪いかも)


つまりはむやみにビットレートやサンプリングレートを変えてもいい結果がでないという感じ。

CPU負荷を考えてサンプリングレートは22kHz (または元データの 1/2 )

ビットレートは 80k or 96k (通常の MP3 の 160kbps, 192kbps相当)

が妥当かな。


動画再生用ならこのビットレートで決め打ちでいいんだが、どうせならMP3プレイヤーにもシークを追加すしたいので、ちゃんとした方がいいだろう。

ということで、MP3デコーダのドライバにAPIを追加して、MPEG フレームサイズを取得して、それをシーク用に使うことにした。


なおVBRの場合は、フレームサイズが変化して面倒なので先送り。(XINGというフレームにファイル全体の情報が入っているらしいが面倒)


まぁこんな構造でファイルができているなら、DVDやBDのディスクの早送りが2倍、4倍、8倍みたいになってるのもあたりまえか。

ファイルを頭から検索して、ヘッダを読んで先に飛んでを繰り返すだけでいいんだし。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ