我正在考虑将一些REST服务移动到NodeJS.我唯一担心的是这种解决方案的架构.
它存在某些指导方针吗?当然,我看到一些图书馆喜欢解决问题.这是一个良好的开端,但还不够.
我正在寻找分层,依赖注入,单元测试,csrf等等.
如何从PHP中包含一些空值的数组中获取最小值.我有这样的数组
array(10,20,null,60)
Run Code Online (Sandbox Code Playgroud)
因为这个数组包含null所以php min函数给0作为最小值,但我需要例如10作为最小值.谁能帮我?
我正试图直接从我的Android应用程序动态生成一个小的MP4音频+视频文件.
我最初的攻击计划:
用户输入一些基本的歌曲数据(和弦进行等),并且应用程序构建MIDI文件.
系统为每个和弦构建和弦图,并使用MIDI阅读器生成动画帧数组,该数组定时到MIDI
将MIDI转换为原始PCM音频数据< - 此问题特定于此点
将原始音频应用于动画帧 - 并将音频和视频帧编码为MP4
使用标准播放控件向用户提供生成的MP4视频.
该应用程序已根据用户输入(包括速度,乐器,音符等)构建MIDI文件.此部分很容易完成,MIDI文件正在生成.这款MIDI可以在Android的MediaPlayer中播放.(步骤1)
通过回读MIDI文件并交叉引用序列中每个和弦的静态位图列表,也可以正确创建动画帧.这些帧将成为视频......但最初将没有音频.(第2步)
正如你所看到的,Android MIDI延迟的问题对我来说并不是一个问题,因为我没有创建一个实时合成器应用程序...我只是想将MIDI转换为某种音频格式然后可以混合进入已定时原创MIDI的视频.(第3步)
我遇到的问题是第3步.
我知道我需要使用软件MIDI合成器来获得将从一系列MIDI事件产生的实际音频输出.然而,让它正常工作已成为一个主要障碍.我并不关心所产生音频的精确质量,只是它与人们所期望的相匹配,如果他们使用来自通用设备的通用MIDI样本(ala Gravis soundfonts或bulit-in Sovinox声音等).
所以...
我的第一次尝试是上述两个项目......将它们混合起来,以便将MIDI文件转换为原始PCM数据缓冲区....它还没有那么好.
midi库(1)使用实时监听器读取MIDI文件,并将事件发送到Midi Driver(2),Midi Driver(2)播放由板载合成器生成的原始PCM数据.
(注意:对驱动程序进行了一些调整,以便存储整个缓冲区,并且只有在MIDI读取器完成后才返回.这也意味着整个过程花费的时间等于歌曲的长度只是为了转换它因为我们实时"倾听".)
我还没有像我希望的那样开始工作.我希望保持尽可能简单,并且尽可能使用开源项目.如果它能够在不依赖于实时监听器的情况下做到这一点会更好.
我一直在考虑的其他一些库和工具(但可能有点过分):
更多的人(还没有做太多的研究):
jFugue /胆怯/大胆/ fluidSynth/CSound的/ jMusic/JSyn/Gervill/SOFTONIC /碱/ LibGDX/JetPlayer/OpenSL-ES
我的问题是:
我是否按照上述项目开辟了正确的道路?我对MIDI-> PCM转换比较陌生,所以我想确保我没有完全错过任何东西.
如果没有,我应该如何将MIDI文件转换为某种音频格式,然后可以用于创建MP4(或任何视频播放格式)?
是否有其他开源项目可能有助于使用Android转换MIDI 2原始音频波形的任务?
是否有任何已经编写过的用于Android的任务示例?(即已经移植用于Android JNI等)
我的希望是,我完全错过了一些会使这项工作变得微不足道的事情......我的假设是,这将需要一些严重的黑客攻击和JNI功夫.
如果这是必要的话,我愿意走艰难的道路.任何和所有的建议将不胜感激.
最近我使用API深入研究了一些工作.API使用Unirest http库来简化从Web接收的工作.当然,由于从API服务器调用数据,我试图通过使用API的异步调用来提高效率.我的想法结构如下:
因此,在开始第二步之前,我需要返回所有数据.我的代码如下:
Future < HttpResponse < JsonNode > > future1 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
public void failed(UnirestException e) {
System.out.println("The request has failed");
}
public void completed(HttpResponse < JsonNode > response) {
System.out.println(response.getBody().toString());
responses.put(response);
}
public void cancelled() {
System.out.println("The request has been cancelled");
}
});
Future < HttpResponse < JsonNode > > future2 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
public void failed(UnirestException e) {
System.out.println("The request has failed");
}
public …Run Code Online (Sandbox Code Playgroud) 给定一个java.lang.reflect.Method对象,无论如何都要确定该方法是否是纯粹的功能(即,给定相同的输入,它将始终产生相同的输出并且它是无状态的.换句话说,该功能不依赖于其环境)?
我正在使用Yahoo fantasy sports api.我得到这样的结果:
"player": [
{
...
"eligible_positions": {
"position": "QB"
},
...
},
{
...
"eligible_positions": {
"position": [
"WR",
"W/R/T"
]
},
...
},
Run Code Online (Sandbox Code Playgroud)
我怎么能反序化呢?
我的代码看起来像这样:
var json = new JavaScriptSerializer();
if (response != null)
{
JSONResponse JSONResponseObject = json.Deserialize<JSONResponse>(response);
return JSONResponseObject;
}
Run Code Online (Sandbox Code Playgroud)
在我的JSONResponse.cs文件中:
public class Player
{
public string player_key { get; set; }
public string player_id { get; set; }
public string display_position { get; set; }
public SelectedPosition selected_position { get; set; }
public …Run Code Online (Sandbox Code Playgroud) 我在特定时间收到通知,请参阅我的代码:
//Create alarm manager
AlarmManager alarmMgr0 = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
//Create pending intent & register it to your alarm notifier class
Intent intent0 = new Intent(this, AlarmReceiver_maandag_1e.class);
intent0.putExtra("uur", "1e");
PendingIntent pendingIntent0 = PendingIntent.getBroadcast(this, 0, intent0, 0);
//set timer you want alarm to work (here I have set it to 8.30)
Calendar timeOff9 = Calendar.getInstance();
timeOff9.set(Calendar.HOUR_OF_DAY, 8);
timeOff9.set(Calendar.MINUTE, 30);
timeOff9.set(Calendar.SECOND, 0);
//set that timer as a RTC Wakeup to alarm manager object
alarmMgr0.set(AlarmManager.RTC_WAKEUP, timeOff9.getTimeInMillis(), pendingIntent0);
Run Code Online (Sandbox Code Playgroud)
除了一件事,这完美无缺.
通知设置为8:30与警报管理器如果我在8:30,9:00之后启动应用程序,通知仍然显示..
警报是否有可能在8:30但不是晚些时候熄灭?
编辑
对于任何有同样问题的人,这是解决方案:
把它放在你的广播接收器中:
long current_time …Run Code Online (Sandbox Code Playgroud) 示例:我有一些源代码, FooBar.java
javac FooBar.java
Run Code Online (Sandbox Code Playgroud)
这给了我FooBar.class.
为什么JVM命令行API FooBar代替FooBar.class(在UNIX FYI上工作)?
这是片段:
String myTime = someTime / 1e9d + ",";
Run Code Online (Sandbox Code Playgroud)
someTime是通过使用派生的System.nanoTime().是什么1e9d在这里做?
我在Android上使用MediaExtractor编辑MP4来获取音频和视频曲目,然后使用MediaMuxer创建新文件.它工作正常.我可以在手机(和其他播放器)上播放新的MP4,但无法在网络上传输文件.当我停止MediaMuxer时,它会生成一条日志消息
"mp4文件不会流式传输."
我查看了底层的本机代码(MPEG4Writer.cpp),看起来编写器在计算所需的moov盒大小时遇到了麻烦.如果没有将比特率作为参数提供给作者,它会尝试使用某种启发式进行猜测.问题是MediaMuxer无法提供设置MPEG4Writer参数的功能.我是否遗漏了某些东西,或者我是不是在寻找其他一些生成文件(或标题)的方法?谢谢.
java ×4
android ×3
api ×2
alarmmanager ×1
architecture ×1
arrays ×1
c# ×1
concurrency ×1
converter ×1
future ×1
json ×1
jvm ×1
mediamuxer ×1
midi ×1
nanotime ×1
node.js ×1
pcm ×1
php ×1
reflection ×1
rest ×1
restify ×1
synthesizer ×1
time ×1
video ×1