問題タブ [jlayer]
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.
java - AudioTrack - jlayer(Java mp3 デコーダー) を使用した短い配列からバイト配列への歪み
次の呼び出しで、jLayer を使用して MP3 データをデコードしています。
デコードされたデータを返すこの呼び出しは、short[] の配列を返します。
output.getBuffer();
そのメソッドで AudioTrack write() を呼び出すと、ファイルをループするときに正常に再生されます。
ただし、この回答のいずれかの方法を使用して short[] 配列を byte[] 配列に変換すると: https://stackoverflow.com/a/12347176/1176436音が歪んでぎくしゃくします:
になります:
私は何か間違ったことをしていますか?それを修正するにはどうすればよいですか? 残念ながら、私が使用している別のサードパーティ ライブラリのバイト配列に pcm データが必要です。それが重要な場合、ファイルは22kHzであり、これがどのようにインスタンス化されているかです:
よろしくお願いします。
編集: これは、AudioTrack 変数をインスタンス化する方法です。したがって、44kHz ファイルの場合、送信される値は 44100 ですが、22kHz ファイルの場合、値は 22050 です。
これはデコード方法です:
これがどのように聞こえるかです (数秒待ちます): https://vimeo.com/60951237 (これが実際のファイルです: http://www.tonycuffe.com/mp3/tail%20toddle.mp3 )
編集:賞金を分割したかったのですが、代わりに賞金をビルに与え、受け入れられた回答をニールに与えました。どちらも大変参考になりました。疑問に思っている人のために説明すると、最終的に Sonic のネイティブ コードを書き直したので、プロセスを進めることができました。
java - Javaの問題でJLayerを使用してスレッドで1つのmp3ファイルのみを再生する
私は、GUIを使用してJavaで記述されたオーディオプレーヤーで働いています。mp3ファイルを再生するために、javazoomからJLayerライブラリを選択しました。これは、非常に人気があり、使用されていることがわかったためです。GUIを作成し、プレイリストから選択したmp3ファイルを再生することができました。
私の問題は、再生ボタンまたはプレイリストのファイルを何度も押すと、押した回数だけ曲の再生が開始され、同じスレッドで再生したいということです。もう一度再生ボタンを押すと、現在の曲の再生中に同じ曲が始まらないようにもう一度再生したい。
これがmp3ファイルを再生する私のコードです:
これは、再生ボタンの私の方法です。
私はマルチスレッドに慣れていないので、それほど苦労しないでください。JLayerでこれができない場合は、mp3ファイルを再生できる優れたライブラリをお勧めします。よろしくお願いします。ご提案をお待ちしております。
java - FileNotFoundException、ファイルはJavaに存在します
非常に奇妙な問題があります。JavaコードとJLayerを使用してMP3を再生しようとしています。ファイルパスを生成するためのメソッド設定がありますが、それは私に多くの悲しみを与えています。returnステートメント(およびメソッドに含まれるすべてのコード)は次のとおりです。
私はおそらく1.mp3、2.mp3などの名前の約150のmp3ファイルのセットを持っています。それらは約156になります(間にいくつかの欠落があります)。3桁のコードのユーザー入力に基づいて、サウンドの1つを再生します。このコードは、 1〜99の範囲で問題なく機能し、100に達すると機能しなくなります。ユーザーが100または110、あるいはあなたが持っているものを打ち込むと、JavaはFileNotFoundExceptionをスローします。確かに、ファイルはそこにあります。findSoundFileによって返されるファイルパスを使用するコードは次のとおりです。
次のように、numSeqが入力するはずのスペースに入力すると、さらに奇妙になります。
上記のコードは正常に動作し、電話を切らずにサウンドを再生します。どんなアイデアでも大歓迎です、そして何か混乱がないか尋ねてください。
スタックトレース:
いずれかのファイルのls-l:
100未満の場合はls-l:
java - ダウンロードしたこれらの Java クラスをインポートするにはどうすればよいですか?
私はプログラミングの初心者で、インターネットから取得したクラスをテキスト ファイルにインポートする方法を知る必要があります。JLayer
MP3 プレーヤーの作成に使用するためにダウンロードしましたがimport javazoom.jl.player.Player;
、import javax.swing.JOptionPane;
.
いくつかのフォーラムでJLayer
、インポートステートメントが機能するようにライブラリをどこかに移動する必要があることを読みましたが、正確にはどこですか? マイJLayer
ライブラリは現在、マイDownloads
フォルダにあります。私は何をすべきか?
java - JLayer を使用してサウンドを停止する方法
JLayer を使用してゲームで mp3 ファイルを再生していますが、曲を止めることはできません。それが私のコードです:
ハッシュマップ "reproduciendo" の曲を stop メソッドで削除すると、停止するはずですが、何も行われません。ここでこの方法を読みましたが、うまくいきません。それを行う別の方法を知っていますか?
java - JLayer を使用して Java でバックグラウンド ミュージックをループする
JLayer を使用してゲームに BGM を追加しようとしています。ループで再生するように設定するにはどうすればよいですか?
java - JLayer を使用してストリーミングされた mp3 データをデコードする際の問題
JLayer Java lib を使用して mp3 データ ストリームをデコードしようとしています。mp3 データの次のチャンクがネットワークから到着したときに非同期的に呼び出されるコールバックがあります。到着する各チャンクには、4 つの mp3 フレームが含まれていbyte[]
ます。このデータは に渡されてshort[] decode(byte[] mp3_data)
デコードされ、出力はshort[]
pcm オーディオ バッファになります。バッファーはconcatArray()
、すべての mp3 フレームが使い果たされるまで、メソッドを使用して while ループ内に追加されます。私が抱えている問題は、データの最初の 2 または場合によっては 3 フレームがゼロで満たされた pcm バッファを返し、最後の 2 または 1 フレームが有効な 16 ビット オーディオ値を返すことです。
ログ出力
4 フレームの mp3 チャンクごとに pcm バッファを出力すると、最初の 2 ~ 3 個のバッファがゼロで埋められていることがわかります。私の方法で明らかな問題を見ることができるJLayerの経験を持っている人はいますか?