質問編集履歴
9
ループを止めるメソッドを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
・一応、回答を見た後に作ったソースコードを掲載。
|
6
6
|
|
7
|
+
+ループを止めるメソッド追加
|
8
|
+
|
7
9
|
・本文が10000文字以上になったらしい…ので一部いらない所修正。
|
8
10
|
|
9
11
|
・一番最初のwav → mp3へと変換した際にカットしている事を伝え忘れていた。
|
@@ -430,16 +432,6 @@
|
|
430
432
|
|
431
433
|
|
432
434
|
|
433
|
-
抽出について、この情報が合っている事前提で一応進めていく…
|
434
|
-
|
435
|
-
これが合ってないと、また調べる所からになります。
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
waveとbyteについて調べていきます。
|
440
|
-
|
441
|
-
|
442
|
-
|
443
435
|
問題点その1 の解決策を探しています。
|
444
436
|
|
445
437
|
未だに取っ掛かりすらありません。
|
@@ -550,6 +542,8 @@
|
|
550
542
|
|
551
543
|
簡易プレイヤーとして活用できるようなクラスにしました。
|
552
544
|
|
545
|
+
+ループを止めるメソッドを追加しました。
|
546
|
+
|
553
547
|
|
554
548
|
|
555
549
|
ゲームの場合マルチスレッド何たら等
|
@@ -684,7 +678,7 @@
|
|
684
678
|
|
685
679
|
|
686
680
|
|
687
|
-
public void sStop() {
|
681
|
+
public void sStop() {
|
688
682
|
|
689
683
|
try {
|
690
684
|
|
@@ -702,6 +696,14 @@
|
|
702
696
|
|
703
697
|
}
|
704
698
|
|
699
|
+
|
700
|
+
|
701
|
+
public void loopStop() {
|
702
|
+
|
703
|
+
clip.loop(0);
|
704
|
+
|
705
|
+
}
|
706
|
+
|
705
707
|
}
|
706
708
|
|
707
709
|
```
|
8
回答を見た後にソースコードを作ってみた
test
CHANGED
File without changes
|
test
CHANGED
@@ -542,7 +542,9 @@
|
|
542
542
|
|
543
543
|
|
544
544
|
|
545
|
-
### 一応
|
545
|
+
### 一応 回答を見た後に作ってみました
|
546
|
+
|
547
|
+
(ゲームで使用させて頂いています)
|
546
548
|
|
547
549
|
色んな用途に使えるように、ファイルパスだけ渡せば
|
548
550
|
|
7
回答後に作ったソースコードを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
更新箇所
|
4
4
|
|
5
|
+
・一応、回答を見た後に作ったソースコードを掲載。
|
6
|
+
|
5
7
|
・本文が10000文字以上になったらしい…ので一部いらない所修正。
|
6
8
|
|
7
9
|
・一番最初のwav → mp3へと変換した際にカットしている事を伝え忘れていた。
|
6
一応、完成したソースコードを乗せる
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
### 前提(質問までに至るまでの過程)
|
2
2
|
|
3
|
+
更新箇所
|
4
|
+
|
5
|
+
・本文が10000文字以上になったらしい…ので一部いらない所修正。
|
6
|
+
|
7
|
+
・一番最初のwav → mp3へと変換した際にカットしている事を伝え忘れていた。
|
8
|
+
|
9
|
+
・無音分が増えたと分かってからは毎回カットしている。
|
10
|
+
|
11
|
+
|
12
|
+
|
3
13
|
Java8 Eclipseを使用しています。
|
4
14
|
|
5
15
|
外部ライブラリはmp3をJavaで扱う為のJavazoomを使用しています。
|
@@ -8,62 +18,6 @@
|
|
8
18
|
|
9
19
|
|
10
20
|
|
11
|
-
wav
|
12
|
-
|
13
|
-
MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, 38.28125 frames/second,
|
14
|
-
|
15
|
-
サンプリング周波数は44100khz、16bit、2ch。
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
mp3
|
20
|
-
|
21
|
-
Audacityでは、長さは11.623になっていた。
|
22
|
-
|
23
|
-
mp3 mediainfoというソフトにて
|
24
|
-
|
25
|
-
ながさ : 11秒 650秒
|
26
|
-
|
27
|
-
OBR モード : CBR モード
|
28
|
-
|
29
|
-
オーバルビットレート : 192 Kbps
|
30
|
-
|
31
|
-
使用したライブラリ : LAME3.100
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
オーディオ
|
36
|
-
|
37
|
-
フォーマット : MPEG Audio
|
38
|
-
|
39
|
-
バージョン : Version 1
|
40
|
-
|
41
|
-
プロファイル : Layer 3
|
42
|
-
|
43
|
-
設定 : Joint stereo / MS Stereo
|
44
|
-
|
45
|
-
ながさ : 11秒 651秒
|
46
|
-
|
47
|
-
ビットレートモード : CBR モード
|
48
|
-
|
49
|
-
ビットレート : 192 Kbps
|
50
|
-
|
51
|
-
チャンネル : 2 チャンネル
|
52
|
-
|
53
|
-
サンプルレート : 44.1 KHz
|
54
|
-
|
55
|
-
フレームレート : 38.281 fps (1152 SPF)
|
56
|
-
|
57
|
-
Compression mode : Lossy
|
58
|
-
|
59
|
-
ストリームサイズ : 273 KiB (100%)
|
60
|
-
|
61
|
-
使用したライブラリ : LAME3.100
|
62
|
-
|
63
|
-
エンコードライブラリの設定 : -m j -V 4 -q 3 -lowpass 18.6 -b 192
|
64
|
-
|
65
|
-
|
66
|
-
|
67
21
|
初めてJavaでゲーム制作をしています。(ドラクエ1レベル程度の内容)
|
68
22
|
|
69
23
|
フリー音源を集めてBGMを鳴らそうと思ったのですが
|
@@ -74,6 +28,8 @@
|
|
74
28
|
|
75
29
|
BGMもいつループしたのか分からない程スムーズにループしていました。
|
76
30
|
|
31
|
+
(mp3 → wavにした際、カットしてます)
|
32
|
+
|
77
33
|
|
78
34
|
|
79
35
|
しかし、そこで問題が発生しました。
|
@@ -82,8 +38,6 @@
|
|
82
38
|
|
83
39
|
mp3だとその4分の1くらいです。
|
84
40
|
|
85
|
-
|
86
|
-
|
87
41
|
ならば、mp3で再生できればと思い調べてみました。
|
88
42
|
|
89
43
|
|
@@ -126,6 +80,8 @@
|
|
126
80
|
|
127
81
|
|
128
82
|
|
83
|
+
(変換プログラムにも、無音が挿入されてしまっていた)
|
84
|
+
|
129
85
|
曲の長さも増えていました。全体 曲頭 曲後
|
130
86
|
|
131
87
|
11秒623→11秒677 +0.054秒 +0.051 +0.003
|
@@ -252,10 +208,6 @@
|
|
252
208
|
|
253
209
|
非常に困っています…
|
254
210
|
|
255
|
-
手前から1秒カットする、後ろから3秒カットする、等の記事を探していましたが
|
256
|
-
|
257
|
-
見つかりませんでした…
|
258
|
-
|
259
211
|
|
260
212
|
|
261
213
|
mp3で11.623秒の曲を変換すると11.677秒になりました。差は0.054秒です。
|
@@ -460,46 +412,6 @@
|
|
460
412
|
|
461
413
|
### 試行錯誤中
|
462
414
|
|
463
|
-
今私が試行錯誤している事を記載していきます。
|
464
|
-
|
465
|
-
間違っていたり、それは違うよ、等ツッコミ下さい。
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
問題点その2・3 の解決策を探しています。
|
470
|
-
|
471
|
-
wavのデータを解析していく。
|
472
|
-
|
473
|
-
byteに変換して、byteを削除していく…?
|
474
|
-
|
475
|
-
wavファイルの構成は
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
引用
|
480
|
-
|
481
|
-
「wavファイルは、次のヘッダーから必ず始まります。
|
482
|
-
|
483
|
-
文字列 RIFF (4byte)
|
484
|
-
|
485
|
-
これ以降チャンクのサイズ (4byte)
|
486
|
-
|
487
|
-
文字列WAVE (4byte)
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
チャンク
|
492
|
-
|
493
|
-
チャンク名(4byte)
|
494
|
-
|
495
|
-
これ以降のチャンクのサイズ(4byte)
|
496
|
-
|
497
|
-
内容」
|
498
|
-
|
499
|
-
となっている。
|
500
|
-
|
501
|
-
|
502
|
-
|
503
415
|
「EDIT40秒部分の抽出について
|
504
416
|
|
505
417
|
デコーダの出力はpcmサンプルです。 入力が16ビットステレオ44100Hzの場合、各フレームは16ビット×2チャンネル= 4バイト、1秒は44100×4バイトです。目的の部分が始まるまで必要なだけ出力バイトをスキップし、次に44100 * 4 * 40バイトを40秒間ダンプします。モノラルにミキシングしてから8ビットにカットすることもできます。 」
|
@@ -528,25 +440,7 @@
|
|
528
440
|
|
529
441
|
問題点その1 の解決策を探しています。
|
530
442
|
|
531
|
-
mp3の長さは、Audacityだと11.623秒。
|
532
|
-
|
533
|
-
wavだと11.677秒。
|
534
|
-
|
535
|
-
mp3を測定するプログラムだと11.677秒。
|
536
|
-
|
537
|
-
頭の無音は0.051秒
|
538
|
-
|
539
|
-
後ろの無音は…波形ソフトで測るしかない。
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
ここさえ求まれば…
|
544
|
-
|
545
|
-
11.677秒から逆に11.623秒を求める事は出来るのか?
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
443
|
+
未だに取っ掛かりすらありません。
|
550
444
|
|
551
445
|
|
552
446
|
|
@@ -626,15 +520,11 @@
|
|
626
520
|
|
627
521
|
|
628
522
|
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
523
|
### 結論
|
634
524
|
|
635
525
|
JAVAでmp3をラグなくループする方法
|
636
526
|
|
637
|
-
沢山の記事を探しましたが
|
527
|
+
沢山の記事を探しましたが見つかりませんでした。
|
638
528
|
|
639
529
|
wavに変換して、それを編集するくらいしか思いつきません。
|
640
530
|
|
@@ -646,4 +536,168 @@
|
|
646
536
|
|
647
537
|
JavaでBGMをラグなくループする方法は
|
648
538
|
|
649
|
-
oggを使いまし
|
539
|
+
oggを使うと良い事が分かりました。
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
### 一応 完成したクラス張ってみます。
|
544
|
+
|
545
|
+
色んな用途に使えるように、ファイルパスだけ渡せば
|
546
|
+
|
547
|
+
簡易プレイヤーとして活用できるようなクラスにしました。
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
ゲームの場合マルチスレッド何たら等
|
552
|
+
|
553
|
+
書いてある記事もありましたが
|
554
|
+
|
555
|
+
必要になったら学ぶ予定…
|
556
|
+
|
557
|
+
```java
|
558
|
+
|
559
|
+
|
560
|
+
|
561
|
+
/*
|
562
|
+
|
563
|
+
* MusicPlayerクラスです。
|
564
|
+
|
565
|
+
* このクラスは他プロジェクトでも汎用性があるように作られたクラスです。
|
566
|
+
|
567
|
+
* Java sound apiで再生できるデータ(wav、raw、midi)があるファイルの場所を
|
568
|
+
|
569
|
+
* コンストラクタで受け取ります。
|
570
|
+
|
571
|
+
* MusicPlayerクラスのsPlayメソッドで曲を再生します。
|
572
|
+
|
573
|
+
* MusicPlayerクラスのsStopメソッドで曲を停止します。
|
574
|
+
|
575
|
+
*
|
576
|
+
|
577
|
+
* 追伸:
|
578
|
+
|
579
|
+
* 外部ライブラリJavazoomをプロジェクトに入れるとmp3も再生されます。
|
580
|
+
|
581
|
+
* 外部ライブラリjorbisをプロジェクトに入れるとoggも再生されます。
|
582
|
+
|
583
|
+
* */
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
import java.io.File;
|
588
|
+
|
589
|
+
import java.io.IOException;
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
import javax.sound.sampled.AudioFormat;
|
594
|
+
|
595
|
+
import javax.sound.sampled.AudioInputStream;
|
596
|
+
|
597
|
+
import javax.sound.sampled.AudioSystem;
|
598
|
+
|
599
|
+
import javax.sound.sampled.Clip;
|
600
|
+
|
601
|
+
import javax.sound.sampled.LineUnavailableException;
|
602
|
+
|
603
|
+
import javax.sound.sampled.UnsupportedAudioFileException;
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
public class MusicPlayer {
|
608
|
+
|
609
|
+
private File musicData;
|
610
|
+
|
611
|
+
private AudioInputStream in;
|
612
|
+
|
613
|
+
private AudioInputStream dataIn;
|
614
|
+
|
615
|
+
private Clip clip;
|
616
|
+
|
617
|
+
|
618
|
+
|
619
|
+
public MusicPlayer(File musicData) {
|
620
|
+
|
621
|
+
this.musicData = musicData;
|
622
|
+
|
623
|
+
fileDataReading();
|
624
|
+
|
625
|
+
}
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
public void fileDataReading() {
|
630
|
+
|
631
|
+
try {
|
632
|
+
|
633
|
+
in = AudioSystem.getAudioInputStream(musicData);
|
634
|
+
|
635
|
+
} catch (UnsupportedAudioFileException | IOException e) {
|
636
|
+
|
637
|
+
e.printStackTrace();
|
638
|
+
|
639
|
+
}
|
640
|
+
|
641
|
+
AudioFormat baseFormat = in.getFormat();
|
642
|
+
|
643
|
+
AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
|
644
|
+
|
645
|
+
baseFormat.getSampleRate(), 16,
|
646
|
+
|
647
|
+
baseFormat.getChannels(),
|
648
|
+
|
649
|
+
baseFormat.getChannels() * 2,
|
650
|
+
|
651
|
+
baseFormat.getSampleRate(), false);
|
652
|
+
|
653
|
+
dataIn = AudioSystem.getAudioInputStream(targetFormat, in);
|
654
|
+
|
655
|
+
}
|
656
|
+
|
657
|
+
|
658
|
+
|
659
|
+
public void sPlay() {
|
660
|
+
|
661
|
+
try {
|
662
|
+
|
663
|
+
clip = AudioSystem.getClip();
|
664
|
+
|
665
|
+
clip.open(dataIn);
|
666
|
+
|
667
|
+
clip.loop(Clip.LOOP_CONTINUOUSLY);
|
668
|
+
|
669
|
+
} catch (LineUnavailableException e) {
|
670
|
+
|
671
|
+
e.printStackTrace();
|
672
|
+
|
673
|
+
} catch (IOException e) {
|
674
|
+
|
675
|
+
e.printStackTrace();
|
676
|
+
|
677
|
+
}
|
678
|
+
|
679
|
+
}
|
680
|
+
|
681
|
+
|
682
|
+
|
683
|
+
public void sStop() {
|
684
|
+
|
685
|
+
try {
|
686
|
+
|
687
|
+
clip.close();
|
688
|
+
|
689
|
+
dataIn.close();
|
690
|
+
|
691
|
+
in.close();
|
692
|
+
|
693
|
+
} catch (IOException e) {
|
694
|
+
|
695
|
+
e.printStackTrace();
|
696
|
+
|
697
|
+
}
|
698
|
+
|
699
|
+
}
|
700
|
+
|
701
|
+
}
|
702
|
+
|
703
|
+
```
|
5
ベストアンサー前に調べたこと、試した事の情報整理
test
CHANGED
File without changes
|
test
CHANGED
@@ -575,3 +575,75 @@
|
|
575
575
|
Javaでmp3のループ再生がラグなく出来るのでしたら
|
576
576
|
|
577
577
|
教えて頂ければ幸いです…
|
578
|
+
|
579
|
+
|
580
|
+
|
581
|
+
### ogg について
|
582
|
+
|
583
|
+
Java sound api でoggを取り扱う為のライブラリー下記2種。
|
584
|
+
|
585
|
+
JOrbis:Javaで実装されたoggファイル再生ライブラリ
|
586
|
+
|
587
|
+
JOgg:JOrbisを使用したOggファイル再生プレーヤー
|
588
|
+
|
589
|
+
を追加しまして
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
TN8001様のサンプルコードを実行しました。
|
594
|
+
|
595
|
+
ラグなくループ再生出来ました。
|
596
|
+
|
597
|
+
|
598
|
+
|
599
|
+
|
600
|
+
|
601
|
+
https://soundengine.jp/wordpress/tips/glossary/454/ から引用
|
602
|
+
|
603
|
+
「非圧縮の音声ファイルに比べ、ファイルサイズを小さくできる。
|
604
|
+
|
605
|
+
圧縮前の音を完全に再現できない。(非可逆圧縮)
|
606
|
+
|
607
|
+
ライセンスの制限が緩やかなので、PCゲームによく利用されている。
|
608
|
+
|
609
|
+
ギャップレス再生に対応」
|
610
|
+
|
611
|
+
|
612
|
+
|
613
|
+
→「ギャップレス再生に対応」
|
614
|
+
|
615
|
+
|
616
|
+
|
617
|
+
さらに引用
|
618
|
+
|
619
|
+
「Oggは同ビットレートのMP3よりも聴感上良い音で再生でき、さらに、AACやWMAなど、他の非可逆圧縮の形式と比較しても引けを取らないようです。特に低ビットレートではその性能は高く評価されています。」
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
との事です。
|
624
|
+
|
625
|
+
oggもmp3と同じだと思っていました…
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
|
630
|
+
|
631
|
+
|
632
|
+
|
633
|
+
### 結論
|
634
|
+
|
635
|
+
JAVAでmp3をラグなくループする方法
|
636
|
+
|
637
|
+
沢山の記事を探しましたがどれも見つかりませんでした。
|
638
|
+
|
639
|
+
wavに変換して、それを編集するくらいしか思いつきません。
|
640
|
+
|
641
|
+
挿入される無音部分の計算も出来ていないので
|
642
|
+
|
643
|
+
自分には難しかったみたいです。
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
JavaでBGMをラグなくループする方法は
|
648
|
+
|
649
|
+
oggを使いましょう。
|
4
試行錯誤中 更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -466,6 +466,8 @@
|
|
466
466
|
|
467
467
|
|
468
468
|
|
469
|
+
問題点その2・3 の解決策を探しています。
|
470
|
+
|
469
471
|
wavのデータを解析していく。
|
470
472
|
|
471
473
|
byteに変換して、byteを削除していく…?
|
@@ -524,7 +526,27 @@
|
|
524
526
|
|
525
527
|
|
526
528
|
|
527
|
-
|
529
|
+
問題点その1 の解決策を探しています。
|
530
|
+
|
531
|
+
mp3の長さは、Audacityだと11.623秒。
|
532
|
+
|
533
|
+
wavだと11.677秒。
|
534
|
+
|
535
|
+
mp3を測定するプログラムだと11.677秒。
|
536
|
+
|
537
|
+
頭の無音は0.051秒
|
538
|
+
|
539
|
+
後ろの無音は…波形ソフトで測るしかない。
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
ここさえ求まれば…
|
544
|
+
|
545
|
+
11.677秒から逆に11.623秒を求める事は出来るのか?
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
ですが、未だに取っ掛かりすらありません。
|
528
550
|
|
529
551
|
|
530
552
|
|
3
思考錯誤中の内容を更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -460,6 +460,14 @@
|
|
460
460
|
|
461
461
|
### 試行錯誤中
|
462
462
|
|
463
|
+
今私が試行錯誤している事を記載していきます。
|
464
|
+
|
465
|
+
間違っていたり、それは違うよ、等ツッコミ下さい。
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
wavのデータを解析していく。
|
470
|
+
|
463
471
|
byteに変換して、byteを削除していく…?
|
464
472
|
|
465
473
|
wavファイルの構成は
|
@@ -496,6 +504,8 @@
|
|
496
504
|
|
497
505
|
|
498
506
|
|
507
|
+
44100Hz、2ch、16ビットはそのままなので問題はないはず。
|
508
|
+
|
499
509
|
との事で、内容までのbyteを飛ばして、無音分を計算し飛ばす。
|
500
510
|
|
501
511
|
AudioStreamは、ヘッダー等は飛ばされるような記事みた気もするけれど。
|
@@ -504,11 +514,17 @@
|
|
504
514
|
|
505
515
|
|
506
516
|
|
517
|
+
抽出について、この情報が合っている事前提で一応進めていく…
|
518
|
+
|
519
|
+
これが合ってないと、また調べる所からになります。
|
520
|
+
|
521
|
+
|
522
|
+
|
507
|
-
byteについて調べてい
|
523
|
+
waveとbyteについて調べていきます。
|
508
|
-
|
509
|
-
|
524
|
+
|
510
|
-
|
511
|
-
|
525
|
+
|
526
|
+
|
527
|
+
|
512
528
|
|
513
529
|
|
514
530
|
|
2
思考錯誤中を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -458,6 +458,60 @@
|
|
458
458
|
|
459
459
|
|
460
460
|
|
461
|
+
### 試行錯誤中
|
462
|
+
|
463
|
+
byteに変換して、byteを削除していく…?
|
464
|
+
|
465
|
+
wavファイルの構成は
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
引用
|
470
|
+
|
471
|
+
「wavファイルは、次のヘッダーから必ず始まります。
|
472
|
+
|
473
|
+
文字列 RIFF (4byte)
|
474
|
+
|
475
|
+
これ以降チャンクのサイズ (4byte)
|
476
|
+
|
477
|
+
文字列WAVE (4byte)
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
チャンク
|
482
|
+
|
483
|
+
チャンク名(4byte)
|
484
|
+
|
485
|
+
これ以降のチャンクのサイズ(4byte)
|
486
|
+
|
487
|
+
内容」
|
488
|
+
|
489
|
+
となっている。
|
490
|
+
|
491
|
+
|
492
|
+
|
493
|
+
「EDIT40秒部分の抽出について
|
494
|
+
|
495
|
+
デコーダの出力はpcmサンプルです。 入力が16ビットステレオ44100Hzの場合、各フレームは16ビット×2チャンネル= 4バイト、1秒は44100×4バイトです。目的の部分が始まるまで必要なだけ出力バイトをスキップし、次に44100 * 4 * 40バイトを40秒間ダンプします。モノラルにミキシングしてから8ビットにカットすることもできます。 」
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
との事で、内容までのbyteを飛ばして、無音分を計算し飛ばす。
|
500
|
+
|
501
|
+
AudioStreamは、ヘッダー等は飛ばされるような記事みた気もするけれど。
|
502
|
+
|
503
|
+
0.051秒分飛ばして、そこからmp3の長さ-0.051秒間分ダンプ分ダンプする。
|
504
|
+
|
505
|
+
|
506
|
+
|
507
|
+
byteについて調べていく。
|
508
|
+
|
509
|
+
+何故か更新したはずなのに更新されていないので
|
510
|
+
|
511
|
+
もう一度更新。
|
512
|
+
|
513
|
+
|
514
|
+
|
461
515
|
### 補足
|
462
516
|
|
463
517
|
プログラミングはJavaが初めてのJavaを初めて5ヵ月と31日です。
|
1
mp3の情報の追加。cbrに変換してもmp3の長さではなかった。
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,6 +16,54 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
+
mp3
|
20
|
+
|
21
|
+
Audacityでは、長さは11.623になっていた。
|
22
|
+
|
23
|
+
mp3 mediainfoというソフトにて
|
24
|
+
|
25
|
+
ながさ : 11秒 650秒
|
26
|
+
|
27
|
+
OBR モード : CBR モード
|
28
|
+
|
29
|
+
オーバルビットレート : 192 Kbps
|
30
|
+
|
31
|
+
使用したライブラリ : LAME3.100
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
オーディオ
|
36
|
+
|
37
|
+
フォーマット : MPEG Audio
|
38
|
+
|
39
|
+
バージョン : Version 1
|
40
|
+
|
41
|
+
プロファイル : Layer 3
|
42
|
+
|
43
|
+
設定 : Joint stereo / MS Stereo
|
44
|
+
|
45
|
+
ながさ : 11秒 651秒
|
46
|
+
|
47
|
+
ビットレートモード : CBR モード
|
48
|
+
|
49
|
+
ビットレート : 192 Kbps
|
50
|
+
|
51
|
+
チャンネル : 2 チャンネル
|
52
|
+
|
53
|
+
サンプルレート : 44.1 KHz
|
54
|
+
|
55
|
+
フレームレート : 38.281 fps (1152 SPF)
|
56
|
+
|
57
|
+
Compression mode : Lossy
|
58
|
+
|
59
|
+
ストリームサイズ : 273 KiB (100%)
|
60
|
+
|
61
|
+
使用したライブラリ : LAME3.100
|
62
|
+
|
63
|
+
エンコードライブラリの設定 : -m j -V 4 -q 3 -lowpass 18.6 -b 192
|
64
|
+
|
65
|
+
|
66
|
+
|
19
67
|
初めてJavaでゲーム制作をしています。(ドラクエ1レベル程度の内容)
|
20
68
|
|
21
69
|
フリー音源を集めてBGMを鳴らそうと思ったのですが
|
@@ -156,7 +204,9 @@
|
|
156
204
|
|
157
205
|
mp3をAudacityで測定すると曲は11.623秒と表示されます。
|
158
206
|
|
159
|
-
しかし、
|
207
|
+
しかし、Mediainfoというソフトでmp3を見ると11秒650と表示されます。
|
208
|
+
|
209
|
+
|
160
210
|
|
161
211
|
Javaでmp3の曲の長さを調べるプログラムが記事に載っていたので試すと
|
162
212
|
|
@@ -170,13 +220,19 @@
|
|
170
220
|
|
171
221
|
Long duration = (Long) properties.get("duration");
|
172
222
|
|
223
|
+
|
224
|
+
|
225
|
+
duration = 11677000になりました。
|
226
|
+
|
227
|
+
なりましたが…それはwavに変換した際のAudacityで調べた長さと一緒でした。
|
228
|
+
|
229
|
+
変換前の値は11.623秒なので、mp3の長さが
|
230
|
+
|
173
|
-
duration = 116
|
231
|
+
duration = 11623000となってほしいです…
|
232
|
+
|
174
|
-
|
233
|
+
Javaでmp3の取り扱いが少なく、さらに曲の長さを求めるサンプルコードは
|
234
|
+
|
175
|
-
|
235
|
+
これくらいしかありませんでした…(Java sound api のメソッドだと-1になる)
|
176
|
-
|
177
|
-
用いても-1と出ます。その為の上のプログラムなのですが思っていた値と違うようで…
|
178
|
-
|
179
|
-
他の方法を調べても、他にありませんでした…
|
180
236
|
|
181
237
|
|
182
238
|
|