1 :
オッグボルビス :
02/09/22 00:53 そろそろ需要がのびてきた(?)Ogg Vorbisのプログラムを語ろう。 まだまだ日本語で勉強できるホームページも少ない中でここから広めましょう。
|д゚)ン
関連リンク張ってちょ
4 :
オッグボルビス :02/09/22 01:18
1年くらい前にOgg virbisで一人ハァハァしてたなんて言えないよなぁ。
6 :
デフォルトの名無しさん :02/09/22 01:26
オレもとりあえず再生してみようと思ったけど なにから初めて良いのかまったくわからんかった。 SDKのダウンロードまではできたんだけど・・・ 次はどうする?
6ではないけど 俺もあの英語マニュアルわかりづらいすね マニュアルのリンクもところどころ抜けてるし… ソースとサンプル見比べてハァハァするしかないですかね
9 :
デフォルトの名無しさん :02/09/22 11:14
ov_read(だっけ?)でOggDropで生成したファイル読もうと思ったら Oggファイルのヘッダ情報が違う、みたいなエラーが返ってきた。 なぜ?
日本語の勉強ページ誰かしらない?
11 :
デフォルトの名無しさん :02/09/22 11:23
利点、欠点、ライセンスは?
ライセンスはフリー パテントもフリー もちろんMP3のような特許料もいらない。今後も。 WMAのような面倒な契約もいらない。 そこが利点。 欠点はまだ一般普及率が少ないことかな。 だからこそプログラム技術の普及を!
13 :
デフォルトの名無しさん :02/09/22 11:46
利点://フリー、特許なし、オープンソース 欠点:// うんこ。対応ソフトすくない ライセンス:// GPL?
14 :
デフォルトの名無しさん :02/09/22 11:52
対応ソフト:winmx
フォーマット自体のライセンスフリー ライブラリはBSDライセンス 基本的に著作表示するだけでいい
16 :
デフォルトの名無しさん :02/09/22 12:38
>>15 著作表示って必要なんだっけ?
そういう記述は見当たらなかったんだけど。
公開されているライブラリ組み込むときの話
18 :
デフォルトの名無しさん :02/09/22 13:43
で、なんて発音するの?
オッグ ボービス オージージー ボービス オッグ ボルビス
オージービーフ
21 :
デフォルトの名無しさん :02/09/22 19:31
おれもogg気になってた。 しかし、このままだと雑談のみで終わってしまわない? 誰か救世主はいないのか?
22 :
デフォルトの名無しさん :02/09/22 19:37
てか、ム板的になにをするつもりなのか? エンコーダもプレイヤーも既にオープンなのがあるし。 そういえば、かまいたちの夜2でもOgg Vorbis使ってたな。
まだプログラムした人すくないのでは?
24 :
デフォルトの名無しさん :02/09/22 19:39
オッジジ ヴァーディス
>>23 プログラムっていっても、単にライブラリ使うだけになると思うしなぁ。
現状のライブラリが使えない環境用のエンコーダ/デコーダ作りっての
はあるかも知れないけど。
再生したいんだけど、どれをダウンロードすればいいんだ?
27 :
デフォルトの名無しさん :02/09/22 20:02
>>25 それでもライセンスとかなんにも考えずにかってに使っていいの?
それならそれを使ってプログラムすればかんたんでいいね。
oggはエロゲ屋さんが良く使ってるらしい
エロゲってPNG&oggがベターだよね、素人目から見て
Cygwin[gcc3.2]でoggライブラリのコンパイルは問題ないようです
かまいたちの夜2の取り説の巻末にoggのライセンス文が長々と書いてあったな。
やねうらお氏も絶賛
UnrealTournament2003も使ってるねぇ
34 :
デフォルトの名無しさん :02/09/22 21:16
>>32 氏のプログラム本みたけど、結局Oggの再生できなかったぞ。
っていうか、結局どうやるのかわからんかったオレはアフォですか?
35 :
デフォルトの名無しさん :02/09/22 21:25
>>31 フリーでもやっぱりそういう記述はひつようなん?
使用するのになんか面倒なことあるのかな。
Ogg Vorbisがパテントフリーというのは作った人たちの主張だが どこかの誰かの特許に抵触していないという保証は無い さらに国ごとに特許制度が異なるから製作者の主張はどこまで有効か不明 というのは本当ですか?
>>37 過去にも事例はイパーイある。
MP3も然り、GIFも然り、JPEG、LHA、ZIPも危うい(ウチの会社じゃぁM$純正CAB以外で圧縮すなって通達が来てるし)
嫌な世の中だねぇ
39 :
デフォルトの名無しさん :02/09/22 22:37
まったくだ。企業側から見るとそのへんが面倒だし恐れになる。 だからこそこのVorbisなのだが。
40 :
デフォルトの名無しさん :02/09/22 23:11
>>35 >フリーでもやっぱりそういう記述はひつようなん?
フリーかどうかって記述BSDにありましたっけ?
修正BSDじゃないみたいだしauthorは表示しろゴラァってことでは
41 :
デフォルトの名無しさん :02/09/22 23:25
>>38 正直普及して2年経過したら特許の対象から除外してほすぃ
UT2003のコピーライト表記 ReadMe-Demo.int.txt > ======================================================================== > 9 Copyright Notice > ======================================================================== > > Ogg Vorbis Copyright ゥ 2001, Xiphophorus > ま、実質こんだけでいい。
44 :
デフォルトの名無しさん :02/09/23 22:37
>libOgg及びlibVorbisのソースコードは以下の場所から取得できます 再生にはこれだけ用意すればOK?
お前らまたライセンスか、おめでてーな。
>>45 同意
>>45 ジサクジエン(・∀・)カッコイイ!!
>>44 どゆこと?
コピーライトの話?ライブラリの話?
48 :
デフォルトの名無しさん :02/09/24 10:53
うち某ゲーム作ってるんですがoggを即採用しました。 次回作からoggで行きます。 うちの所はC++とDelphiでやってるんですがDelphiだけおいてけぼり、 まあそのうち出来るだろうけどね。
>>48 C++は直接組み込んでるの?
DLLを呼ぶのは嫌って事?
DLLだとそんなに違う?
じゃDelphiに移植してみようかな
まてよ 全部のデコーダソースを一つに纏めて BCBでobjを吐かせれば Delphiから直接呼べるから そっちがいいかな?
51 :
デフォルトの名無しさん :02/09/24 11:04
>>47 ダウンロ―ドするライブラリのことではないかと思われ。
>48 Oggのプログラムは難しいですか? 使い勝手はいかがでしょう。 って、もしかしたらoggファイルをデコードさえすれば あとはPCMデータになって、DirectSoundとかで操作できる? そしたら使い勝手は同じかな。 そしてデコードさえできればいいからプログラムも面倒ではないか?
53 :
デフォルトの名無しさん :02/09/24 11:53
>>52 DirectSoundの場合簡単でした。
ov_readでしたっけ?(曖昧)
思いっきりオブジェクト指向なやりかたです。
ちなみにDirectSoundでやってます。
54 :
デフォルトの名無しさん :02/09/24 12:42
DirectSoundならこれまで作ったプログラムいじればいいので楽かも。 ファイル読みこむ部分だけOgg仕様にすればいいのですな? ということは、ov_playなんてのは必要ないんですね。
>>50 今、おれそれやってるとこ。
手持ちのBCBが古い(初代)のでBCCでobj作って、組み込むところ。
俺はDelphi+DLLでやってるけどなー。特に問題ないが。 objだとなんか利点あるの?
>>56 他人のライブラリに頼っていることを知られたくないんだろ
>56 DLLがちらばるのがどうも気に入らない。 たとえば、同じ方法でogg以外でも他のライブラリを使うと、 その分どんどんDLLが増えるわけだ。 ま、人によってはくだらない理由だな。 >57 コピーライト表記なんかをかくとわかるから、それはないな
59 :
デフォルトの名無しさん :02/09/25 10:03
たしかにDLLって便利なんだろうけど、ソフトは実行ファイルオンリーで 配布したい。exe以外にもDLLが必要とか面倒なのはいや。 OggもDLLなしでできますか? あ、それとOggの再生環境ってどのくらいスペック必要ですか? DirectX入ってないとダメとか、なんかのドライバ必要になるとかありますか。
>>58 たとえばmp3ならlameを組み込めばいいし、
ソースが配布されてるなら好きなように出来るが
>>59 DLLなし可能。
mp3よりちょっと負荷が高いみたい。
他に依存するものはないはず。再生時にDirectSound使うとかは組み込む人次第。
>>60 ん?だからソース配布されてるから、好きにするよ。
DLLでいいじゃんと言われたからレスしだけ。
SDKダウンロードしてきたのですが、ov_read使う為には どうやってDLL組み込んだら良いのですか? DLLなしにするにはogg_static.libっていうスタティックライブラリを つかうのかなぁとは思うのですが・・ 手も足も出なくなったので誰か助言を頂けませんでしょうか。
>>67 コンパイラは何を使ってるのかは知らないが
DLL版のインポートライブラリ、「ogg.lib」をリンクすれば良いのではないかい?
65 :
デフォルトの名無しさん :02/09/26 02:33
あぁ、俺も今OGG使おうと試行錯誤中
たしかに日本語説明ページ無いし
英語が出来ない俺は悪戦苦闘中
てか、サンプルソースで使ってる関数がリファレンスに載って無いぞコラッ
>>62 OV_シリーズ使うって事は3個のlib組み込まないと駄目
ogg_static.lib
vorbisenc_static.lib
vorbisfile_static.lib
以上は組込たいときね
DLLを利用する時は、static無しバージョンをリンクすると
OVってのは簡単なんだけど
MCIでWAV鳴らすみたいにファイル指定しか出来ないからねぇ
俺の用途はゲームだから、使えねぇ
ファイルパックして自前でシークして使いたいしね
>OVってのは簡単なんだけど >MCIでWAV鳴らすみたいにファイル指定しか出来ないからねぇ ov_open_callbacks
それよりか、負荷がMP3よか重いのが欠点かも ゲームだと音楽音声効果音とか数個同時にデコードしなきゃだしさ 本心で言えば可変ビット長やら、浮動小数点余り使いたくないよなぁ でもADPCM程度な圧縮率は悲しいし 誰か最適化とかしてます? 浮動小数点が多いし、INTELコンパイラが良いと思うんだけど どうなんでしょ?
>>66 うわっ、さんきゅ
調べてみます
泣きたくなってきた
単純な浮動小数点演算速度ならAthlonじゃないか? 負荷が気になるならマルチプロセッサ専用にして、 一つをデコード専門に割り当てるとか。
連書きスマン
>>66 ちょっと聞きたいんだけど
ファイルじゃなくて、メモリポインタ渡してデコードしたいんだけど
ov_open_callbacks
これでも出来るって事なんだよね?
>>69 いや、ゲーム用なので
MMX無しクラシックペンタとかで動作させなきゃ駄目なんで
AthlonなりDUALマシンなら最適化しなくても十分速いと思うしね
ClassicPentiumて… デコードだけで大半のCPUリソース持ってかれるぞ。 シーンの最初ですべてデコードしておくしか無いだろ
クラシックペンティアムならmp3すらキビシイよ・・・・・。 単体で鳴らすと他作業何もできなかった覚えがある
>>67 fp 使いたくないのなら Tremor 使えば? もっとも Classic Pentium とかいう
動作環境はいまや論外だろ。
ゲームでもそろそろ下限スペックを P-III 程度に引き上げてもよいかと。 ウチはOgg-vorbis使う上で割り切ってますが… エロゲメーカーでも最近は下限スペックをじわじわと上げてきてますし。 クラシックでも動作させたいならVisualArtsのエンジンみたいにADPCM系で かなり音質落ちるけどすごい軽い圧縮エンジンを採用するしかないのでは…
つか、うちのClassicPentiumは生wavのストリーミング再生がすでに追いつかない。
それはプログラムがヘボすぎるだけだと思われ
>ov_open_callbacks >これでも出来るって事なんだよね? どうやるかは自分で考えてね。まあメモリからの入力だったら decoder_exampleを参考にしてvorbisfile使わない方がよさそうだが
>>76 昔そういうゲームが多かったんだよ。(しみじみ
そのうちOggVorbisも速くなるんじゃないだろうか。 上みたいにSSE化してくれるところもあるわけだし。 とりあえずパテントフリーってだけでもでかい。
今は最適化より音質向上に力を入れて欲しい つか、音作りすぎ
Delphi + objでやろう言っていたものです。 参照されているRTL周りが解決できまず、リタイアです。 _mallocとか_memcpyくらいならいいのですが、もう検索しても出てこないような関数はどうしようもありません 。 Delphiで.libが扱えればなあ。 そんなわけで、おとなしくDLLでやります。
c0w32.objとかも混ぜれば?
>>83 駄目ですた。c0w32.objら辺はスタートアップモジュールですよね。
RTL類は.libの模様。
DelphiさっさとBCBとくっついてほすぃ。
85 :
デフォルトの名無しさん :02/09/26 22:59
ov_readを使う為にライブラリをVC6+MFCで StdAfx.hに #pragma comment(lib,ogg_static.lib) #pragma comment(lib,vorbisenc_static.lib) #pragma comment(lib,vorbisfile_static.lib) の3行を付けてみましたが、 OggVorbis_Fileが定義されていませんとエラーが帰ってきてしまいました。 ヘボな質問ですいませんが、あと何を付け足したら良いのか教えてください。 そもそもlibの組み込み方間違えてますか?
>>85 #include <vorbisfile.h>
とか付けてみれば?
ありがとうございます。ビルドできますた。 で、早速ov_readつかってみたところ、OV_EBADHERDERという エラー値が返ってきました。 oggファイルはCD-DA X-Tractorというツールで作成したものです。 何か特別な制限とか形式とかあるのですか?
OV_EBADHERDER バッドヘッダ? oggと思いきやMP3とかWMAになってるとかいうオチは無しよ。
89 :
デフォルトの名無しさん :02/09/26 23:36
KdMedia Playerという再生ツールではちゃんと動きました。 なので、そのオチはないと思うのですが・・・
RIFFの中にでもOGGをいれてあるんじゃないの? MSACMで読めるやつはそういじってあるけど。 正しいヘッダはOggSから始まる。
えっと、詳しくは分からないのですけど、ためしにVC6で開いてみたら OggSという文字が最初に入っていました。 これじゃだめですか?
ov_open ( f_in, &vf, NULL, 0 ) コレはチェックしてますか?
93 :
デフォルトの名無しさん :02/09/27 00:29
FILE *file file = fopen( filename, "r" ); OggVorbis_File ogg; ZeroMemory( &ogg, sizeof(ogg) ); int i = ov_open( file, &ogg, NULL, 0 ); if( i==OV_EBADHEADR ){ err = "なんでここにくるの?"; } こんな感じでプログラムしています。
とりあえずバイナリでひらいてください
file = fopen( filename, "rb" );
すげー! 解決しました。ありがとうございます! って、これは初歩的ですか?(鬱
>93 ぶっちゃけ初歩的ですがよくうっかりやる間違いだから DOS系は改行コード変換が入るから必ずバイナリで開かないと アレなんですよね… 直ってよかったです
98 :
デフォルトの名無しさん :02/09/27 09:50
DirectSoundで再生させる為にOggからPCMデータをバッファに コピーしようと思ったのですが、デコードされる分のバッファサイズは どうやって調べたらよいのですか? ov_infoとかで調べられるとかありますか。
double time = ov_time_total( &ogg, -1 ); でファイルの再生時間を取得して、 size = time * 44100 * 2 * 2 とかでバッファサイズを求めてバッファを確保してデコード。 これでOKですか?
それでもいいけど、バッファが巨大にならない?
ストリーミングしる。 ストリーミングはOggに限らずWAVEでも基本的な技術だぞ。
あ。ちょっと関係ないが、 ov_time_totalじゃなくて、ov_pcm_totalっていうのがあったはず。
>>102 それを使えばバッファサイズ直で分かるやつですか?
そっか、いちいち計算しなくていいんだ。
というよりも。
すとりーみんぐか。そうだよなぁ。いくら圧縮したってデコードして
使ったら同じ位になるもんなぁ。
それならもしかして、デコード時間が余計にかかるから、WAVEを普通に
読みこませたほうが早い?
>>103 確かトータルサンプリング個数を取得するんじゃなかったかな?
だからチャンネル数と各サンプルのバイト数をかけるんだったと思う
ステレオ16ビットなら4倍。間違ってたらごめん。記憶だけで書いてるので
デコード時間は確かにかかるが、メモリイメージを直接持つよりマシだと思うんだが。
BGMのRAWデータを全部持ってたらバカみたいにメモリ消費するぞ。
それに元々ov_readは少しずつ読み込めるように設計されている。
必要なだけ少しずつ読み込めば1フレームでいきなり固まるとかいうこともあるまい。
105 :
デフォルトの名無しさん :02/09/28 03:41
Oggをストリーミングで再生するには実質どのくらいのスペック必要 なんだろう。ペンティアム100Mhzくらいでも無事再生できるだろうか。
>>105 無理だと思う。
昔ClassicPentiumの100MHzだったけどMP3すらまともに再生できなかったよ。
しかし、いまどきPentium100ってのはないだろ、さすがに。
今なら最低動作環境Celeron400くらいで考えていいんじゃないかなぁ
Oggだけで200MHz分くらいほしい。 100MHzはMP3でもきついわ。
ver1.0のvorbisfile.dllがほかしい。 ov_open_callbacksで止まりやがる。 仕方ないのでRC3のDLL使ってるけど、同じ人いる?
あ、気のせいかも。 call back用の(*tell_func)の返却値ミスってた……。
遅いマシンではあらかじめデコードしておけばいいのでは
デコードしておくのって、 マシンが高速なら再生開始が遅くなるしディスクアクセスもバカにならないよな。
ユーザーに選ばせるのがいいと思った
>>79 gogoとかlameのソースも読めばいいじゃん。馬鹿だなぁ。
定期あげ >SSE インラインアセンブラか組み込み関数かアセンブラかどれでもいいので eax=1でcpuidを読んでecxの(1<<25)ビット(だったような)を確認したらよかったと cpuidとSSEでぐぐれば沢山でてくるはず… ;こんな感じ mov eax,1 cpuid ; cpuid が使えるかチェック必要(intelのサイトに詳細あり) mov eax,ecx shr eax,25 and eax,1 ret
ようやくDelphiで鳴らせたよ。 DLLうぜー。3つも置かないといけないのか。 VC++辺りでソースからコンパイルすれば、1にまとめられる?
アスロンがSSE対応してるかしてないか分からないような話があったような
117 :
デフォルトの名無しさん :02/09/29 11:16
Oggって、CDのクォリティーじゃないとエンコードできないんだっけ?
119 :
デフォルトの名無しさん :02/09/29 15:37
OggのスタティックDLLをプログラムに組み込んだら defaultlib "〜.lib"は他のライブラリの使用と競合してます というwarningがでてしまったのですが、意味分からないので ほっとこうと思ったのですが、まずいことになりますか?
なります
>>120 まじですか!
エラーメッセージには
/NODEFAULTLIB:libraryを使用してください
とでてるのですが、何をどうしたらよいのか見当もつきません。
情報少なくてソースコードないとどうすることもできないかもしれませんが、
できたら助言を頂きたいです。
すみません、あの直後googleで検索して大量に資料見つけました。 114の方法だとSSE未対応のOS側でも「使用可」と なってしまうそうなので、簡単なのはWin32構造化例外で xorpsとかの命令で無効命令フォールトが出るかどうかを調べるそうです。 いちおうその方法でできました。報告遅れてスマンこ
SSEレジスタxmm0〜xmm7をコンテキストスイッチング時に退避できない OSだと複数スレッド/プロセスでSSEを使ったときに悲惨なことになる 旧来との互換性をとるためにSSEに対応しているOS側がSSEを有効にする操作 をするまではSSE命令は使えない
125 :
デフォルトの名無しさん :02/09/29 19:57
ov_openを使用してファイルを読みむまえに普通にファイルを開くけど、 後々のファイル操作はOggVorbis_File構造体でやるから最初に開いた ファイルポインタは記録しておかなくてもよいのですか?
>>121 そりゃOggに限らん話だ。Oggライブラリがリンクしようとしているライブラリと、
プログラムがリンクしようとしているライブラリが違うわけだな。
で、そのOggがリンクしようとしているライブラリを無視させるために/nod:なんたらって奴を使う。
127 :
デフォルトの名無しさん :02/09/29 23:56
と、いうことは、"abc.lib"がダメと言われたら、 #pragma comment(lib,ogg_static.lib) とかの宣言している後あたりで/nod:なんたらを使えばいいのかな? そもそも、自分で作ってるプログラムのスタティックDLLの宣言の 使い方をなおさなくちゃいけないんだろうか。 ちょっと何かで調べてみようかと思います。 どこかに参考文献やらがあったら紹介していただけないでしょうか。
/NODEFAULTLIB:library が何のことだか判ってないのか……。
129 :
デフォルトの名無しさん :02/09/30 04:38
>>124 そういえばWindowsはそうでしたね
WindowsはSSEサポートの情報を投げないからアクロバチックな方法に
頼るしかないけど、もう少しスマートな方法はないでしょうか?
無効命令を発行して例外を拾ってくるっていうのは美しくないなぁ…
OSFXSRかAthlon HWCRでもよみまつか?
どなたかBCB6でやってる人いないでしょうか? implibで-aつけてdllからライブラリ生成して、 #pragma comment(lib,"vorbisfile.lib") ってな感じでリンクして、必要なヘッダインクルードしてるのですが、 ov_openとかを使うとビルドは通るのですが、 実際に実行してみるとフォームも表示されずに CPUウィンドウが表示されてしまいます。 そのまま続行すると「例外により実行を停止しました」を 表示され停止してしまいます。 どなたか解る方がいらっしゃったらお助けください。 お願いします。
>131 自己レスですが、_dのついたDLL使えばいけました。(鬱 ですが次は ov_open(rfile, &vf, NULL, 0) を実行すると例外エラーが起きるんです(泣 プロジェクト Project1.exe が EAccessViolation クラスの例外を生成しました。 'モジュール 'ntdll.dll' のアドレス 77F51C96 でアドレス 00000010 に対する書き込み違反がおきました。' って言われてもさっぱりです。
連続かきこスマソ。 >131 じゃなくて >132 でした。
>>133 ov_open() で渡すファイルポインタに互換性がないんじゃない?
VCでビルドしたDLLを使っているなら VC仕様の FILE でないといけない
内部で VC仕様の FILE でアクセスしてるから AccessViolation してるのだと
思いますけど (BCBは使っていないので良くわかりませんが…。)
ov_opencallback() でラッパー関数を作って試してみては。
>>130 ,131(遅レスすまそ)
探してみたのですがなんだか見つからないですね…。
さくっとひとつAPI拡張したらいいのに > M$
>>131 CR4へのアクセスは特権命令ぽいのでNTとかだと不安です。
他に手はないことはないけど…。
Delphiでやってるけれど、当然FILEに互換性がないから ov_opencallbackでやってる。 BCBでも互換性はないんだ・・・
callbackのほうが安全な気がする俺はチキン だってFILE*なんて使われるのイヤン
139 :
デフォルトの名無しさん :02/10/03 14:08
OggVorbisをDirectSoundでストリーム再生させてるのだけど、 1曲目が終了したら2曲目、または停止させたいのだけど、 ov_readがゼロを返したら読みこむの辞めたら最後の部分を 繰り返し再生(TT)してしまうので、DirectSoundのPlayで 設定したループの設定を変更したいのだが、何か設定を 変えるプログラムありますか?
140 :
デフォルトの名無しさん :02/10/03 17:41
141 :
デフォルトの名無しさん :02/10/03 23:05
>>139 停止するには、最後のデータの後に、バッファの長さ分だけの
無音データを送り込めばいいように思うけどどうですか
リングバッファを使っていると、途中の音が抜け落ちる可能性が あると思うのですが。
バッファサイズって、ストリーミング再生の為にどのくらい 確保してます? そして毎回読みこむようにするためにタイマーの間隔どのくらい にしてますか?
バッファ:■□□□□■■ 3 →12 な、感じで回ってくるので書き込んだ先に無音データを入れると バッファ:■****** な、感じで1、2が消えてしまうかもと。
消えないように書き込むだけでは?
148 :
デフォルトの名無しさん :02/10/04 09:37
「→」からスタートして「1」「2」そして「3」に逝った後は バッファのループ再生をとめたとしても 無音が続いて「1」「2」そして停止。となる気がする。
EventNotifyは使わないの?
>>146 いいかた悪かったか。
データの後ろに(バッファの長さだけの)無音部分をくっつけるのよ。
くっつけたのを普通どおりに全部流せば、最後まで再生したときには
バッファ中は無音データだけになる。
>>149 調べてみました。考えたのは、
EventNotyfyを使って、
(Oggのデコード後全データサイズ) % (セカンダリバッファサイズ)
で計算して出した位置にイベントを発生させるようにする。
そしてov_readがゼロを返したらファイルの終端なので、
次に来たイベントでDirectSoundにストップを掛ける。
で、念の為に
>>150 の処理をしておく。
まだEventNotifyは使い方が完璧じゃないので調べ中ですが、
こんな感じの処理でOKですか?
つーか、Notifyつかってなかったのか
DirectSoundのNotifyってDirectX5以降だった気がする
EventNotyfy難しいぞ...
DirectXのサンプルミロ
>>144 3秒分くらい取ってる。
バッファが一周するうちに2回くらいバッファを更新してる
>>157 マニュアルかなんかに、2秒あれば十分と書いてあったきがするぞ。
Oggストリームいまだに試行錯誤中・・ やりだしたらスレッドやらイベントやらと今までやってなかった 処理が目白押し。 先にストリーム再生を勉強しておくんだった(鬱 そして久しぶりに来たらこのスレ落ち着いちゃったかんじですね。
結局ストリーミング再生自体、waveをストリーミングするのと何も変わらないし、 OggVorbis自身はライブラリとして提供されてるから組み込みも容易だし……。 しかも、一度自分用のライブラリに組み込んでしまうと、当分さわらないからな(´д`;) Ogg固有のことをするとなると、最適化ぐらいしかない……。
Ogg関係の編集ツールって何かありますかね。 どっかにまとめたページがあったらキボン
デキタ━━━━━━(゚∀゚)━━━━━━ !!!!! いったい何日かかったのか分かりませんが、やっとできました。 これで少しはまともなプログラムになったかも・・・
165 :
デフォルトの名無しさん :02/10/24 05:26
基本時な関数は分かったのだけど、その他の関数の種類とか 使い方ってみんなどうやってしらべてるんだ?
>>163 おめ
何かネタがあったら披露してほすぃ
>165 (信用できないが)ドキュメントと、あとはライブラリのソース。
xiph.orgに繋がらないのは俺だけ?
今試したら、ちゃんとつながるよ。
繋がるようになりました
お騒がせしますた
>>169 わざわざすみません
oggエンコーダーとogg123というプログラムが最初から入っていて 音声ファイルの圧縮と再生はできるのですけど 今どんなことをやろうとしてるのですか?
どうしてあなたがやろうとしていることを、私が知っているのでしょう……
おまえら、どういうことに、どういうふうに使う予定ですか? ぐらいの意味だと翻訳してみる
ゲームのBGMに使ってます ちと古いマシンで負荷が気になる。
c0w32.objとかも混ぜれば?
>>175 ソース配布するときに、それも含めていいのかよ!って話になるんすよ
>>174 声とか入れてもCDに入りそうだもんな。
MP3を採用しようか迷ってたら問題起きて。
まさに救世主ってかんじだと思うのよ。
.Netで全リビルドかけても>132と同じになる……何故。 _d付きにリンクしてもダメだ。何が悪いんだろ……。
age
なんでこんな、話題のないスレをageるの? 至れり尽せりで、何の問題もない気がするけど・・・。
sage
ホッシュ
ov_time_tellで今再生している時間を取得しようと思ったのですが これは秒単位なんですよね。 ミリ秒単位で取得したいのですがどうすればいいのでしょうか?
小数点が返ってくるからそれを使うんじゃなかったっけ?
return codeで「n indicates the current decoding time offset in seconds.」 となっているから小数部使えばいけるっしょ。っつーかドキュメントちゃんと嫁。嘘多いけどな。
マニュアルは英語が苦手なりに読んでますょ… 。・゚・(ノД`)・゚・。 sprintf(buf,"ov_time_tell=%f\n",ov_time_tell(&vf)); とやって値をとっても4.000000とか5.000000とか整数秒しか帰ってこないんですよ。 もう本当にdouble型かと疑いたくもなるんですが。 皆さんちゃんと返って来ているんですか…?
書き忘れましたが念のため。 使っているSDKはoggvorbis-win32sdk-1.0です...。
良く知らんが double なら %lf では?
>>190 だめでした(´・ω・`)
ov_time_totalなら小数点も返って来るんですけど、
そう考えるとバグかな…とか思い始めたり。
ov_time_totalの方を使えば? でもさ、ストリーム再生で先よみしてると、実際の再生位置より先を 返してくることになるよなぁ どないしよ。
ov_time_totalだったら曲の長さになってしまいますよ…。 でも、そうか、ストリームである以上正確な再生位置はわからないんですよね。 難しい。
名前入れ忘れた
おなじSDKでちゃんと数値かえってくるけどな。 もしかして、ぴったしな数値読み込んでるからじゃないの? 192で書いたけど、あれってストリーム再生している秒数だすんじゃ なくて、Oggの読み込んだ位置を出してるだけのような気がするし。
バッファ1秒分とってデコしてるなら、1秒ごとの値しか帰ってこないと思われ。 バッファを細かくするか、自力で時間を計るしかないかと。
あー、1秒でバッファ取ってました…。 ホント申し訳無いです。 やっぱ自前で計算ですかね。 何だかんだ言ってそれが一番楽で確実そう。 再生と同時にgetTickCountを持ってみるとか...。 ありがとうございました。 何とかやってみることにします。
バッファを細かく取った方が圧倒的に楽だと思うのは勘違いだろうか?
勘違いです。
>199 じゃあ音声を途中で一時停止された場合でも正しく対処できるんだね。結構面倒だと思うが。
で、結局メモリーから再生するにはどうするんだ? ov_open_callbacksの詳しい使い方キボンヌ。
>197 逆を言えば、1秒でバッファを取れば再生時間取得精度が1秒で、 500ミリ秒なら、100ミリ秒なら・・・ と、それなりに正確に取れるということか。
メモリーから再生できたよママン。 これくらいみんなとうの昔に出来てんのか?スマソ。 データを読む為のコールバック関数の所在を示す構造体ov_callbacks。 typedef struct { size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); int (*close_func) (void *datasource); long (*tell_func) (void *datasource); } ov_callbacks; 引数に関してはfread系のライブラリ関数とほぼ同じと考えてよい。 datasourceからptrにsize * nmemb byte読む。(read) whenceの位置からoffset byte シーク(seek) whenceの値はfseek互換。(seek) ov_open_callbacksに生ポインタとov_callbacksを渡せばおっけ。
俺はまずそれを探したぞ。
それができるとどんな良いことがあるんでつか
こちとら、DelphiなんでFILEなんてものは使えません。
ファイルを暗号化してるとか、 arでアーカイブしてあるとか、 ネットワークからダウンロードしながら再生するとか、 etcetc
>206 TStreamでやれば?
やってますが何か?
210 :
デフォルトの名無しさん :02/12/16 19:58
急速浮上!
対応ソフト:winmx
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
>>440 そんなに寄付集まらないと思うぞ。
利用者に月1万円って現実的ですか?
↑ウェー、ハッハッハ
特に問題ないっしょ。会社からとかでも
ミルクカフェみたいな糞掲示板には行きたくないしなー
2ちゃんねるだって俺たちが離れていけばもうなんの機能もなくなる。 ひろゆきは大失敗だな。 人が多いから2ちゃんねるの意味があるのであって 人がいなくなればもう用はないのです。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
何が起きたんだ?
「ハッキング」から「夜のおかず」までを手広くカバーしすぎた巨大掲示板群です。。。 気兼ねなく、会社、学校、座敷牢からアクセスできないように、発信元はバリバリ記録してますです。 お気楽ご気楽に書き込まないで下さい。お約束・最低限のルールを守ったフリをして、 他人に迷惑をかけまくって騒ごういうことです。ルールを守らないと、祭りになっちゃいます まず、他人が見て不愉快になることを書きましょう。大勢の読者がいることを意識しないでください。他には、 ひろゆきが、超・不定期にお送りする裏口ネット駄情報。2ちゃんねるヘヴォメールマガジンがあります。
>>51 だから、
たとえば「古川は人間のクズ、詐欺師だ。」って書き込みがあって、
それを古川って人間が、名誉毀損で削除依頼の内容証明出します。
それがひろゆきに届いたら、上記の名誉毀損があることを知りえますよね。
そしたら削除義務が起こるってことじゃないの?
>>52 あのね、名誉毀損が無ければそもそも削除義務なんて発生しない。
そしてどうして判決が削除依頼や内容証明より遅い訴状送達時にしたかと
言うと、名誉毀損と確定してないから名誉毀損と認識したとは言えないわけ。
そこで訴状の送達で名誉毀損を認識しえたとしてるんだよ。
スレのペースは裁判関係で随分早まったが それでも現在板で5番目に古いスレになった
>>327 コピペにマジレス。批判にかこつけた明白な差別・人権侵害も行われているのが
今の2ちゃんだろう。
だとすると、また隠語が必要になってくるな。氏ねとか。
おまえを殺す!とか言ったらタイーホされるの?
さんが群馬のソネットだということも分かりますよ
吉と出るか、凶と出るか。。
IP取ろうが取らなかろうが 捕まるときは捕まるだろ? ↑縦読み不可
421 名前:三毛 ◆MowPntKTsQ 投稿日:03/01/10 00:18 ID:McoZGeeY
普通、ノートンが反応するような代物をむざむざ開く莫迦はいないだろ。
では、君のお薦めのソフト教えてよ。
あ、それと、そんなもの貼った意図も併せてね。
423 名前:g056137.ppp.asahi-net.or.jp 投稿日:03/01/10 00:20 ID:6BZCtvnU
これ
http://pc.2ch.net/test/read.cgi/sec/1036482812/ 意図。
風に吹かれて、かな。
今ちょっと色々試してる。
具体的に 今後はどんな 書き込みをしてるとまずいんでしょうか?
OGMを正式の ogg の動画形式として採用することを決定した。 Tobias は ogg チームに参加、OggDS は今後オープンソースとなる。 さらに、Xiph.org の CEO、Emmett Plant は、現在すでに広く用いら れているOGM動画形式について、 xiph.org が今後開発するものと互換 性を保つ予定であると明言。これによってプライベートなファイル形式 だったOGMは一気にオープンソース標準として確立、いま現在あるOGMも 事実上、すでに「正式なOggフォーマットの一部」という地位になる。
IPの先頭何文字かをぶった切って、残りで 日付をシードにパス生成してるんだと勝手に思ってたんだが。>ID
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
ヴァカハケーン
MD5ですか
そこまでのストーカーぶりは気に入った。
話がすりかえられてるような気もするが 漏前は「きこり」か?w
2ちゃんねる知らない人4%と言う事は、 96%の人が、2ちゃんねるの存在を知っていると言う事?
>234 関連ページリンク下さい
トリップ公開時期
鈍舞ですわ。>マァヴさん
IPアドレスは番号みたいなもの。 ホストは、住所みたいなもの。 IPは郵便番号みたいなもの。 両方ばれるとヤバイネ!!
記録するっても、変なコトしなきゃ公開される事は無いだろうしな。 反対してるヤシとかいるの?
テレビで放送されると厨が大発生するから嫌になる
井の頭線さんのことなら、規格外で捕まりません。
>243 どうも。
で、なんて発音するの?
本当にそう、IP皆さん解ってる? 泉ピン子の略ってこと。
スマソ。良かったらオレにも教えてくれ。 オレも同じの付けて遊びたい・・・。
実はもう終わってます
>252 いのきぱんち
もうネタなんていっていいレベルじゃない はっきり 馬 鹿 って言ってあげようよ。
(^^)
258 :
デフォルトの名無しさん :03/01/19 23:04
ov_readの最後の引数には何の意味があるの?
>258 >bitstream > A pointer to the number of the current logical bitstream. from ドキュメント。 まぁわざわざポインタ経由にする意味はわからないんだけど。
(^^)
261 :
デフォルトの名無しさん :03/02/07 00:15
保守
OggVorbisって死滅しちゃうの?
エロゲの音声用として以外の使い道は日本にはないと思う
>>264 なぜ俺が今やってることが判る?
エスパーかお前
>>264 普通にゲームのBGMに使ってますけど・・・
つか、音声フォーマットだから他に使い道あんの?
ダウンロードさせるときに軽く済みそうだから。 金がかからないから。 以上
OggFlac OggVorbis OggTheora
Ogg Vorbisをoggと略すのは良くない。(開発者自身が主張している) Ogg自体はデータフォーマットを示す部分で音楽の非可逆圧縮に関する規格部分はVorbis(Ogg Vorbisの場合)。
270 :
デフォルトの名無しさん :03/02/13 19:22
そろそろオヮァッグバォルヴィェス(正しい発音)のプログラムできたか?
おっじーじー ヴぁーびす。
オッグボルビス オッグセオラ
Ogg Vorbisをoggと略すのは良くない。(開発者自身が主張している) Ogg自体はファイルフォーマット・コンテナを示す部分で音楽の非可逆圧縮に関する規格部分はVorbis(Ogg Vorbisの場合)。
274 :
デフォルトの名無しさん :03/03/10 16:36
275 :
デフォルトの名無しさん :03/03/11 16:33
oggのフロントエンド作りたいんだけど、何か良い情報クレ
276 :
デフォルトの名無しさん :03/03/11 18:32
午後のこーだOgg Vorbis対応版とかでたら…。
277 :
デフォルトの名無しさん :03/03/11 22:54
MIOタン…ハァハァ…。
>>275 SDKのドキュメントに読んでみることをお勧めー。
279 :
デフォルトの名無しさん :03/03/29 19:11
203の解説じゃ理解できんかった・・・鬱だ・・・ ov_open_callbacksに渡すov_callbacks構造体の設定がいまいち分からない・・・ 誰かヘルプ
>>280 要するにこれは自前でopening, closeing, seeking, locationを行う関数4つを作っておいて、
ov_callbacks構造体にそのアドレスを設定して、
それを生ポインタと一緒にov_open_callbacks関数に渡すって解釈でいいわけ?
それが一番素直な解釈だし、それであってる。 あとopenじゃなくてreadね。 つかソースあるんだからそれ見ようや・・・
283 :
デフォルトの名無しさん :03/03/30 08:42
いやなサンプルだな。 いまの時代にコールバック関数なんて。 ソースあるからみようって認識もいまの時代には合わないよ。 多分かなりの人数が正しく動かせないんじゃない? 例えば、場合によっては音が消えるとか飛ぶとかない?大丈夫?
煽りにしては幼稚だな。
残念ながらただの妄想です。
286 :
キタ━━━━━━!!! :03/04/01 00:04
287 :
デフォルトの名無しさん :03/04/01 13:42
>286 Garf先生ですな encoderは当然調整されているとして、decoderも調整されているのですか...?
デコーダまで調整されてると困るんですがねえ・・・
289 :
デフォルトの名無しさん :03/04/04 23:51
oggdropXPdのソースコードを頂いてビルドしようとゆるゆる してますが、どうしても"tag_setup.c”が見つからず。 このファイルはどちらに存在するのですか?
911 名前:名無しさん@編集中[sage] 投稿日:03/03/17 01:41 このスレを見ると、oggがいかに糞か、がよく判るな。 912 名前:名無しさん@編集中[sage] 投稿日:03/03/17 03:37 というかogg信者がいかに糞か、がな。 まぁおそらくアンチoggがイメージダウンを目的に、わざとらしい迷惑マンセー書き込みを繰り返しているんだろうが。
293 :
デフォルトの名無しさん :03/04/05 15:55
ogg vorbisって特許には触れないんですよね。 俺は単純な正弦波をできるだけコンパクトに作りたくて、mp3形式のファイルをバイナリエディタで作ろうと思ったことがあったけど、特許の壁でどうしてもデータ構造が分からずあきらめたことがある。 ogg vorbisならできそうだね。そのうち暇ができたら挑戦してみようかな。
正弦波を非可逆圧縮するとどのみち波形が崩れると思うが。 Oggの場合、開発サイドは特許でしばってないが、かといって JPEGみたいにならないとはいえない。
単純な正弦波なら差分をとってランレングスとかの方がよかろ
特許フリーであるかどうかって、 結局その国で裁判しないとわかんないからねえ。
>>293 > 特許の壁でどうしてもデータ構造が分からず
特許ということは全て公開されてるはずですよ。
それもそうだな。
299 :
デフォルトの名無しさん :03/04/06 17:49
mp3は周波数成分を適度に間引いて圧縮する方式を使っているから、周波数成分が1つしかない正弦波はかえって生waveよりも正確なのを作れそうだね。
全て公開しないという特許なんです
いや、それを言うならデムパを発する特許だろう。
302 :
デフォルトの名無しさん :03/04/13 23:08
>>300 どういう特許だよ
仕組み公開しないと特許は取れないだろ
じゃないと、それ、うちが10年前に考えましたって言えちゃうやん
ネタにネタなのか、それとも・・・・
304 :
通りすがり :03/04/15 00:07
仕組みというかあまり詳しく書いてもすぐパクられるから 大事な核となる所はブラックボックスとなっている場合がありんす UML図みたいな感じを想像するといいかも・・・ データ構造は仕様の問題じゃあ? アルゴリズムで特許取れるらしいけど、出願の所にデータ構造までかかなあかんのかいな・・・
(^^)
306 :
デフォルトの名無しさん :03/04/18 04:40
特許って仕組みを公開する替わりに権利を保障するんじゃないの? たとえば新しい音楽圧縮を考えたとして、 実装した圧縮コードやデータ構造を公開する必要はないけど 圧縮アルゴリズム、これがほかのMP3やら何かと違う部分はどこか、 ってのを詳細に書かないと申請すらさせてもらえない気がするんですが
∧_∧ ( ^^ )< ぬるぽ(^^)
309 :
◆BHHOtghNS6 :03/05/20 02:15
最近Ogg Vorbisのプログラム始めたんだけど このスレはもう廃れているのかな? ざっと過去レス読んでみたけど どうやってメモリ上のデータ再生すんじゃ( ゚Д゚)ゴルァ って香具師が何人かいたみたいね。 まぁov_open_callbacks使ってごちゃごちゃやりゃイイんだけど なんか美しくないなぁ、と思ってcodec.h内の関数だけで メモリ上のデータをデコードする関数を作って見ますた。 需要がありそうならソースうpしようと思うんだけど 欲しい人いまつか?
需要は微妙だが、どれだけやればいいのか知りたいというのはあるなあ。 とりあえずキボン。
312 :
◆BHHOtghNS6 :03/05/20 14:59
313 :
デフォルトの名無しさん :03/05/21 12:41
で、うpしたソースは流れてしまったワケだが
>>310 は落とせたのだろうか?
何にしろ反応がないのは正直寂しいね
>>314 310じゃないけど落とせますた。
そのうち参考にさしてもらいますよ。
>>315 落とせた人もいるみたいで一安心
俺は今、そのデコード関数をラッピングして
Windows用サウンド再生ライブラリを構築中。
ストリーミング再生、多重再生、ループ
ボリューム変更、フェード、ポーズ
などを実装してて、もうじき完成予定。
一段落したら、デコード部でバグがでん限り
しばらくOgg Vorbisプログラムから離れると思います。
そろそろスレ違いになりそうだな…
今バグって言うか、ちょっとしたミスに気付いたんで訂正 16bitでデコードするところでunsigned shortでやってるけどshortの間違い。 落とした人は直しといて と言っても誰もいないか…
グッドジョブ
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
どうしてあなたがやろうとしていることを、私が知っているのでしょう……
321 :
デフォルトの名無しさん :03/06/02 10:06
VorbisだけでなくOgg関連のプログラミングを語るスレにしない? Xiphはマルチメディア全般を視野に入れているみたいだし。 #デベロッパ不足で開発が思い切り遅れてはいるけど。
>>322 別に構わんと思うよ。
このスレで特にvorbisに限定すべき理由もなかろうし。
つーかネタ振れや
>>312 のプログラムで、またバグに気付いたんだけど
落とした人あんまおらんみたいやし、訂正しなくてイイよね?
深刻なバグじゃないんで、特に問題になる事はないと思うし
バグありなのか。じゃあイラネ
落とし損ねた(ノД`、)
>>325 >>326 バグはもうないと思うよ。
ただ、あんま人おらんみたいやから
訂正なり再うpとかする前に聞いとこうと思って。
>>327 欲しいなら再うpするよ
>>328 魅惑のプロゴラマきた━━( ´ー`)━━!
ご面倒でなければ (´人`) よろしくお願いふまふ
>>330 ありがとう ヽ(´ー`)ノ 全力でダウソしますた
333 :
デフォルトの名無しさん :03/06/15 04:04
これからのエロゲメーカー システムは吉里吉里2 サウンドはOgg Vorbis & Ogg Flac 画像はPNG ムービーはOgg Theora ボイスはOgg Speex これぜーんぶタダ! ついでにゲーム本体もタd
吉里吉里レベルじゃ製品にならんべ
おいおまいら!今のエロゲが製品として出荷できるレベルだと本当に思ってますか! ∴吉里吉里でもたいしてかわんない!
いやフリーだからってバカにできんぞアレは。 平均的なエロゲのシステムよりはずっとよいからな。 実際に商用でぼちぼち採用され始めてるし。 っつか日記にまたSSEパッチの話がでてるな
Ogg/Vorbisネタねーのか
最新のCVSのTremorの再生負荷はどんな具合なん?
>日記にSSEパッチ SSE&3DNow最適化デコーダらすぃ。 ://kikyou.info/diary/ 吉里吉里用プラグインである wuvorbis.dll を他のアプリケーションからも利用できるようにするためのライブラリを吉里吉里ダウンロードページの方で公開しました。 SSE にくわえて 3DNow! 向けのコードも追加したので結構使い物になると思います。非 SSE 非 3DNow! な CPU でも普通にビルドしたやつよりは速いですたぶん。
SIMDが載るようなCPUならvorbis程度の負荷は大したことない気もするが・・。
FPUがクソ遅いK6とかを相手に3DNoW!を使ってくれるのはうれしいかも。 とくに複数同時ストリーミングとかしようとするとね。 SSEも3DNow!ものってないCPUむけがどれぐらい速いか。 まあ速いに越したことはないしライセンスもゆるいし試して見ようかな。 でも不都合おこすといやだな・・・
ユーザーに選ばせるのがいいと思った
343 :
デフォルトの名無しさん :03/07/04 04:36
ちょっとお聞きします。 ov_pcm_total()で総サンプル数を取得して、 これにチャンネル数と2(16bit)を掛けて デコード後の総バイト数を求めてるんですけど、 実際にデコードしてみると、これをオーバーしちゃって あぼーん、てことがたまに起きます。 総バイト数の求め方おかしいですか?
>>343 これでダメですか?
int64_t totalbytes = channel * (16/8) * ov_pcm_total(&vf,-1);
>>344 >int64_t totalbytes = channel * (16/8) * ov_pcm_total(&vf,-1);
そのとおりにやってます。
ほとんどの場合は大丈夫なんですけど
データによっては、実際のサイズを少しオーバーする場合があります。
可変ビットレートとかって関係ないですよね?
>>345 可変ビットレートと総サンプル数は関係ないですな。
対症的な対策を考えるとするなら、ov_read でデコードするときに
総サンプル数と一致しなくても問題がないようにクリップするとか
処理するくらいかな。
うちはそういう問題にあったことないんだけど...。
>>344 >>346 ご回答ありがとうございました。
サイズが違ってくる原因は不明ですが
>>346 さんがおっしゃるように、対症的な対策で回避する事にします。
この問題を調べてるときにちょっと気になったので、もう一つ質問。
ogg_page_eos()が非0を返すまでループさせてページの終わりまで行き
ogg_page_granulepos()でgranuleposを取得する
というテストプログラムを書いてみたところ
granuleposとov_pcm_total()が返す値は同じでした。
granuleposというのは、そのページに含まれる最後のサンプルが
先頭からいくつめのサンプルであるかを示す値という解釈で合ってますか?
granulepos(粒の位置?)の扱い方がおかしいのか?と邪推してしまったもので…
質問なのですが、 OggVorbis_Fileを使用してファイルアクセスした時の デコードサイズの求め方は以前にありましたが、 メモリに読上げた状態でogg_sync_stateを使用してアクセスする方法で デコードサイズを求める方法ってあるのでしょうか?
>>349 >ogg_sync_stateを使用してアクセスする方法で
というのはvorbisfile.hをインクルードせずにやりたいってこと?
それなら俺が
>>347 でやったやり方でできると思ふ。
もうちっと詳しく書くとogg_sync_pageout(もしくはogg_sync_pageseek)で
ページを取得しつつ、最後のページ(ogg_page_eosが非0を返す)までループ。
(当然だが、このとき適宜ogg_sync_buffer、ogg_sync_wroteでデータを書き込む必要あり)
最後のページまで来たらループを抜けて、そのページに対して
ogg_page_granuleposを呼び出してgranuleposを取得。
俺が試した限りでは、このgranuleposってのが
ov_pcm_totalが返す総サンプル数に等しかったんで、後は同様
あと、この処理をやるとogg_sync_stateは最後のページまで逝ってるんで
この後デコードするんならリセットせなあかんよ
>>349 ちょっと気になったんで補足
>メモリに読上げた状態でogg_sync_stateを使用してアクセスする方法で
これが単にメモリ上のデータをデコードしたいっていう意味なら
OggVorbis_Fileでもov_open_callbacksを使えばOKっすよ!!
>>350 解決しました。
ありがとうございます。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
355 :
デフォルトの名無しさん :03/07/16 16:50
_∧_∧_∧_∧_∧_∧_∧_∧_ デケデケ | | ドコドコ < Theoraまだぁ〜!? > ☆ ドムドム |_ _ _ _ _ _ _ _ _ _| ☆ ダダダダ! ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ドシャーン! ヽ オラオラッ!! ♪ =≡= ∧_∧ ☆ ♪ / 〃(・∀・ #) / シャンシャン ♪ 〆 ┌\と\と.ヾ∈≡∋ゞ || γ ⌒ヽヽコ ノ || || ΣΣ .|:::|∪〓 || ♪ ./|\人 _.ノノ _||_. /|\ ドチドチ!
まぁ、アレだ。 分からないことあってもメーリングリストの アーカイブ読めばだいたいのことは分かるよな。
358 :
デフォルトの名無しさん :03/07/23 02:25
330さんのリンクが切れてる… どなたか再アップしていただけないでしょうか。 お願い致します
再アップ有難うございます。 これから試してみたいと思います
>>359 そのうち、必要になるかも知れまへんので、横取りさせて頂きまふ
364 :
デフォルトの名無しさん :03/07/30 01:00
Pen200でWAVとOGGを多重再生しようとすると 両方メモリにあげてるのにDirectSound側で ブロックされて音が途切れる… ClassicPentiumじゃぁ無理かな?
365 :
デフォルトの名無しさん :03/07/30 01:02
971 名前: 名無しさん@編集中 [sage] 投稿日: 03/07/28 08:52 DivXのように個人向けに機能制限を外したものを売り出せばいいのにね。 Waveletですよと言っておいてどこにもWavelet使っていなかったVP3といい、 On2はどうにもこうにもアレだ。
369 :
デフォルトの名無しさん :03/07/31 23:11
32 名前: 名無しさん@編集中 投稿日: 03/04/30 06:27 VP3は完全Wavelet方式 WMV9やRealVideo9はDCTとWaveletを組み合せた方式 VP3最強 971 名前: 名無しさん@編集中 [sage] 投稿日: 03/07/28 08:52 Waveletですよと言っておいてどこにもWavelet使っていなかったVP3といい、 On2はどうにもこうにもアレだ。
(^^)
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
373 :
デフォルトの名無しさん :03/08/19 19:02
あげ
サブカルチャーと呼ばれるもの全てに言えることではあるが、「フリーソフト」も また、現実社会での劣等感を肩代わりするための救済システムの一つであり、 同時に、クリエイターと一般ユーザの距離が限りなく近いという幻想が発生し やすい場所なのだ。 だから、ユーザーが必要としているのは、製品のオリジナリティなどではなく、 物語商品と、その背後にあるクリエイター自身のサクセスストーリーなのだ。 しかし、商業的に発展し、システムが完成されていくうちに、既存のメーカーが そうしたニーズを汲み取ることは困難になっていく。 クリエイターとなることができない一般大衆の自意識は、クリエイター神話に帰属し、 自分がクリエイターのサポーターであるかのような錯覚に陥ることで救済される構造 になっている。 自分の好きな作品を他人に強く勧める人間や、自分が属している訳でもない「『業界』 の行く先」を本気で案じ語る人間がフリーソフトファンに多いのはこのためである。
ほう それどこからのコピペ?
ソフ板にもあったな。
いわゆるオタク思考
379 :
デフォルトの名無しさん :03/09/12 23:23
381 :
デフォルトの名無しさん :03/09/29 12:18
オッグ
382 :
デフォルトの名無しさん :03/10/03 17:26
2003年10月2日 Ogg Vorbis 1.0.1 予定より遅れ
現行の公式バージョン 1.0 は、入力として 24-bit WAV を使えない
など最近のニーズに合わない部分がある。
ダブルブラインドテストによる聞き比べでは、低レートではMP3PROやAAC
(とくにHE-AAC)に負け、中・高レートではMusePackにひけをとるなど
オーディオ単体としては限界もある。
映像コーデック Ogg Theora は一部で期待を集めているが
こちらもリリースが何度も延期されている。
http://www.faireal.net/
また妖精か。
384 :
デフォルトの名無しさん :03/10/08 04:49
1.0.1は永遠にリリースされない…
・突然の開発停止
いつまで経っても1.0.1がリリースされない事からうすうす感づいていた人も少なからずいるでしょう、
残念ながらOggVorbisは2003年10/6をもって開発停止となりました。
現在、ほぼ1.0.1版が
http://rarewares.hydrogenaudio.org/ogg.htmlからDL可能です 。
またOggTheoraの開発も同じく10/6をもって開発停止となります。
悲しい事にもう新版がリリースされる事はありませんが、これからも皆でOggスレを盛り上げていきましょう。
385 :
デフォルトの名無しさん :03/10/08 13:33
なんだ結局潰れたのか 最初から期待してないけどな
>>384 ニュースソース希望
vorbis.com等に開発中止という話が見当たらない
387 :
デフォルトの名無しさん :03/10/08 20:33
The bad news is that Vorbis 1.0.1 is being held hostage by Win32 build problems, but the good news is that Monty is already bravely charging ahead to work on Vorbis 1.1. (C)www.vorbis.com 悪いニュースは、Vorbis 1.0.1がWin32構造問題によって人質にとられているということです。 しかし、良いニュースは、Vorbis 1.1に作用するためにMontyが勇ましく前方に請求しているということです。 (C)エキサイト翻訳/(C)www.vorbis.com 要はWindowsの仕様に引っ掛かって開発が難航してるって事だろ? (C)俺
>>387 ん? build problemsってんだからWin32用のコンパイルがコケてるから
リリースできねってんだろ。別にWindowsの仕様がどうって話じゃないと思うが。
Vorbis 1.0.1 is being held hostage, but Vorbis 1.1 Monty is bravely charging ahead.
flacに期待
TheoraをARM以外のCPUで動かしてるんだけど、 あと少しだけ処理が間に合わない。 プロファイラ使えんのでどの関数を高速化すべきか判らないんだけど どこを高速化したら良い?
何が問題になってるんやろ?
394 :
デフォルトの名無しさん :03/10/19 19:52
もう「ソースコードが公開されている」だけの糞ソフトは流行らないワケで。 流行らない規格は無用なワケで。
禿堂 oggなんか役に立たないから消えていいよ
>>391 今更ツッコミですが、TheoraではなくてTremorでは?
TremorだったらMDCT関係の最適化は恐らく効果があるでしょう。
397 :
デフォルトの名無しさん :03/11/05 19:50
javaでAudiere Audio Systemを使用して oggプレーヤーを作りたいのですが 英語が理解できません。 コツを教えてください。
電子辞書片手に海外の英語のニュースサイトを読みまくるとよい。上達するよ
399 :
デフォルトの名無しさん :03/11/17 13:24
ども。VS.NET 2003でデバッグ版のライブラリがどうしても使えないんですが、
何か心当たりないでしょうか。
・マルチスレッドデバッグDLLでstatic版をリンク
> LINK : warning LNK4098: defaultlib 'LIBCMTD' は他のライブラリの使用と競合しています。
> /NODEFAULTLIB:library を使用してください。
・マルチスレッドデバッグでstatic版をリンク
> (略)
> MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _ldexp は既に LIBCMTD.lib(ldexp.obj) で定義されています。
> LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。
> /NODEFAULTLIB:library を使用してください。
・マルチスレッドデバッグDLLでDLL版をリンク
ビルドは成功するが、実行すると
「MSCVRTD.dll が見つからなかったため、このアプリケーションを開始できませんでした。」
と怒られる。
プロジェクトには、
http://www.flipcode.com/cgi-bin/msg.cgi?showThread=COTD-OggVorbisPlayerClass&forum=cotd&id=-1 ここのOggPlayer.h、OggPlayer.cppとサンプルコードが入ってるだけです。
リリース版はマルチスレッドで問題ないです。
プロジェクト本体のC/C++標準ライブラリの種別とリンクしようとしてる ライブラリのC/C++標準ライブラリが合ってないんだろ。 ライブラリとプロジェクトの設定みなおせ。
ええと、すんません。 構成プロパティ > C/C++ > コード生成 > ランタイム ライブラリ 以外にもそのあたり影響のある項目があるんでしょうか?
>>399 そこらへんは 1.0.1 の正式版で解決してるんでないかな。
1.0.1 が遅れた理由の一つだし。
329 :名無しさん@お腹いっぱい。 :03/12/07 19:54 ID:bp3EUxDC
MontyによるとVorbis II の計画を大幅に前倒しするそうな。
that I wish to neglect VOrbis 1.1,
get OggFile out the door with theora 1.0 and then launch into Vorbis II ASAP.
I have my worklist for VII.
The big reason... we're about to be very widely adopted.
Vorbis I is insufficiently friendly for hardware.
330 :名無しさん@お腹いっぱい。 :03/12/07 20:06 ID:bp3EUxDC
ってこれ爆弾発言だよなぁ…
Vorbis IIはVorbis Iと互換性無いし。
楽しみ半分、不安半分。
331 :名無しさん@お腹いっぱい。 :03/12/07 20:29 ID:QrAAKfPr
Vorbis IIはWaveletを採用するんだっけ?
予想以上に早い動きだなぁ
http://pc2.2ch.net/test/read.cgi/software/1065675234/329-334
>>403 互換性が無いなら Vorbis 以外の名前に変えたほうがいいな。
誰か Monty に言っとけ。
405 :
デフォルトの名無しさん :04/01/03 22:53
誰かOGGのサンプルください
プログラムの? データの?
407 :
デフォルトの名無しさん :04/01/03 23:59
プログラム(C/C++)です。SDKに付属しているサンプル(exampleフォルダ?)は よくわかりませんでした
アレで分からないんだったら、もうちょっとプログラミングの勉強を したほうがいいと思う。角度とか。
409 :
デフォルトの名無しさん :04/01/04 00:40
そういわずに助けて 簡単なサンプルが欲しい!
SDKのサンプルが一番分かりやすいサンプルなの。
俺もそう思う つか、webで何で情報ないのかと思ったら、SDKのサンプルがあるから、となっとくした
SDKのサンプルで必要十分だとは思うけど、
decoder_example.c なんかは、読みずらいコードだとおもたのは俺だけ?
while ループ重ねてるとこなんか、パッと見て何やってるのか把握できんかった...
とは言え
>>405 よ
皆が言うように、もうちょっとSDKのサンプル眺めて格闘してみれ!
413 :
デフォルトの名無しさん :04/01/04 14:35
というか、サンプル実行したんですが何も起きないんですよ 現れたDOSに何を打ち込めばいいんですか?
Ogg以前にまだ早いと思うよ・・・プログラミングの方しっかり覚えた方がいい
415 :
デフォルトの名無しさん :04/01/05 01:58
いや もうプログラム大分やったから大丈夫 ただ英語に弱いから読めんのですよ あのサンプル実行したらどうなるの?
>>415 標準入力から入力されたOggVoribsを、リニアPCMに変換して標準出力に出力する。
英語が読めなくても、ソースコード読めば普通に分かるはずだが?
/´ ̄ ̄ ̄`丶-‐z__
>>415 / ≦、 ちょっと待て…!
,' /ニヽ、ゝ
| ,ィ/レ'\_, >`` おまいさん…
| r=| | ̄=。==~「| OggVorbis 使って何がしたいんだ?
| |ニ| | u `二´ U\
| ヾ,U __ノ┌_ \ 仮にサウンドの再生だとして、素のウェーブデータを再生する
,.| /ヽ /==-┬` ̄ プログラムは当然できているんだよな?
/ \/ ヽ u ⊂ニ.\
'" \ \ `ー┬‐r┘ / まさかライブラリ関数に OggVorbis のデータぶっこめば、
\ \_/l L_ / デコードして再生してくれるなんて考えてねーよな?
\_ \| |/ |ェェェェ|
/ |く/| | ……いや 念のためだ・・・・・。
まずsageを覚えましょうね
俺は大人しく他人のライブラリを使った。 音方面はハマるとキリがないからな。
おちゅ
421 :
デフォルトの名無しさん :04/01/31 21:19
44kのwaveはoggに問題なく変換できるんだけど 22kのwaveはoggに変換すると、終端にゴミが入る・・
見なかったことに。 文字列が終端に入ってただけだった・・
424 :
デフォルトの名無しさん :04/02/21 05:04
俺何も見てないよ
マルチスレッドの場合はやっぱりメモリ上のデータをデコードするべきなのかな・・・ 多重再生すると、ov_pcm_seekで落ちたりする・・・
マルチスレッド用の排他処理やってる?
まず多重再生の定義をハッキリさせようか。
今、DirectMusicで
ttp://www.geocities.jp/toru_website/index.html を参考にして作ってて、メモリ上のデータを全部デコード
してから再生っていうのはコールバック使って出来たんですよ。
んだけど、これだとメモリは大量消費するわ、
デコードするのに時間かかるわでBGMとしては
使いにくいんッスよ。何とかストリーミングでやる方法って
ないもんなんですかね?
(ちなみにここのサイトの掲示板にも同様な質問が
過去ログに投げられていたけど、解答は無かったんすよ…、)
読み込みタイミングでov_pcm_seekとかを使ってシーク、 ov_readのlengthパラメータで読み込みサイズ指定。 これ使えば後は普通にWAVと同じ感覚でストリーミングできるハズ。
>>429 ふーむ、読み込み方は理解できるんだけどな…。
ずっといろいろ調べてみたけど、
よく考えたらDirectMusicでなきゃいけないことって
ないんで、やっぱDirectSoundでやってみるよ。
ストリーミング。
431 :
SDLって何かの薬物? :04/02/28 22:24
いきなりの教えて君ですが,失礼します. で,Dev-C++ 4.9.8.7使って,OpenALとvorbis使ったプログラム作ってますが, デバッグできません.なぜ?どなたかお助けを... OS :WinXPPro IDE:Dev-C++ 4.9.8.7 CC :g++ 3.2 gdb 5.1.1 lib:SDL 1.2.6 OpenGL OpenAL 1.0 vorbis 1.0.1 SDL+OpenGLのみでコード書いてたときはgdbによるデバッグができたんだけど, OpenAL+vorbisをリンクしたらできなくなりました.
何をしたらどうなったのか書かんかい、ヴォケ
433 :
SDLって何かの薬物? :04/03/01 00:21
>> 432
// これがテスト用ソース
// ライブラリは-lvorbisfileのみ.ここ↓から取ってきてくださいな.
//
http://www.vorbis.com/files/1.0.1/windows/OggVorbis-win32sdk-1.0.1.zip #include <stdio.h>
#include <vorbis/vorbisfile.h>
int main(int argc, char *argv[])
{
FILE *file;
OggVorbis_FileoggStream;
for(int i=0 ; i<10 ; i++){
printf("i=%d\n", i);
}
ov_open(file, &oggStream, NULL, 0);
return 0;
}
434 :
SDLって何かの薬物? :04/03/01 00:24
//ちょっとだけ変だったので修正 #include <stdio.h> #include <vorbis/vorbisfile.h> int main(int argc, char *argv[]) { FILE *file; OggVorbis_File oggStream;//ここ修正しました. for(int i=0 ; i<10 ; i++){ printf("i=%d\n", i); } ov_open(file, &oggStream, NULL, 0); return 0; }
>>433-434 デバッグできなくなったってのはよくわからんけど……。
ov_open()の前にfopen()しとかないとダメだよ。
436 :
SDLって何かの薬物? :04/03/01 00:31
上のソースについて. ・ソース中ほどのfor〜printf()は単にステップ実行するために余分に書いたもの. ・ov_open(...)を書くだけでステップ実行ができなくなる.具体的には,コマンドプロンプトは出るのだが,[Debug]->[Next Step]コマンドを2回実行するとプログラムが終了してしまう. ・SDLやらOpenALやらは無関係(すまそ).libvorbisfile.aのみが原因の模様. という具合です.
437 :
SDLって何かの薬物? :04/03/01 00:37
>>435 おっしゃる通りなんですけど,ov_open()を書くだけでステップ実行ができなくなるんですよ.僕がやったのはforの部分にブレークポイントを置いてデバッグ実行したんですけど,そもそもそこにすらたどり着かない.
もちろん,Generate Debugging Information : Yes にしてますよ.(プロジェクトオプション)
それに,ov_open()を消せば普通にステップ実行はできます.
438 :
SDLって何かの薬物? :04/03/01 00:40
(追加) もともとは別のコードを書いていまして,そのコードに関してはステップ実行できないものの,通常の(デバッグでない)実行はできました.音もなりました.
ひょっとして静的ライブラリをリンクするときに デバッグ版じゃなくてリリース版リンクしてないんじゃないの? 間違ってたらスマソ
>>439 mingwで開発してるのでちょっと違うと思います.
libvorbisfile.aはvorbisfile.dllを動的リンクするので静的ライブラリじゃないし.
う〜ん,なにを調べればよいのやら
現行のMinGW 3.1.0-1(GDBは5.2.1)を導入したらうまくいきました. お騒がせしました.
音飛びしまくりだ… 逝ってくる
443 :
初心者ですが :04/03/17 01:06
全くの初心者で、これからVorbisを使おうとして、www.vorbis.comに アクセスしようとしましたが、『ページを表示できません』でした。 VorbisのSDKはもう公開してないんですか?
普通に表示されたぞ・・・
445 :
デフォルトの名無しさん :04/04/15 04:05
Oggに人の声に適した圧縮形式ありましたよね あれを使って, 簡易ネット電話作れませんか? あらかじめ親しい人(家族など)にIPを教え合って いまからかけるよーなんつってメールでもしてから利用 電話代節約 さあ漏れの子供じみたアイデアを大人の態度で罵倒しろ
netmeeting?
(´・ω・`)罵倒が中途半端だったがまあいいや
罵倒ねえ・・・
450 :
デフォルトの名無しさん :04/04/29 19:41
用件をメールに書け、と。
寂れて寂しい・・・ (´・ω・`)ショボーン
452 :
デフォルトの名無しさん :04/05/11 17:33
おまいらなんか言えよ
エロゲ用ライブラリこさえたらもうやることなくなったYO
Oggはこれ以上発展しないの?
DirectSoundでさえ、早々に進化止まったしね。 インターフェースが完成すれば、あとはアルゴリズムの最適化くらいしかないでしょ。 たぶん。
おまいらなんか言えよ
457 :
デフォルトの名無しさん :04/05/20 04:48
誰か教えてください。 なんとか、ファイルから読み込んで再生のov_open等はできるように なりました。 メモリから読み込む場合の ov_open_callbacks の最初の引数にはOggファイルのメモリに読み込んだアドレスを 入れればよいのかと思いますが、最後の引数には何を入れれば 良いのでしょうか。 どなたかよろしくご教授願います。
>>457 コールバック関数が定義されているov_callbacks構造体。
……って、あなたは何がしたくてov_open_callbacksを呼んでるのですか。
ファイルからじゃなくて、メモリに読み込んだファイルを メモリから実行しようかと・・・ ov_callbacks構造体には自分の作ったコールバック関数を 指定するのですね? って、どんなの作ればいいのかわからないのです。 サンプルソースコードとかあったらアドレス教えてほしいのですが
わかりませんでした。 勉強しなおしてきます・・・
462 :
デフォルトの名無しさん :04/05/22 16:00
会話音声を圧縮するための基本的に利用する関数を教えて下さい
スレ違い
464 :
デフォルトの名無しさん :04/06/03 17:27
はじめまして。ずいぶん遅れ馳せながらOgg Vorbisをプログラム配布やなんかに使えるかなと思って 手をつけていくうち、いろいろいじってみたくなってきました。 エンコードは蒼弓さんのaoTuV、デコードはPROJECT BEAT!さんのvorbisdec.dllでできるようになりましたが タグ編集プログラムを作ろうとして詰まってます。 タグ情報ブロックの中にはTITLE=XXXとかCOMMENT=XXXとかの文字列と それぞれの文字列の直前に4バイトのサイズ情報が並べて入っているので 試しにバイナリエディタでCOMMENTメンバに26バイト書き足し、 ファイルサイズも併せて書き換えたところ、ファイルが壊れてしまいました。 そこで、上記の壊れたファイルと、WinAmpのタグエディタでタグを同じように書き足した正常なファイルを 比較してみると、0x50バイト目から異なる部分があり、壊れたファイルでは5バイト、 WinAmpで書き換えたファイルでは6バイトの長さのブロックで内容も違っていました。 (それ以外の部分は全く一緒のようです) しかし、タグブロックサイズかファイルサイズを表しているにしては、 5〜6バイトも違っているのはおかしいと思います。 書き足したのはわずか26バイトですから・・ ネットでOgg Vorbisのタグ情報を解説しているサイトが見つけられなかったため ここに質問させていただきました。ご存知の方いらっしゃいませんか?よろしくお願いします。
公式ライブラリ使えよ
すみません。今見たらvorbis.com、復活してますね。 手を付け始めた時は落ちてたので、デコードライブラリだけでもなかなか見つからなかったんですよ。 お騒がせしました。というか、こんな早くレスが付くとはやっぱり注目されてますね。 性能もさることながら、名前がかっこよくて気に入ってますw。MP3に代わって主流になってくれたらいいですね。
>>467 肝心のお礼を言い忘れてました。ありがとうございました。
>>468 ゲームでは既に主流だよ。
有名なところだと、日本ファルコムとかセガとか。
セガだとDCのゲームなんかでも見たことありますね。 ファルコムのソフトは最近買ってないけど、ソーサリアンオリジナルはパワフルにも44kWAVでしたw ネットベースでの配布を考えたらそんな荒業はできませんが。
472 :
デフォルトの名無しさん :04/07/29 13:09
PocketPCのゲームのBGM用に使おうと思っているんだが、速度は大丈夫かね?
473 :
デフォルトの名無しさん :04/07/30 01:15
隊長!PocketPCでOgg vorbisを鳴らすことに成功しました!
474 :
デフォルトの名無しさん :04/08/01 11:56
おめでとうヽ(´ー`)ノPocketPCのOSとか開発環境ってどんななの?
OSは、Windowsのコンパクトバージョン。 環境はEmbedded Visual C++4.0(無料)。VC++6.0とそっくり。
vorbisって、C#(maneged)から使いたいときどうするの?
Vorbis部分をDLLにして、DllImportで呼び出せるようにして、Managed DirectXを使って演奏。 ファイル読み込みで独自のコードを組んだが、俺の所はこれでうまくいきますた。
>>477 C#初心者には厳しいかな・・・。
がんがってみます。
.NETはムルチメディア周りがまだ弱いからなー
.NETマルチメディア=MDXなのに、ドキュメントに乏しいし必要な知識もC++より多い。
dllの作り方もまともに解らない自分には遠い道のりです・・・。 >MDX
どうやっても漏れの作ったプログラムでは、 フリーソフトとかのogg 再生ツールと比べて音質が落ちる・・・ 再生はちゃんとできてるようなのだが、何か違うのでしょうか?
とりあえず他のデコーダと自分のプログラムでWAVファイル作ってみて 音質劣化があるかどうかバイナリチェックしてみたら。
485 :
デフォルトの名無しさん :04/10/27 20:43:25
オッグってどういう仕組みで圧縮してるの?
Oggは圧縮などしないよ? Vorbisとかと勘違いしてねえか?
おぐおぐ、おーぐぅおーぐぅ。
488 :
デフォルトの名無しさん :04/10/28 12:41:02
ボルビスってどういう仕組みで圧縮してるの?
もちろん486には答えられません :-P
RTFS
あなたの優しさで圧縮
492 :
デフォルトの名無しさん :04/10/30 00:07:48
どれくらいの優しさが必要ですか?
100優暗い
>>486 Ogg ≠ Vorbis なの!?し、知らなかった…(゚Д゚;)
Ogg>>>>>越えられない壁>>>>>>Vorbis
497 :
デフォルトの名無しさん :04/11/25 11:47:19
映像は見れて、音声が再生されないファイルがあったので 試しにoggDSをインストールしてみたのですが、音声が再生される どころか今まで見れてた映像まで再生されなくなってしまいました。 どうしてなんでしょう?誰か助けてください・・・
OOL OggDecodeMem( char *name , char **data , long bit , DWORD *size , WAVEFORMATEX *wf , long dataplace ) { FILE *fp = fopen( name , "rb" ); if ( fp == NULL ) return false; fseek( fp , datasize , SEEK_SET ); //読み込み開始位置を取得 ov_callbacks oc; oc.read_func = Oggread; oc.seek_func = OggSeek; oc.close_func = OggClose; oc.tell_func = Oggtell; OggVorbis_File vf; //ファイルの読み込み if( ov_open_callbacks( fp , &vf, NULL, 0 , oc ) < 0 ) { fclose( fp ); return false; } fseek( (FILE *)vf.datasource , datasize , SEEK_SET ); //ファイルの先頭位置参照しちゃってるので足さないと駄目?(数値が変わらず・・・) vorbis_info *vi = ov_info( &vf , -1 ); 以下デコード処理(ov_readで動いたやつをそのまま引用) //コールバック関数 size_t Oggread (void *ptr, size_t size, size_t nmemb, void *datasource) { fread( ptr , size , nmemb , (FILE *)datasource ); return size * nmemb; } int OggSeek (void *datasource, ogg_int64_t offset, int whence) { int seek; seek = fseek( (FILE *)&datasource , (long)offset , SEEK_SET ); return 0; } int OggClose (void *datasource) { fclose( (FILE *)datasource ); return 0; } long Oggtell (void *datasource) { ftell( (FILE *)&datasource ); return (long)datasource; } 助けてください orz
って質問文書かないでどうする俺 orz ファイルの1部分だけ読み込もうと検討中 過去ログを参考に書いたのだけど・・ 再生されず・・ だれかたすけて(つд`)
ogg vorbis再生以前の問題。 C 言語の使い方が妖しいんではないかね >fseek( fp , datasize , SEEK_SET ); //読み込み開始位置を取得 datasizeって? >seek = fseek( (FILE *)&datasource , (long)offset , SEEK_SET ); return 0; >ftell( (FILE *)&datasource ); return (long)datasource; は datasource のまえに & がついてるけど間違いじゃない? >ftell( (FILE *)&datasource ); return (long)datasource; ファイル上の位置返すのに datasource 返してどうするよ ドキュメント読んで書き直せ
結構怪しいです・・・ (特にFILE系) アーカイブ化したファイルを再生させようとしてって言葉がぬけてました(つд`) datasize って言うのは再生したいファイルがある アーカイブファイルの先頭位置から何byte目にあるかです(未圧縮) デバッグ使ったところ Oggtell >>この関数使わず OggSeek >>(FILE *)datasource に変更 if( ov_open_callbacks( fp , &vf, NULL, 0 , oc ) < 0 ) ここでfalseとなる (FILE *)&datasourceだと落ちないけど結局 OggVorbis_Fileのデーターが微妙におかしいので動かず いろいろ試行錯誤中・・
typedef struct xFile { ogg_int64_t dataOffset; FILE *filePtr; } xFile; static inline FILE * FilePtr(void *dsource) { return ((xFile *)dsource)->filePtr; } static inline ogg_int64_t DataOffset(void *dsource) { return ((xFile *)dsource)->dataOffset; } size_t readfn (void *ptr, size_t size, size_t nmemb, void *dsource) { return fread(ptr, size, nmemb, FilePtr(dsource)); } int seekfn (void *dsource, ogg_int64_t offset, int whence) { return fseek(FilePtr(dsource), offset + (whence == SEEK_SET ? DataOffset(dsource) : 0), whence); } long tellfn (void *dsource) { return ftell(FilePtr(dsource)) - DataOffset(dsource); } int closefn (void *dsource) { return fclose(FilePtr(dsource)); } ... xFile xf; xf.dataOffset = datasize; if (!(xf.filePtr = fopen(name, "rb"))) return false; if (fseek(xf.filePtr, xf.dataOffset, SEEK_SET) == -1) return false; if( ov_open_callbacks( &xf , &vf, NULL, 0 , oc ) < 0 ) ... /**/ こんなんで充分だろ。ちゃんと確認してないけど。
試してきます λ...
long tellfn (void *dsource) { return ftell(FilePtr(dsource)) + DataOffset(dsource); } かな・・・ やっぱり if( ov_open_callbacks( &xf , &vf, NULL, 0 , oc ) < 0 ) ここでとまる(数秒間読み込んでる?)・・・・ なんでだろう・・
Seekをもっとちゃんと組め。 whenceがSEEK_ENDで呼ばれた場合の移動すべき位置をよく考えろ。
int OggSeek (void *datasource, ogg_int64_t offset, int whence) { long succes; //whenceがデータの最初ならば0 //whenceがデータのそれ以外ならばoffset値 //whenceがデータ終端の場合は? //return = fseek(FilePtr(datasource), offset + (whence == SEEK_SET ? DataOffset(datasource) : 0), whence); switch( whence ) { case SEEK_SET: succes = fseek(FilePtr(datasource), offset + 0, whence); break; default: succes = fseek(FilePtr(datasource), offset + DataOffset(datasource) , whence); break; case SEEK_END: succes = fseek(FilePtr(datasource), EOF , whence); break; } return succes; } こんな感じにしてみた 結局 ov_open_callbacks>OggSeek(default)OggLead> 後OggVorbis_Fileに値が入ってないで落ちますが・・・ (つд`)
EOFがあるまで全部読んでるみたいだから部分だけの呼び出しはどこで定義してるんだ・・
ov_open_callbacks( &oggf , &vf, NULL, 0 , oc ); ↓ int OggSeek (void *datasource, ogg_int64_t offset, int whence) whenceが1?(0じゃないと駄目なのでは・・・) ↓ Oggread (void *ptr, size_t size, size_t nmemb, void *datasource) ↓ ov_open_callbacks( &oggf , &vf, NULL, 0 , oc ); に戻ってくるもvfに値は入らず・・・ Oggread デ読み込んでるのは何か8500byteだからファイルの終端とかまったく関係ないか
>int OggSeek (void *datasource, ogg_int64_t offset, int whence) >whenceが1?(0じゃないと駄目なのでは・・・) offset = 0 で whence = 1(SEEK_CUR) でしょ? streamがseekableかどうかのチェックをしてるだけ。 > ov_open_callbacks( &oggf , &vf, NULL, 0 , oc ); >に戻ってくるもvfに値は入らず・・・ > Oggread デ読み込んでるのは何か8500byteだからファイルの終端とかまったく関係ないか データがおかしくてエラーになってるんじゃないかな。 最初に自分でfseekしたその位置から、 目的のOgg Vorbisがちゃんとはじまっているか確認してみたほうがいいかも。
typedef struct CBDataStruct { unsigned long offset;unsigned long size;FILE *file; } CBDataStruct; static size_t read_func(void *ptr, size_t size, size_t nmemb, void *datasource) { return fread(ptr,size,nmemb,((CBDataStruct *)datasource)->file); } static int seek_func(void *datasource, ogg_int64_t offset, int whence) { const CBDataStruct * const cbds = (CBDataStruct *)datasource; switch (whence) { case SEEK_SET:return fseek(cbds->file,cbds->offset + (long)offset,whence); case SEEK_CUR:return fseek(cbds->file,(long)offset,whence); case SEEK_END:return fseek(cbds->file,cbds->offset + cbds->size + (long)offset,SEEK_SET); } return -1; } static int close_func(void *datasource) {return fclose(((CBDataStruct *)datasource)->file);} static long tell_func(void *datasource) { return ftell(((CBDataStruct *)datasource)->file) - ((CBDataStruct *)datasource)->offset; } static ov_callbacks ovcbs = {read_func,seek_func,close_func,tell_func}; int main(void) { FILE *file;long size; if (!(file = fopen("test.ogg", "rb"))) return 1; fseek(file,0,SEEK_END);size = ftell(file);fseek(file,0,SEEK_SET); CBDataStruct cbds; cbds.file = file;cbds.offset = 0;cbds.size = size; OggVorbis_File ovFile; if (ov_open_callbacks(&cbds,&ovFile,NULL,0,ovcbs) != 0) {fclose(file);return 1;} ov_clear(&ovFile); return 0; }
すごくありがとう 。*゚*・(つд`)・*゚*。 とりあえず再生までやっと行けました。*゚*・(つд`)・*゚*。 SEEK_SETの部分の流れがよくわかりました*゚*・(つд`)・*゚*。 そして謎バグがorz ただ単にファイル連結してるんだけど 1.wav 2.wav 3.ogg 4.wav 5.ogg 6.ogg っていうのをアーカイブ化して all.sndとかにしたら 5.ogg 3.ogg が鳴らないorz 明日起きてから考えよう・・ 何はともあれ大感謝です
$ env CC="gcc -mno-cygwin" CFLAGS="-O2" \ sh configure --disable-shared --enable-static … $ make Making all in src make[1]: Entering directory `/usr/home/taka/libogg-1.1/src' source='framing.c' object='framing.lo' libtool=yes \ depfile='.deps/framing.Plo' tmpdepfile='.deps/framing.TPlo' \ depmode=gcc3 /bin/bash ../depcomp \ /bin/bash ../libtool --mode=compile gcc -mno-cygwin -DPACKAGE_NAME=\"\" -DPACKAG E_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT= \"\" -DPACKAGE=\"libogg\" -DVERSION=\"1.1\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H= 1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHA VE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HE ADERS=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -I . -I. -I../include -I../include -O20 -fsigned-char -O2 -c -o framing.lo `test -f 'framing.c' || echo './'`framing.c gcc -mno-cygwin -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\ " -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"libogg\" -DVERSION= \"1.1\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_ H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 - DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DSIZEOF_SHORT=2 -DSIZEOF_IN T=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -I. -I. -I../include -I../include -O20 -fsigned-char -O2 -c framing.c -MT framing.lo -MD -MP -MF .deps/framing.TPlo -o framing.o In file included from ../include/ogg/ogg.h:24, from framing.c:25: ../include/ogg/os_types.h:38:26: _G_config.h: No such file or directory In file included from ../include/ogg/ogg.h:24, from framing.c:25: ../include/ogg/os_types.h:39: error: parse error before "ogg_int64_t" …
>>515 ../include/ogg/os_types.h:38:26: _G_config.h: No such file or directory って出てるでしょ。
517 :
デフォルトの名無しさん :05/01/24 02:04:53
どうも、再生できないファイルがあって 調べたらogg_vorbis_1 (0x674f) Ogg Vorbis が入っていないと でたんですが、どこに行けば落とせるんでしょうか? 教えてください
519 :
デフォルトの名無しさん :05/01/24 02:41:48
解決しました。どうも失礼しました
誰か・・・・DirectSoundでOggVorbisのストリーミングサンプルをUPしてください 以前UPされていたんですが、リング切れしてました あと、OggVorbisをメモリに丸ごと読み込んだとき、WAVEヘッダを作り音声データの前に書き込んだんですが これでもちゃんと再生できたのはなんででしょうか これができるってことは、DirectSoundではWAVの読み込みはヘッダ付でも可能ってことですかね? う〜む疑問
> WAVEヘッダを作り音声データの前に書き込んだ データとして再生しても認識できないほど短いから。に一票
Ogg と Vorbis で2つのライブラリに分かれていますが、 それぞれのライブラリは何(どんな処理・役割)を担当してるんでしょうか?
OGGとは、この前友人に送って「再生デキネェゾボケ」と言われたファイル形式です。
たしかOggがコンテナ、Vorbisが音声圧縮の形式
Oggはかなり音良いんで満足。 itunesが完全対応したら最強だと最近感じる。 itunesの音楽ファイルの管理方法が好きなだけだけど。 Ogg q6くらいでもう音としては十分っぽい
527 :
デフォルトの名無しさん :05/03/09 13:10:37
今更ながら◆BHHOtghNS6さんが上げてくれた ソースを参考に色々やっているんだが(ダウンロードしたのは大分前ですが) シーク関係にバグがあるみたいです… ovSeekDecode( HOVDECODE hDecode, unsigned long time ); 関数ないでseekPosの値は正しいように思えるんですが 実際にシークしてから再生すると指定した時間とズレがあるみたいです 俺に直せるかな。。。
ガンガレ
なんとか直りました… ドキュメントが英語しかなくかなり苦労しました バグが取れたのは勘ですね…(奇跡) ◆BHHOtghNS6さんのovdecode.cpp static ogg_int64_t __ovSeekBlock( LPOVDECODE pDec, ogg_int64_t seekPos ) 関数内の blocksize = vorbis_packet_blocksize( &pDec->info, &pDec->packet ) >> 2;/* 4で割るみたい? */ ↓ blocksize = vorbis_packet_blocksize( &pDec->info, &pDec->packet ) >> 1; これで修正できました。 色々なビットレート等で試していないのでここの修正だけだと ダメな場合があるかも知れませんが、今のところ私の環境では正常っぽいです
古代にソースが流れてしまってるから報告されても……。
531 :
デフォルトの名無しさん :05/03/13 12:17:41
OGGage
おっがげ
533 :
デフォルトの名無しさん :05/03/14 15:31:47
OGG Vorbis、使ってみたいけど殆どの人が聴き方知らないから使えない
/ ̄ ̄ ̄ ̄\ 【関西を代表するキモヲタ:風俗嬢ストーカー奈良ちんばの中尾】 ( 人____) |ミ/ ー◎-◎-) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ (6 (_ _) ) / 奈良に住んでる、ちんばの中尾でーす。(4月生まれ35〜40歳) | | ∴ ノ 3 ノ < 風俗嬢にストーカーして個人情報調べて本番強要する鬼畜でーす。 | ノ\_____ノ、 | サバゲーは京都THE ROCK、大阪BBGUN愛用でPCなんかも趣味。| ( * ヽー--' ヽ ) | 大阪市内の会社勤めで新大阪ムニュDX(プラチナ会員)、 | (∵ ;) ゚ ノヽ ゚ ):) | 日本橋クラブなみだの風俗嬢中心に狙ってまーす。 | (: ・ )--―'⌒ー--`,_) |クラブなみだの巨乳嬢ユカちゃんがオキニでーす。 | (___)ーニ三三ニ-) | TOYOTA RAV-4が愛車でauのエリクソンの携帯使ってまーす。 | (∴ ー' ̄⌒ヽニ3 ) | 片足ビッコ引いてるから、神!ちんばの中尾と呼んでねー。 / `l ・ . /メ / \__________________________/
536 :
デフォルトの名無しさん :05/03/14 22:55:55
↑荒らすな
↑オマエモナー
538 :
デフォルトの名無しさん :05/03/15 01:02:35
↑相手するな
539 :
名前は開発中のものです。 :05/03/15 03:01:35
540 :
デフォルトの名無しさん :2005/03/24(木) 13:02:54
bccでスタティックライブラリにコンパイルしたんだけど vorvisfile.libで外部参照errnoが未定義と出ます ソースを見てもerrno.hはちゃんと犬ルー度しているようです まさかstd::つけなきゃいけないって事もないだろうし(ogg自体はCで書かれているから) なぜこのエラーが出るのかわかりますか
リンク時のエラーなら犬ルー度は関係なのでは?
むむむ。。。
errnoはマルチスレッドかそうでないかで変数もしくは関数に変化するので まちがったライブラリをリンクしているのでは。
544 :
デフォルトの名無しさん :2005/03/26(土) 00:23:29
545 :
デフォルトの名無しさん :2005/07/11(月) 19:00:11
ここ最近パッキングしたoggを再生させようとしているんですが
>>513 と同じになってしまいます。
やり方は
>>512 を参考にしやりました。
seek_funcのとこがおかしいような気がするんですが
分かる人いませんか?
546 :
デフォルトの名無しさん :2005/07/27(水) 21:43:11
あのー、数年前に出てたネタですが、dll使わずに BCBでobj吐かせてDelphiで呼ぶっての 出来たんだけど、ソースいる人いますか? 誰かエロイ人、コンポーネント化してくらはい。
素直にVC使っとけ
549 :
デフォルトの名無しさん :2005/07/28(木) 03:12:07
オッジボルビス
なかなか息の長いスレになったなぁ・・・
たまにしか息しないけどな。
ワロタ
ネー
板を立てたときは誰も相手にしてくれずにすぐ消えると おもてたよ。
OggVorbisのタグの文字コードはUTF-8が仕様なの?
そうね
古いエンコーダだとSJISでタグを作るけど よさげなSJISとUTF-8の区別方法ない?
やっと.NETへの移植がオタワ System.IO.Streamをソースにしたいよな〜〜とか考えてたら偉い大変になった…
559 :
558 :2005/12/08(木) 16:03:15
ところで、COMと.NETで倍くらいの速度差があるので重い場所を調べてたら、 コールバック関数に渡される読み込みサイズが常に1で衝撃を受けた… その度にアンマネージとマネージで通信してたらそりゃ遅いわな。
>>559 ぁー、1文字getの関数を純粋仮想にしておいて、
多文字get関数を1文字get関数でデフォルト実装、
っていうタイプの抽象クラスは結構見かけるような。
「純粋の1文字getだけ実装すればあとはデフォルトで実装が与えられますよ。
効率気にする人は多文字getとかもオーバーライドしてね」っていう。
そんなかんじじゃね?
>>560 言われて気になってしまってソース探してみたんだけど
vorbisfile.cでこんな呼び出ししてた。
long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);
まさかと思ってfreadでgrepしたら、
案の定ov_openを使った場合はread_func = freadになってました。
つまり読み出しバイト数は第2引数*第3引数だったらしい…orz
今までread_funcの第3引数の意味が分からなくて
第2引数のみでしてたから1バイトずつ読み込んでた。
つーかもう少しコールバックのドキュメントちゃんとしてくれないかなぁ
ってかもしかして書いてある?私の見落としかな。
>>561 "Callbacks and non-stdio I/O"
あれ、どっかに標準Cライブラリのf〜と大体同じ、とかって書いてなかったっけ? あと意味が分からないまま使うのもどうよ。 そして何故他の引数の意味は分かったのか。
>>563 いやなんかvorbisfile.hみて、このパターンはなんとなく
ptrは読込先でsizeは読む長さでdatasourceは最初に指定したポインタかなー
って感じで適当に作ってたら上手く読み込めてしまったので…
確かにドキュメント読んだらCライブラリのとほとんど一緒みたいなこと書いてありました。
やっぱちゃんと読まないと駄目だな
565 :
デフォルトの名無しさん :2005/12/20(火) 11:34:00
OggVorbis-win32sdk-*.zipってもう配布されてないんですか? 自分でビルドしろってことかな。('A`)マンドクセ もういい今年のゲームは旧バージョンをリンクしてやる。
デコードだけだったら特にデメリットはなかろうな
567 :
デフォルトの名無しさん :2005/12/21(水) 19:16:52
オッグに時代を感じます
>>565 もっと努力しろなぁ〜。ショボすぎ。
ビルドくらい簡単だぞ。
VCならヘッダをコピーしてwin32フォルダの
プロジェクトを開いてビルドするだけ。
>>568 今は一分一秒も惜しいので安全策を取った。年明けにがんがる。
>>569 いいわけは聞きたくないな。
そんなに急いでいるならカキコしてる暇もないだろ
お前の言う「努力」って、「2chにカキコできるならできるはず」みたいに 話をもっていける程度のものなのかw
>>570 > そんなに急いでいるならカキコしてる暇もないだろ
2chは別時間
どうせ冬コミ合わせだろ? まだ作業してるようじゃ手遅れだな
俺もそう思います。on_
OggVorbis-win32sdk-*.zipが配布されなくなったのって コンパイラによる影響を受けるせいだと思った。 FILE構造体がgccとvcでは違うので問題が生じるし CPU別最適化をかけることができない。 標準ライブラリの機能をどれだけ外部DLLに振り分けるかも問題になる。 それならばそれら全てを開発者の管理にまかせたほうがいいと考えたのでは?
単に作業者がいないだけ。。。 vorbis-tools win32 バイナリも配られなくなったでしょ。。。 一時期は月例ミーティングでやらないと的な話が出てたけど、最近は完全放置状態。
577 :
デフォルトの名無しさん :2005/12/24(土) 19:21:14
音声が出ません。誰か教えてください。真空波動拳で次のように出ました。 576x432 24bit Divx 5.x(DivX503b1328/DivX503b1328)30.00fps 161512f ogg Vorbis(mode3+)48.00kHz 16Bit 2ch 128kbps
スピーカが壊れてんじゃないの。
サイズが小さくなるって理由でmode3を使うやつがバカなんだよ。 本質を理解できないやつはmode3で作るなよと。 577もオレもスレ違い。
mode3とかいうのはaviに関するものかvorbisに関するものか、どっち? それさえも分からん。
スレ違いって言ってるのがわからんのか
今からプログラムでvorbisACMを使う人はいるのかな? 何気に本家のsvnに登録されてますね。
わざわざACMにせんでもなー
VorbisACMは日本人作者の物と海外の別プロジェクトで2種類なかったっけ?
ACMの仕様上VBR系は厳しいでしょ。
586 :
デフォルトの名無しさん :2006/01/15(日) 22:10:03
vorbisの扱いについてネット上で資料を探してもほとんど見つからないんだけど、 音声通話アプリのようなリアルタイム性が必要なアプリでvorbisって使えそう?
588 :
デフォルトの名無しさん :2006/01/15(日) 23:54:48
日本語の資料って言いたかったけどそれはいいとして、 speexっていうのがいいみたいに書いてあるけど これに至っては自分のプログラムに組み込むのは至難の技だろうな… リアル厨房の英語力ではきつい。 でも面白そうなんで調査してみる。
リアル厨房のおれがきましたよ。 厨なら英語の資料くらい読めよ。 日本語に頼るなんてバカじゃない? プログラム組むなら、英語できてあたりまえ 日本語に頼っていいのは消防だけだ。
たしかにどっちもめちゃくちゃ中学生っぽいアホトークではある。 両者本物だな。
ヒント:2chやってるのはみんな中学生
592 :
デフォルトの名無しさん :2006/01/16(月) 16:08:19
__ __ n _____ _____ ___ ___ ___
| | / / / / / | /__ __/ [][] _| |_| |__ _| |_
| |. / / /⌒ヽ/ / / ̄ ̄|. l / / | _ | |_ レ'~ ̄|
| | / / ( ^ω^ ) / /. / / | |___  ̄| | / / / /| |
| | / / ノ/ / ノ /  ̄ ̄ / \__| | |  ̄ /_ / | |_
| |. / / // / ノ / / ̄ ̄ ̄ |_| |__| \/
| |/ / ⊂( し'./ / /
|. / | ノ' / / ニュー速VIP
| /. し' ./ /
http://ex14.2ch.net/news4vip/  ̄ ̄ ̄  ̄ ̄
1つのoggファイルに複数の曲が入ってる場合がありますが (単純にファイルを連結しただけ?) これを普通のoggファイルと区別する方法はないでしょうか? 曲別のシリアルがOggSパケットに入ってるならできそうですが…
ファイルを結合したんじゃなくて もともと2曲を1ファイルとして作成したファイルじゃないという根拠は? てか、そんなファイルどこにあるの?ww
>>594 意味ワカラン。
日本語勉強してこい。
おまえも中学生か。
>>594 ひとつの曲として作ったものなんじゃないの?
ってことだろ?
日本語としては十分何を言いたいのか伝わった。
>>595 が勉強したほうがいい。まぁ、十中八九遊んでるだけだと思うが。。
597 :
デフォルトの名無しさん :2006/01/17(火) 07:47:07
まぁ、本人なら何が言いたいのかわかるのは当然だよなw
でもそんな擁護をしても、
>>594 は日本語になっていません。
俺は
>>594 が何を言ってるのかはっきり理解できるのだが。
何を言ってるのかはわかるが何を言いたいのかがわからない
>>594 を読みやすく変更してみた。
> ファイルを結合したのでは無く、
> もともと2曲を1ファイルとして作成したファイルでも無い根拠は?
> てか、そんなファイルどこにあるの?ww
意味ワカランチン
> ファイルを結合したのでは無く、
> もともと2曲を1ファイルとして作成したファイルである根拠は?
> てか、そんなファイルどこにあるの?ww
こう言いたかったのか?
ヨクワカランチン(・ω・)
読解力欠けまくりのゆとり教育の犠牲者がいますね。
だからさー、読み手を煽る前に594の糞テキストぶりに少しは触れておかないと、 本人なのが丸わかりなんだってば。不自然で。 頭わるいなあ・・・。
本人がきましたよ。 日本語って難しいね。 小学生だから許してくれ。 日本語よりCとかC++とかのほうが簡単だよね。 おれ、コンピュータのソースになりたいって 何回も思ったけど、 いつも母さんに「バカじゃないの?少しは小説でも読みなさい」 って言われるんだ。 おれ、コンセントからケーブル抜いて 窓からCPU投げ捨てたほうがいいかな? さすがにPCそのまま投げたら、下にいる人が危ないよね。 最近、まなちゃんにも振られたし。はぁ。。。 いいさ。もうoggで遊ぶのやめるよ。 じゃぁ。みなさん、さようなら。
604 :
593 :2006/01/17(火) 19:08:44
自分にとってはどうでもよい方向に話が進んでますね… >(単純にファイルを連結しただけ?) なぜに594がここに突っ込んでくるか理解しがたいですが。 (単純にCOPY /B X.OGG+Y.OGGで作れると聞いた事がありました。) 念のため、説明しますが私は「WAVE+WAVE -> エンコード」ではなく (WAVE->エンコード)+(WAVE->エンコード)のoggの話をしています。 SDKのVorbisFileを使わないデコードサンプルでは oggの複数曲に対応しているので、そのような仕様もあるのです。 さて、本題に… 調べてみたらOggSパケットの中にシリアルが含まれるようなので 1曲と複数曲は区別できそうです。 しかし、複数曲oggに何曲入っているかを知るのに 全パケットを調べていたら効率が悪いです。 何か良い解決策が無いものかと。
oggパケットのサイズなんて知れてるんだし、 最初と最後のシリアルを比べて、違ってるなら適当に バイナリサーチ的にチェックしてけば?
607 :
593 :2006/01/17(火) 20:14:06
複数の曲が一つになっていると言う事は10分程度では終わらずに 1時間以上の可能性もあります。 約40MB(40分、128kbpsとか。)のoggでパケットサイズが4KBで 計算すると10000回の処理が必要になります。 過去のoggはパケットサイズが4KB未満でしたが 現在は4KB以上のパケットが生成されるのでこれよりは 少なくなるとは思いますが… ファイルチェックにかかる時間を減らしたいんですよね。
609 :
593 :2006/01/18(水) 18:36:11
時代遅れではありますがMHz-PCがターゲットですから。 10000回の処理はともかくファイルリードがネックになります。 デコードするだけなら初期化(パケットチェック)が長くても 構いませんが、プレイヤだったら次の曲の再生に2〜3秒も 待たされたら嫌になります。 vorbisfileのソースを見ると最初と最後のシリアルを 比較して違ったら複数曲oggと判別していますね。 その後、パケットの全検索を行っているようなので こちらで測定すれば大体の時間は把握できそうです。
よくわかんないけど、どっちにしろファイル全体をチェックするしか方法がないんでしょ? なら出来る範囲でどうにかするしかないんじゃないの? でも普通の人はOGG1ファイルに複数曲詰め込んだりしないでしょ? 俺はその場合は1ファイル=1曲という仕様とするのがベターだと思うが。 どうしても待ち時間を短くしたいなら先読みしておくか別スレッドで処理するかしかないと思う。 でなければ、ファイルの先頭からシリアルが連続していることを前提条件に処理するとか。
よくわからないなら口出しするな。
>606 にあるようにov_streamsじゃダメ? 連結ogg作ってやってみたら2って値が帰ってきたよ
613 :
593 :2006/01/18(水) 22:47:31
>>612 vorbisfileは使ってないのです。
ただ、vorbisfileが対応しているのは知らなかったので
ソースを解析して非常に参考になりました。
パケットサイズを調べましたが最大サイズは255*255=65025の
ようなので4KBは間違いだったようです。
ヘッダも26+(255未満)バイトを読み込めばパケットサイズが
取得できる事がわかったのでシークを使えば多少は
マシになるかなと思いました。
これから実際に検証したいと思います。
> ヘッダも26+(255未満)バイトを読み込めばパケットサイズが > 取得できる事がわかったので 既に知ったうえで書いてるのだと思ってたよorz
>>615 ぎゃはは。頭わるいんじゃね?
だれもよくわかってるなんて言ってない。
もっとましなレスしろよ
618 :
593 :2006/01/19(木) 23:01:57
パケットカウンターを作ってみました。 中島美嘉−雪の華(341秒)をオフィシャル -Q4 で エンコードしたoggを測定しました。 パケットサイズは4100〜4400バイトでパケット数は1204でした。 仕様では約64KBまで使えますがほとんど4KBしか使わないようです。 速度的には待ちが数秒発生するのでなんとかしたいですね…
>>617 で、誰がよくわかってるなんて言ってるの?w
>>620 で、誰がよくわかってるなんて言ってるの?w
なにこの一連のレス。人工無能のテストだったらよそでやってくれ ところでゲームとかに簡単に使えるvorbisが再生できるライブラリでおすすめが ありますすか。 VOXとかあるようだけどどれがいいのかわからない。 あともしこれから作るとしたらどういう機能が欲しいですか。
>>622 作っても誰も使わないでしょ。VOX使ったゲームなんてある?
それなりに技量がある奴なら自分で実装してる。
>624 HSPのゲームなんかでたまに見かける。
HSP…orz
>>622 HSPスレはたくさんあるからそっちに逝ってくれ
>>622 1行目のせいで、まともなレスが返って来ないね……
別に一行目のせいじゃなかろう
結局、最後の1行が言いたかっただけだろ
気に入った! 家に来て妹をファックしていいぞ!!
Montyに言ってこいよ
気に入った! 家に来てMontyをファックしていいぞ!!
おまえんちかよwww
vorbisのコメントの読み出しは出来たけど書き込みってどうやったらいい?
可変長でファイルの先頭にあるから書き込みは難しい。 文字列が短くなるならそれなりにできるだろうけど。 ライブラリかツールのソースで何かなかったっけ?
そりゃあるさ
またおまえか。知らないくせに。 よそに逝ってくれ
知らないもなにも、ちゃんとそれらの処理をしてくれるツールが存在し、 なおかつちゃんとソースも公開されてるじゃん。 釣りなのかもしれんが、この程度の事でそんな低レベルな事書いてても ちっとも面白くないって。
恐らく、探せないからムキになってるんでしょう。 で、ゴネれば誰かが優しく提示してくれると思っているのでは :-)
いいんだよ多少使い方が面倒な方が。誰でも出来ちゃうとつまらんだろ それでもvorbisは簡単な方だ(つーか良く出来てる)とは思うけど
コメントの読み書きなんて、ライブラリで面倒みてくれるじゃない。
643 :
デフォルトの名無しさん :2006/02/02(木) 04:30:49
会話録音ってボルビスより適任のがあったよね?
speex?
GSM?
コンパイルして実行したらエラーで強制終了されます>< #include <vorbis/vorbisfile.h> int main(){ OggVorbis_File vf; ov_callbacks oc; ov_open_callbacks(stdin, &vf, NULL, 0, oc); return 0; }
APIドキュメント読め、阿呆(>_<)
ov_read呼ぶたびにメモリ使用量がじわじわと増えていって +1MBになったあたりで一気に解放される。 これって正常? libogg 1.1.3 libvorbis 1.1.2
649 :
デフォルトの名無しさん :2006/03/30(木) 20:07:07
なんでイマイチ流行らないの? とっととmp3をくちくして下さい><
なぜって、mp3が浸透しすぎてるからじゃない? PC触ったことない友達も「mp3プレイヤーっていいの?」って聞いてきたし。 「oggプレイヤーっていいの?」の方が言い易いのに。。
oggの拡張子をmp3にしてしまえ!
mp3だと再生のロジックが単純だから、携帯オーディオ等での消費電力が小さいってホント?
うそ mp3の消費電力がちっちゃいのは専用に設計されたハードウェアが乗っかっているから
654 :
デフォルトの名無しさん :2006/05/04(木) 21:43:45
GOM Playerは使っちゃだめだよ〜ん。 Ogg Vorbisコーデックを使ってるファイルを、手軽に再生できるのが、 GOM Player。(↑ここが落とし穴) どっこい、GOMには、、、 創価の人に聞けば。。。 いや、、、うーん、、、。 となる。
655 :
デフォルトの名無しさん :2006/05/05(金) 20:49:23
oggも専用設計のチップを搭載するんだ!
DirectXでストリーミング再生するサンプルソース どっかにないかな?
657 :
デフォルトの名無しさん :2006/06/13(火) 23:00:25
普通に再生すら出来ない俺ならいますよ
おれはわかってるし出来るからもういいや(・∀・)
661 :
デフォルトの名無しさん :2006/07/16(日) 04:41:18
Oggはもうこれ以上発展しないの? ipodで使えないのが痛すぎる
5年以上経った今でも普及してないってことだからなあ
サンプル読んでも分からない俺はどうしたらw SDKどこにあるん?
665 :
デフォルトの名無しさん :2006/07/17(月) 10:49:51
C++Builder6 のポトペタメディアプレーヤーじゃogg使えないみたいだけど どうしたら使えるようになるますか?
codecs
一般に普及してないってだけでしょ? ゲームメーカは使ってるじゃん 一般の人はiPodとかだろうし、MP3で困ることもない
668 :
デフォルトの名無しさん :2006/07/17(月) 23:03:48
オッグのほうがやや音質いいキガス
拍子を意識して大きな音を大きくしてるだけのような気もする
Javaで手軽に使えないの? AudioClipでささっととって使いたかったのだけど無理そうだ
671 :
デフォルトの名無しさん :2006/08/25(金) 00:11:16
手軽に使えるよ。 AudioClipだと制限が大きいのでどの道実用にならないと思うけど。
他の音声フォーマットと比べてどんなメリットがあるの?
金
金が貰えるの?ならつかいたいかも
釣れますか。
ov_pcm_totalでトータルのサンプリング数を取得しようとしているのですが、0が帰ってきてしまいます。 何か原因になりそうな事ってありますか?
で、日本語のマニュアルはないわけ?
>>678 サンクス。あんた優しいね。
俺みたいなHSP厨に答えてくれるとはw
なにその敗北感を覚えたときしか書かれることのない無意味なレス
>ちなみに、8ビットにしか変換できない Vorbis ファイルが存在したら、対応できません。 ヴァカまるだし
なんでそんなに悔しそうなの?
なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの? なんでそんなに悔しそうなの?
687 :
デフォルトの名無しさん :2006/12/02(土) 00:12:14
>>676 すげーかめだけどov_openで横着するとしゅとくだきねーきがするぞ
ov_open_callbackでやったらふつーにとれたお
11個前の書き込みに反応しただけで亀になってしまうのが Vorbisの悲哀をよく表してるよな・・・。
689 :
デフォルトの名無しさん :2006/12/02(土) 10:54:30
だな
問題も何もなく平穏に使われてるからじゃね?
ゲーム音楽に使ってるけど何の問題も発生しなかった。
ネットの資料だけで、問題なく組み込めるしなあ このスレの存在意義って
俺の存在意義って
694 :
デフォルトの名無しさん :2006/12/09(土) 23:31:17
しまった、ageちまった
VB.NET2005で使いたいが・・・ できるのかこれ? せめてかる〜いサンプルでもあれば・・・
>>696 意味不明なライブラリはC++で作ったdllをVBから呼び出せばいいじゃない。
>>648 と同じ現象?
liboggのos_types.hでmallocとかを自分の関数に換えて
メモリリーク調べるようにしたら、イパーイリークしてるんだけど…
教えて!
>>687 ov_openは中でov_open_callback呼んでるだけだから一緒だと思うが。
FILEでのファイル操作がちゃんと出来るようにlibvorbisfileをコンパイルしてやれば問題無く使える筈。
700 :
デフォルトの名無しさん :2007/06/30(土) 20:27:48
age
701 :
デフォルトの名無しさん :2007/07/30(月) 21:53:22
vorbis 1.2.0 release age(遅い?) だが、サイトからのダウンロードリンクが辿れないよ svnからは取れるけども. 一体何だろう...マズいバグでもあったりしたのかな そうそう、windows環境ではov_openは非推奨とのsvnログがあるね(r13289) ov_open_callbacks(fd,vf,NULL,0,OV_CALLBACKS_NOCLOSE)を使えとある 俺は最初からov_open_callbacks使ってたので無問題でしたが.
svnのログ見てないけど、Windowsだと処理系によって FILE構造体に互換性がないからって話?
処理系が同じでもc runtimeの種類やインスタンスが違うとダメ