問題タブ [mci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - MCIで曲の長さを取得する方法
私のプログラムで表示するために、HH:MM:SS のような曲の長さを見つけてみてください。
使ってみて
と
しかし、結果としてエラーが発生します-「入力文字列が正しくありません」
これを理解するために使用します。私が理解しているように、曲の長さを取得するには command を使用する必要がありますstatus MediaFile length track number。ここでstatus- メイン コマンドMediaFile- 現在開いている MediaFile を使用するよう指示length track number- 要求されたパラメーター。このメソッドは、ファイルを開いた後にのみ使用してください。
delphi - mciSendString の正しい使い方
次を使用してMP3サウンドを再生しますmciSendString
mciSendString("play \"mysound.mp3\"", NULL, 0, 0);
上記は問題なく動作します。しかし、私が Web で見た限りでは、人々は上記のコードにあらゆる種類のラッパーを使用しています。最初にopenコマンドを送信playしてから、通知を待ってからcloseコマンドを送信し、ファイルなどのエイリアスも使用します。
私の質問は - これはすべて必要ですか? 私の主な関心は、ファイルを再生して非同期で実行することです。上記のコマンドはすべてのクリーンアップを行うように見えるので、私の質問は、メモリを適切に解放してサウンドの割り当てを解除するために、サウンドが再生されたときにコマンドと通知を使用することが本当に必要ですか?そうすることには利点がありますかopen?close
デバッガーで確認できることから、上記のコマンドを実行すると、システムは必要な DLL をロードし、いくつかのスレッドを開始し、再生が終了するとすぐにスレッドが終了し、DLL がアンロードされるようです。したがって、システムがすべての割り当て/割り当て解除を自動的に行うため、オープン/クローズはオプションであると思いますが、間違っている可能性があります。上記の行を呼び出すだけで、他に何も呼び出さない場合、メモリまたはリソースがリークしていますか?
デバッグ ログが示す内容は次のとおりです。このログから、スレッドが閉じられており、DLL ファイルがアンロードされていると結論付けることができます。
c# - 曲情報検索
オーディオ プレーヤー用に C# の .mp3 ファイルから詳細を取得しようとしています。
コードスニップ:
私の質問は次のとおりです。
- 曲の音量を設定するにはどうすればよいですか?
- 曲のビット レート/サンプル レートを取得するにはどうすればよいですか?
私は MCI または NAudio の信頼性を認識しているので、それらを使用することを好みます。
windbg - 「アクセス違反」の原因を見つける方法
一言で言えば、wav ファイルの再生を制御する (基本的に open、play、pause、stop、status、close ) ために、( dllimport を介して) 多くの mciSendString 呼び出しを行う C# アプリケーションがあります。そして、しばらく実行すると、「アクセス違反」でアプリが予告なしにクラッシュします。
vs2012 からアプリを実行していますが、Visual Studio では例外がキャッチされません。「例外で強制的に中断」オプションを使用しても、vs2012 からこれをデバッグできませんでした。代わりに、WER をセットアップしてクラッシュ ダンプを生成し、windbg と psscor2.dll プラグインを使用してデバッグしています。
次に、次のコマンドを順番に使用して、これが得られます(読みやすくするために不可欠に短縮します):
$>.ecxr
$>~*キロバイト
$>!analyze -v
Unloaded_mciwave.dll のスレッド #30 で例外が発生しているようですが、デバッグをさらに進める方法がわかりません。
これらの 2 つの行の間で何が起こっているかを知るにはどうすればよいですか?
よろしくお願いいたします。
python - (python) threading.Timer を使用して呼び出された場合の異なる動作
Pythonモジュール「mp3play」に基づいて、小さなコマンドライン音楽プレーヤーを作りたいです。曲の再生が停止した場合 (そして最終的に新しい曲を開始した場合) を定期的に確認したいのですが、ユーザーはその間に新しいコマンドを入力できる必要があります (音楽の一時停止など)。そのため、そのために threading.Timer を使用しようとしました。ただし、タイマーを使用して呼び出された関数内にいると、エラーが発生します。関数が正常に呼び出された場合、エラーは発生しません。私の(縮小された)コードは次のとおりです。
rep() が 2 回目に呼び出されると、関数 isplaying() で MCI エラーが発生し、デバイスを読み取ることができないというメッセージが表示されます。私の質問:
threading.Timer の動作方法を間違えていますか? (そして、どうすれば修正できますか?) threading.Timer 以外に、私が望むものを達成する方法はありますか?
これまでの私の考えでは、currentmusic別のスレッドからアクセスするには問題がある可能性がありますが、わかりません。また、私はそれを回避する方法を知りません。
助けてくれてthx