はい、可能です
早速実装してみましたので、関数を追加したこちらのバージョンをダウンロードしてください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用
https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用
https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版
https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版
https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース
(中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
以下の関数を追加しました
// Oggファイルのコメント情報の数を取得する
// char *FileName:コメント情報の数を取得したい Ogg Vorbis ファイルのパス
// 戻り値:コメント情報の数
int GetOggCommentNum( char *FileName ) ;
// Oggファイルのコメント情報を取得する
// char *FileName:コメント情報を取得したい Ogg Vorbis ファイルのパス
// int CommentIndex:取得するコメントの番号
// char *CommentNameBuffer:コメント名を格納するバッファの先頭アドレス
// size_t CommentNameBufferBytes:コメント名を格納するバッファのサイズ( バイト数 )
// char *CommentBuffer:コメントを格納するバッファの先頭アドレス
// size_t CommentBufferBytes:コメントを格納するバッファのサイズ( バイト数 )
// 戻り値:0 = 正常終了 -1 = エラー発生
int GetOggComment( char *FileName, int CommentIndex, char *CommentNameBuffer, size_t CommentNameBufferBytes, char *CommentBuffer, size_t CommentBufferBytes ) ;
Ogg Vorbisのタグ情報は全て『コメント』という形で格納されているので、GetOggCommentNum で
コメントの総数を取得して、GetOggComment でコメントを取得して、CommentName に格納される
コメント名が何かによってタイトルであったりアーティスト名であったりを判別する形となります
oggファイルのコメント一覧を画面に表示するプログラムは以下のようになります
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int CommentNum ;
char CommentName[ 128 ] ;
char Comment[ 1024 ] ;
int i ;
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら終了
return -1 ;
}
// コメント数を取得
CommentNum = GetOggCommentNum( "Test.ogg" ) ;
// コメントの数だけ繰り返し
for( i = 0 ; i < CommentNum ; i ++ )
{
// コメントを取得
GetOggComment( "Test.ogg", i, CommentName, sizeof( CommentName ), Comment, sizeof( Comment ) ) ;
// 画面に表示
DrawFormatString( 0, i * 16, GetColor( 255,255,255 ), "Comment Name : %s Comment : %s", CommentName, Comment ) ;
}
WaitKey() ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
よろしければお試しください m(_ _)m