C#Win Formsアプリケーションでtaglib-sharpライブラリを使用して、MP3ファイルの長さとビットレートを取得します。コードスニペットは次のとおりです。taglib-sharp:MP3ファイルのChannelModeを取得する
TagLib.File tagFile = TagLib.File.Create(myMp3FileName);
int bitrate = tagFile.Properties.AudioBitrate;
string duration = tagFile.Properties.Duration.Hours.ToString("D2") + ":" +
tagFile.Properties.Duration.Minutes.ToString("D2") + ":" +
tagFile.Properties.Duration.Seconds.ToString("D2");
ファイルがモノラルかステレオかどうかを確認したいと思います。これを行うには、ChannelMode(0 = Stereo、1 = JointStereo、2 = DualChannel、3 = SingleChannel)を読み込む必要があると思います。唯一の問題は、私がアクセスする方法を知らないことです。コードをデバッグすると、ChannelMode in the watch windowが表示されます。
ただし、アクセスは困難です。私はこれを実行すると、私はcodec in the debugger's watch windowを見ることができます
var codec = (((TagLib.ICodec[])tagFile.Properties.Codecs).GetValue(0));
、それはChannelModeです下:私はこれだけ遠くなりました。
この時点でcodec.ChannelModeを読むことができるはずですが、それは明らかに正しい構文ではありません。このコンパイラエラーが発生します:
Error CS1061 'object' does not contain a definition for 'ChannelMode' and no extension method 'ChannelMode' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
私は間違っていますか?
ありがとうございます。
マイク
などのおかげで、ベン!あなたの最初の解決策は素晴らしいです!ただし、それが価値がある場合、2番目のソリューションはコンパイラエラーを生成します。*エラー\t CS0077 \t as演算子は、参照型またはnull可能型( 'AudioHeader'はnull値のない値型)で使用する必要があります。私はここで少しnewbですが、何とか安全ではない解決策ですか? –
ああ、私は 'AudioHeader'が構造体であることに気付かなかった。最初の方法は問題ありません。正しいタイプにキャストしていることを確認したいだけです。 –
'Nullable'(' ... as AudioHeader? ')にすると、2番目のメソッド(答えを更新)を使用することができます。 –