フォーラム - neorail.jp R16
発行:2017/2/15
更新:2017/12/25

[3418]

いま問う「mp3cat.pl」(2001年)のココロ


ノボル電機製作所「ネットワークカメラ用集音マイク MG-106」を愛でる(仮) / ほか
「mp3cat.pl」(2001年)より「sub mp3totalsize」のイメージです
同「sub mp3cat」のイメージです

(約11000字)

 [3354]の続きです。

[3354]
 > いつのまにか「クレジット」が消えているので『逆クレジット』([3202])してみますと、▼MP3ファイルのヘッダ部を削除しながら、▼圧縮のコーデックはまったくいじらず(MP3にかかるリーガルなソレ)、▼複数の「MP3音片!」を連結してブラウザに渡すCGIスクリプトをば書いたのは私です。(エヘンエヘン![3161]

 > このスクリプトは、とほほさん作「gifcat.pl」を参考にしたもので、なるほど、うまくGIFのソレ(ただしリーガルはホワイトに限る)を回避したものだと感心して、その部分のアイデアをお借りしたものです。当時、名前まで「ひそみ」にならって「mp3cat.pl」と呼んでいました。『ずいぶん昔』ですね。

 > いま端的に、ブラウザに依存しませんから、iOSでもAndroidでもどんとこい、といって、「超長期!」の安定供給もばっちりだと実感されましょう。

 こう、「mp3cat.pl」といって、ナニかね、そんなにスバラシイと自負するなら公開すればいいじゃないのん…といってですね(略)あまりにもあっけない短さなので、これまで「九段下の壁」…じゃなくて、『まあいいやの壁!』を超えられなかったのであります。

[2949]
 > ・日本クリエイタ「ドライアイ予防デスク エルゴデスク誕生物語」
 > > (解決策がみつかるまで、彼ら設計陣の努力と、時間の積み重ねが果てしもなく続けられた。と書きたかったが、あまりにも簡単だったので「プロジェクトX」風になりません。トホホ)

 いや〜、それほどでもあるです!(違)

■「mp3cat.pl」(2001年)より「sub mp3totalsize」のイメージです

sub mp3totalsize {
@files = @_;
$totalsize = 128;
for $file (@files) {
$fs = -s $file;
$totalsize += $fs - 128;
}
return($totalsize);
}


■同「sub mp3cat」のイメージです

sub mp3cat {
@files = @_;
$data = '';
foreach $file(@files) {
$size = -s $file;
open(IN, "$file");
binmode(IN);
sysread(IN, $buf, $size);
close(IN);
$data .= substr($buf,0,$size-128);
}
$data .= substr($buf,$size-128);
return("$data");
}


 「mp3cat.pl」は、この2つのルーチンだけで終わりです。なんと、たったこれだけなのです! 「mp3cat.pl」を呼び出して使う側のスクリプトでは、MP3ファイルのファイル名を配列(@files)に入れ、まず「mp3totalsize」を呼んで結合後のファイルサイズを知り、HTMLヘッダー「Content-type: audio/mp3」に続けて「Content-length: $totalsize」を出力します。(実用的には「Pragma: no-cache」も出力します@たぶん。)次に「binmode(STDOUT);」してから「print &mp3cat'mp3cat(@files);」するというスンポウでございます。ちなみにWindows上のWebサーバーでもオッケーでぇす!(メッソウではございますが、ローカルでの動作もできますよ、の意。)

※上掲の通り、結合後のMP3ファイルの全体をオンメモリで保持しますから、Webサーバー(のスレッド)がメモリ不足にならぬよう、よく計画なさってください。

 その昔、転送が中断したJPEGの画像がブロック状…じゃなくて、3MBくらいのファイルを「フロッピー(笑)」に入れるべく、バイナリファイルでも分割したり結合したり、あまつさえ好き勝手なアルゴリズムで圧縮を試みて、かえって容量が増えちゃったよ★…などと(略)。そういう遊びが先にあって、また、画像や音声などのファイル(近年ではPDFなど)をブラックボックスのままライブラリに投げれば再生できるというばかりでなく、ええぃ、自力でタイトルとかサイズとか見える方法はないの? …といって、なるほど、MP3だって切ったり貼ったりすればいいんだと気づくわけです。本当です。(※1997年の水準で金型のほうなど生温まってまいりました!=そういう遊びはネットにつながる前にやっていました、の意。うわぁ…古すぎ?)

・ダージリンが全力で説明する「寸法(2.5)」の語釈です
 https://kotobank.jp/word/%E5%AF%B8%E6%B3%95-544334

 > 大辞林 第三版の解説
 > (2)(内々の)段取り。筋書き。もくろみ。 「これで万事が丸くおさまるという−だ」
 > (3)(基準となるような)やり方。

 「およそこのような段取りにするのが標準的で、これに従いさえすれば丸くおさまるという−だ」といってですね(略)。

・ウィキペディア「AN HTTPD」
 https://ja.wikipedia.org/wiki/AN_HTTPD

 > 初版 1996年7月13日(20年前)

・現存する「お宅WWWサーバの入り口」「PPP逆流計画」の用例です(掲載日不明)
 http://www.kent-web.com/support/old/46/0068.html
 http://www.econavi.org/weblogue/back/25/backnumber/oneoki/07.htm

 > PPP 逆流リンク集
 > (http://village.infoweb.ne.jp/~scathome/bbb/bbblist.htm
 > お宅WWWサーバの入り口
 > (http://www.net-jp.com/nishidam/waiting/server/server.shtml

・Internet Archive「お宅WWWサーバの入り口」(1997年6月26日)
 http://web.archive.org/web/19970626055831/http://www.net-jp.com/nishidam/waiting/server/server.shtml

 ぬおー(略)このサイトでも、2000年くらいまではCGIのデバッグに使っていたことを申し添えます&懐かしい思い出だよ。(※演出は表現です。)

 もっとも、いまさらPerlではアレですから、PHPで書き直したいとも思えてきます。

・「PHPでバイナリプログラミング」(2013年10月?)
 http://pwiki.awm.jp/~yoya/?presen/PHP/binary

 > PHPでバイナリ処理の話をあまり聞かないので、あえてニッチな所を狙って発表させて頂きます。

 > 一昨年位まで、数十万ユーザ規模の携帯サイトでアプリ開発をしていました。その時に、PHPで主に動画や画像のフォーマットを弄るお仕事をしていました。フレームワークとかよく知りません。

 おおー、流山市西初石…じゃなくて、『流石』です! 画像だけならフレームワークもしくは便利なモジュールなどありそう(=どこのサーバーにも『ほぼ標準』で入っていそう)ですが、動画も(≒動画と画像を同じ頭で考えたい?)となりますと、直接、ファイルをいじったほうが早い(だって、そこにファイルがあるんですからっ!!)と了解されましょう。

 > 先頭の4文字を見るとファイルの種類が大体分かるようになっていて、その後ろにはよく分からないデータが続いてます。
 > 普通はここで読むのを諦めるのですが、このよく分からないデータを PHP で解釈して、欲しいデータを抜き出す方法について説明します。

 2001年の時点でのMP3では、幸いにも「ID3」と呼ばれるメタデータ部は固定長で、ファイルの先頭から決まった位置までを切り出しさえすればデータ部(ボディ)が取り出せたのでした。いまは、「ID3v2」が可変長になっているということです。

・ウィキペディア「ID3タグ」
 https://ja.wikipedia.org/wiki/ID3%E3%82%BF%E3%82%B0

 > ID3タグはMP3ファイルに元々組み込まれていた仕様ではなく、1996年に公開された「Studio3」というソフトウェアに組み込まれたのが始まりである。
 > ID3v1はファイルの末尾に、ID3v2はファイルの先頭に書かれるため、同時に1つのファイルに含めることができる。

 (MP3をデコードするという意味での)プレーヤーが無視できるよう、末尾にとってつけたのが「ID3」で、プレーヤーの対応も見ながら先頭に割り込ませたのが「ID3v2」だとわかります。

※1つのストリーム中で「ID3v2」が途中に何度も挟まってもいいのかもですが(再生の途中でタイトルやジャンルが変わる!⇒デジタル放送で静かな映画の途中にCMが挟まってもサラウンドスピーカーが追随できるソレみたいなの!)、「ID3v1」が来るとファイルの末尾だと認識するプレーヤーもあったやのように記憶しています。(あくまで記憶です。)

※逆にブラウザやWindows Media Playerなどでのストリーミング再生では「ID3v1」が来ただけでは末尾だと認識せず、(ありもしない)ストリームの続きを待ち続けてタイムアウトを待つ(⇒リピート再生できない)のを避けるため、HTTPヘッダーでファイルサイズを知らせておくことが必須との理解にございました。(あくまで当時の理解です。)

 > 現在、ID3v2には「ID3v2.2」「ID3v2.3」「ID3v2.4」の3つがある。
 > 前記仕様書によれば、メジャーバージョン間の下位互換性は保証されていない。そのため、例えば「ID3v2.3」をサポートするソフトウェアは「ID3v2.4」のタグ情報は読み込めない。この場合、サポートするメジャーバージョンより大きなバージョンのタグを読み込もうとする場合は、単純にタグ全体を読み飛ばすべきと記述されている。
 > 各バージョン間の違いは、「ID3v2.2」から「ID3v2.3」に変更されたとき、フレームIDが3桁から4桁に増えた。このため、メジャーバージョン2と3ではフレームIDに互換性がなくなった。
 > 最新バージョンとなる「ID3v2.4」は、一部の改訂箇所に不同意があったり、ソフト・ハードウェア市場がなかなか対応を行おうとしないため、いまだ普及に至っていない、と説明されている。

 こんなグダグダな仕様に誰が律儀に準拠しようとするものですか&するものですかッ。わかりますわかります! …なんだかなぁ。

・ウィキペディア「Windows Media Player」
 https://ja.wikipedia.org/wiki/Windows_Media_Player

 > Windows Media Player 6.4以前の初期のバージョンでは単にメディアファイルを再生する機能しか用意されていなかった。しかし、ブロードバンド環境の普及に伴い、Windows Media Player 7からブロードバンドコンテンツの再生やジュークボックスによる一元管理機能、音楽CDからの音楽取り込み機能などが搭載された。

 > 2004年、欧州委員会によってWindows XPなどのOSにWindows Media Playerがバンドルされていることが競争法に違反しているという判断がなされ、マイクロソフトは要求を受けてWindows XP Home Edition/ProfessionalからWindows Media Playerが除かれたHome Edition N及びProfessional Nを発売した。

 > Windows Media Player 6.4ではCOM (Component Object Model) やActiveXのリファレンス実装としての側面が強く、Visual Basic等の開発言語から容易に部品として利用できるようになったという点が主たる変更点であり、一般利用者向けの機能面ではあまり多くの変更点を見受けられないものとなっている。Visual Basic等から容易に利用できるようになったため、雑誌等の付録CD-ROMにおいて独自のメニュープログラムを用いて収録している動画等の再生や、ゲームソフトの動画部分の再生などに広く採用されたため、これらの媒体を利用するにあたり、まず初めに当時最新であったWindows Media Player 6.4のインストールを確認する事が一般化し、爆発的に普及、最新版への更新を施すこととなった。

 そういうこともありましたですなぁ@遠い目でWindows 2000のほうなど…ゲフンゲフン。デジタルサイネージが…あっ。Windows 2000と描かれた画面のほうなど…ぎゃふん。

・デイリーポータルZ「街角エラー画面コレクション第4回 あの時計もウィンドウズ」(2014年8月20日)
 http://portal.nifty.com/kiji/140820164952_1.htm
 http://portal.nifty.com/2014/08/24/b/img/pc/02.jpg
 http://portal.nifty.com/kiji/140724164690_1.htm
 http://portal.nifty.com/2014/07/27/a/img/pc/3.jpg

 とりあえずWindows 2000なら『49.7日!』を越えて起動していてもダイジョーブだし、ビデオをループ再生できますし、D-Subから出てくる信号って、アナログですし…ねぇ。これぞ『LEDテレビ!』([3175])ですね、わかります! デイリーポータルZの記事内でいう「拡大系」って、いえいえいえ、「拡大」というより、アナログ信号をひん曲げたり適当なところだけつまんだりというのを、PCの外側でアナログにやっているんでは、ないですかねぇ。「拡大」というのとは、ちょっと感覚が違うと思うんだなこれが。(※個人の感想です。)

※いまでも497日間つけっぱなしにしたらおかしくなる携帯電話(ただしガラケーもしくはWindows Phoneに限る)など、あったりして。

・(個人の日記)「CodecをつかったMP3のデコード・再生編−1(ファイルからの必要なデータの取得)」(2003年4月2日)
 http://kone.vis.ne.jp/diary/diaryb06.html#030402

 > ID3v1はMP3ファイルの最後尾128byteとサイズが決まっています。そのため、後ろから128byteの位置のデータが'TAG'であればID3v1が存在するとして128byte削って終了です。

 > ID3v2はファイルの先頭にあるため、ファイルの先頭3byteが'ID3'であればID3v2タグがあると考えられます。ID3v2にはバージョンが存在し、これを書いてる時点ではv2.4.0まで来ているようです。

・(個人のページ)「MP3ファイルのタグについて (+MP4)」(2015年1月18日)
 http://eleken.y-lab.org/report/other/mp3tags.shtml

 > 自作機器で MP3 形式のファイルを扱う機会も多く存在します。実用的な機器のファームウェアを製作する上で、メタ情報を記述した id3 タグ等のタグ情報を解析することは必要不可欠です。

 …なんだかとってもゾッとするのです! なんといいましょうか、こう、その、実にめんどい(※)ので▼「ID3v1」にしか対応しないよ(あまつさえ「ID3v1」タグが必ずついていると仮定するよ)、▼ビットレートなどはすべて揃えておいてね、などとですね(略)どんなファイルが入ってくるかわからないアプリ(ひいては『自作機器』!)をつくるのと、決めた仕様だけ実現すればいいのとで雲泥の差がある(後者には不便さもあるが実装はとても楽!)ことがわかります。

※「ID3v2」をきちんとパースしないとこれを除去できない上(≒「ID3v2」を除去しなくても「MPEGフレーム」を結合できるのかは未確認です)、そこまでして「使わずに除去するだけ!」というところがモーレツにめんどいのですよ。

※「ID3v1」も含めてまったく付加しないという出力のできるエンコーダーがあるのなら、実務的にはそういうエンコーダーを『ご指名で選択!』するというチョイスのほうをだなぁ(略)。さすれば、もはやDOSのバッチファイル…いえ、シェルスクリプトで単純に連結するだけでもオッケーだと…本当でしょうか。プレーヤーも『ご指名』もしくは『自作機器』であればともかく、ID3(少なくとも「v1」)が付いていないと(長さがゼロだとかゼロで除算したなどといって)『落ちる』ようなプレーヤーもあるかもですよ。もっと本当でしょうか。

 そして、ファイル名が8文字まで!([3136])という制約があるならともかく、そうでなければ情報はファイル名に含めるか、別口でデータベース(ただしCSVでもよいものとする!)を持つかすればいいのであってですね(さらに略)。

[3136]
 > > 「今回から、ファイル名には256文字が使用できるようになりました」との声には笑いが起きた。

 オオーッ!

 そして、どんなOSにもブラウザが標準でついてきて、どんなブラウザでも標準でMP3くらいは再生できるよといって、…スバラシイ! 2001年の段階では「ダウンロードして開く」といって「MP3プレーヤー」が起動するという格好でございました。…2001年って、大昔ですねぇ。

※なお、複数のMP3を、なぜ「順番に再生」でなく「結合」するのかは自明ではございますが、こう、再生が途切れないようにバッファーいただくなどというレイヤーの低いことは、わたしたち(エンドユーザーコンピューティングとも呼ばれる遊びをたしなむエンドユーザー!)が心配せずとも、ブラウザが既にうまく実装してくれているんですよぉ。やだなぁ。

・「エンドユーザーコンピューティング」
 http://p-www.iwate-pu.ac.jp/~shotaka/oa.new/sec10.html

・「小さな工夫で大きく変わるヘルプデスク業務」(2010年1月21日)
 http://www.itmedia.co.jp/im/articles/1001/21/news125.html

 > 一般に、利用者は「PCのことなら何でも質問してよい」と考えている。
 > 的確な回答をしても利用者に感謝されることはほとんどなく、問題が解決しない場合は、感情的に不満をぶつけられることさえある。

 > C社の社員数は2000人規模で、1日当たりの問い合わせは平均5件前後。問い合わせを受け付けてから回答するまでに平均半日を要し、8名全員が掛かり切りになる日もあるほどリソースを圧迫していたのである。

 > 質問を受けたときには、直接回答するのではなく、「FAQのどこを参照してください」といった表現で利用を促した。

 > 情報システム部門が関与していないEUCツールや、利用者が無断でインストールしたソフトの障害については、そもそも情報システム部門が管理していないため回答できない。従って、あれこれ調べる前に「対応できない」旨を回答するようにした。

 > 利用者は小回りのきくEUC的なやり方を常に求めている。

※小町的に「SNS疲れ!」しちゃうひと低〜い…じゃなくて、このフォーラム、たいていのことは「○○を参照。」と書けるだけの蓄積がやっと出てきたかなぁとのかすかな感触にございます。…ぜんぜんちっともではあるのですけれど。

・小学館「SNS疲れ」日本大百科全書(ニッポニカ)の解説です
 https://kotobank.jp/word/SNS%E7%96%B2%E3%82%8C-674492


★ノボル電機製作所「ネットワークカメラ用集音マイク MG-106」を愛でる(仮) / ほか


 実際の機器でも、バッファーの制御を自前でするよりは、結合したのを標準のソレに渡して楽をするというのが「正攻法」というものではないかなぁ。うん。(※表現は演出です。)

・三共電子「1000CH-バイナリ制御+4CH 優先放送用接点端子 デジタルアナウンスマシン WRX-8F3-K 取扱説明書 RoHS対応」
 http://www.voicenavi.co.jp/wp-content/uploads/UM_WRX8F3K_A090407.pdf

 > 本製品は電源ON 時、CF カードの認識並びにデータ読込み等のため約3 秒間の起動時間を必要とします。

 ほぉお。

 > 音源にWAVEファイル採用
 > 高音質サンプリング 44.1/2.05KHz 16/8Bit Mono
 > フォトカプラ入出力<FA仕様>
 > スタジオ録音・WAVE ファイル作成サービス

 おおー。

 > サポートソフト VoiceNavi Editor 上で音声データ(WAVEファイル)を登録後、接点端子(アドレス)に登録してWRXシリーズ用カードデータを作成。市販USBカードアダプタ経由でCFカードにコピー。
 > プログラム登録 1 接点(アドレス)組立再生 8 データmax. リピート回数 5 回max.

 なるほどなるほど。(棒読み)…MP3に対応するより大容量のカードを使うほうが安いということですね、わかります! 最近はHDDレコーダーの背面にJavaのロゴがついていたりしてぎょっとします。Javaのライセンス料を払ってでも、Javaでプログラムするほうが安上がりだなんて、本当なんでしょうか。…うーん。

※「中央音源方式」([2942])も参照の上、ネットワーク越し(LANを含む)の場合は、やっぱりMP3ですかねぇ。[3361]も参照。

 > WRXシリーズが認識できるCFカードのフォーマットはFAT(別名FAT16)です。

 > PAアンプを購入する場合、AV機器販売・工事業者やPAメーカー(代理店)にご相談下さい。
 > パナソニック
 > TOA(トーア)
 > 日本ビクター
 > ユニペックス
 > ノボル電機
 > 他

 > なお、屋外配線の場合、雷等で帯電し、破損する可能性が大きくなります。
 > 数m 以上延長する場合、ノイズが多い場所ではラインコンバータ(不平衡-平衡)を使用してアンプと接続して下さい。
 > ノイズの少ない、安定した電源をご使用下さい
 > 電圧変動が激しい電源や、ノイズ・サージを多く含む電源は使用しないで下さい。

 デスヨネ〜([3196])。

・(参考)ノボル電機製作所「構内放送システム」「小型船舶用第四種汽笛」「小型船舶用第五種汽笛」「ネットワークカメラ用集音マイク MG-106」ほか
 http://www.noborudenki.co.jp/products-info/paging/
 http://www.noborudenki.co.jp/products-info/ship/

 なんと、この形でマイクなんですか&マイクだったんですかっ(いや〜、どっちにもなるというのは知っていますけれどもね[3298])。構内で大きな音がしたり人が大きな声のほうなど…すわ、「1大事」にごじゃる、といってですね(略)とっても大事な機器だと思いました&草々。

・パナソニック「全方位ネットワークマイク」(198,000円)
 http://sol.panasonic.biz/security/camera/ipro_hd/smr10/

 > 複数のマイクロホンを搭載し、1台で360°全方位から目的方向の音を選択して聞くことができます。
 > エレクトレットコンデンサーマイク(16素子)
 > 音声圧縮方式 16チャンネル独自コーデック 約2Mbps

 ぬおー…。さらうどーん! 人が選択して聞くなんて『具の骨頂!』ですぞ&マッシーンにリアルタイムでやらせたまへよ([3166])…ゲフンゲフン。

・「生産中止のプラズマディスプレイがオペレーションパネルに使用されている製造装置では、プラズマディスプレイが不良になると製造装置は使えません。そのような時、不良ディスプレイの置換えに市販の液晶モニターを使うための装置がデータ・テクノのスキャンコンバータです。」の一例です
 http://www.datatecno.co.jp/products/sconverter/

 現に所有している(=リースなどではない)装置を何としても使わなければいけないとあらば、まあ、こういうことも…ゲフンゲフン。


この記事のURL https://neorail.jp/forum/3418/


この記事を参照している記事


[3438]

いま問う「情報ステーション」「図書コーナー」のココロ

2017/3/30

[3509]

【鉄算用】「市原緑地運動公園」を「千葉県環境研究センター」で読み解く(談)【新茂原】

2017/7/12

[3522]

【自由研究】モニターとプリンターを先に考えながら画策する「中古デスクトップPC」の安定的な調達(談)

2017/8/6

[3657]

Re:[3656] 「富士山の使い方」 / ほか

2018/6/30

[3672]

【葛西20乙】こちら葛飾駅前(談)【西葛飾駅北口駐輪場あり】

2018/8/31

[3707]

研究ホワイトボックス(35) 複雑なデータと「対話」するには〜郵便番号データを例に(R編)

2019/5/24

[3716]

【A9・Exp.】「乗客のアルゴリズム」一計

2019/6/9

[4008]

「A列車で行こう9 駅名 つけ方」 / 「A列車で行こう9 楽しみ方」

2020/4/1

[4030]

PPPガッサンエル’72

2020/4/1

[4163]

「拙作」とは何か(談)

2020/8/1

[4181]

試しに「ATOSの放送パーツ」を斬ってみる(再)

2020/8/25

[4630]

ふれねる「自由研究 数学」の算(COM)

2021/8/25

[4873]

アラマタの本懐で叡智と冒険を(前編)

2022/9/1


関連する記事


[3649]

【お知らせ】ストリートビューの表示を休止します tht - 2018/5/31


[3944]

続々・「A9V6待望論」 tht - 2020/2/29


[3978]

【高火力みずでっぽう】「ススキノ理論」で「フェアユース」「JR会社法」を読み解く(談)【A列車で行こう9あり】 tht - 2020/2/29


[4382]

【Switch】「A列車で行こう はじまる観光計画」の夜明け(ド) tht - 2021/1/1


[4353]

安易な難易度。(談) tht - 2020/12/16


[3624]

Re:[3623] ATOSの「接近」メロディーはなぜ1種類なのか tht - 2018/3/24


[3676]

【正宗の名刀で速射砲と立合をするような奇観を呈出】発生学から出立するディープラーニング(仮)【社会調査工房オンラインあり】 tht - 2018/9/13


[4516]

乗りものニュース「運搬ルート」を斬る(談) tht - 2021/4/1






neorail.jp/は、個人が運営する非営利のウェブサイトです。広告ではありません。 All Rights Reserved. ©1999-2023, tht.