导航:
论坛 -> 移动应用开发
斑竹:flyers,iamdream
作者:
vga (vga)
★☆☆☆☆
-
盒子活跃会员
2021/3/31 8:28:50
标题:
Firemonkey 怎样用 AudioTrack 播放 pcm 音频数据呀?
浏览:1952
加入我的收藏
楼主:
Android 可以用AudioTrack 播放 pcm 音频数据,Firemonkey 能做到吗?
----------------------------------------------
-
作者:
2021/3/31 10:03:29
1楼:
windows 可以用AudioTrack 播放 pcm 音频数据,Firemonkey 能做到吗? 好像这么问没区别
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
vga (vga)
★☆☆☆☆
-
盒子活跃会员
2021/3/31 10:39:36
2楼:
没错, Firemonkey在windows下可以播放 pcm 音频数据,但Android下...
----------------------------------------------
-
作者:
2021/3/31 12:11:08
3楼:
不是有java的嘛,去刨一个不就好了. 如果实在是不想刨,bass 音频库还是首选、
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
2021/4/2 16:24:11
4楼:
有一段用 C++ Builder Fmx实现的代码,实测好用,仅供参考 void AndroidSound(double freqHz, int durationMs) { double Pi = 3.14159265358979323846; int count = (int)(44100.0 * 2.0 * (durationMs / 1000.0)) & ~1; TJavaArray__1<short>* samples = new TJavaArray__1<short>(count); for(int i = 0; i < count; i += 2) { short sample = (short)(Sin(2 * Pi * i / (44100.0 / freqHz)) * 0x7FFF); samples->Items[i + 0] = sample; samples->Items[i + 1] = sample; } _di_JAudioTrack audioTrack; audioTrack = TJAudioTrack::JavaClass->init(TJAudioManager::JavaClass->STREAM_MUSIC, 44100, TJAudioFormat::JavaClass->CHANNEL_CONFIGURATION_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT, count * (sizeof(TJavaArray__1<short>) / 8), TJAudioTrack::JavaClass->MODE_STATIC); if(audioTrack->write((TJavaArray__1<short>*)samples, 0, count)) audioTrack->play(); delete samples; }
----------------------------------------------
-
作者:
vga (vga)
★☆☆☆☆
-
盒子活跃会员
2021/4/3 9:50:37
5楼:
多谢 pspice (pspice) 大神!
----------------------------------------------
-
作者:
2021/4/6 15:24:03
6楼:
大神可否翻译为delphi?
----------------------------------------------
-
作者:
2021/4/6 18:15:59
7楼:
我来为难一下大神。 大神,不要给他翻译。 大神一看是我,不听,非要给楼上翻译。 其实我心里想的是,我也想大神翻译一下。
----------------------------------------------
(C)(P)Flying Wang
作者:
2021/4/7 10:07:26
8楼:
惭愧,我可不是大神。Delphi语法我都不熟悉,勉强翻译了一下,测试通过,供参考: unit AudioTrack; interface procedure AndroidSound( freqHz : Double; durationMs : integer); implementation uses Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Media; procedure AndroidSound( freqHz : Double; durationMs : integer); var Pi : Double; count : integer; sample : SmallInt; audioTrack : JAudioTrack; samples : TJavaArray<SmallInt>; i : integer; begin Pi := 3.14159265358979323846; count := Round(44100.0 * 2.0 * (durationMs / 1000.0)); samples := TJavaArray<SmallInt>.Create(count); i := 0; while (i < count) do begin sample := Round(Sin(2 * Pi * i / (44100.0 / freqHz)) * $7FFF); samples.Items[i + 0] := sample; samples.Items[i + 1] := sample; i := i+2; end; audioTrack := TJAudioTrack.JavaClass.init(TJAudioManager.JavaClass.STREAM_MUSIC, 44100, TJAudioFormat.JavaClass.CHANNEL_CONFIGURATION_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT, samples.Length div 4, TJAudioTrack.JavaClass.MODE_STATIC); audioTrack.write(samples, 0, count); audioTrack.play(); end; end.
----------------------------------------------
-
作者:
2021/4/7 10:25:42
9楼:
@wang_80919 (Flying Wang) 请问www.2pascal.com登录的时候图片验证码不出现是浏览器的问题吗?我用IE和Chrome登录都有这个问题。想去这个帖子下载你的JarOrClass2Pas工具。http://www.2pascal.com/forum.php?mod=viewthread&tid=891&fromuid=4
----------------------------------------------
-
作者:
2021/4/8 8:51:11
10楼:
谢谢了,主要是不明白泛型在C++是如何表述的
----------------------------------------------
-