我正在尝试用 javascript 用覆盆子 pi 制作电视,这种类型会一遍又一遍地播放相同的播放列表。播放文件不是问题,但我被困在 javascript 的异步部分这里代码困扰我:
function play (file)
{
exec('home/pi/play.sh', [file], function (error, stdout, stderr){
if (PIndice != Playlist.length-1){
PIndice=PIndice+1;
}else{
PIndice=0;
}
play(Playlist[PIndice]);
});
当我确定其中有路径名时,另一个函数使用 Playlist[0] 调用它。
我的问题是:它安全吗?递归最终会杀死cpu吗?我虽然关于使用 setTimeOut 但我没有找到任何方法来获取视频的持续时间。
我试过循环调用播放,但我只是成功地同时播放了整个播放列表。
我不要求一个全面的解决方案,只是提示我在哪里可以找到正确的方法有没有办法在再次调用之前等待播放结束,即使 javascript 是异步的?
编辑:所有文件都在 MPEG4 中,播放列表只是一个字符串数组,其中包含要播放的视频文件的路径名。它应该在没有互联网的情况下播放,所以没有浏览器,我不能使用 html 请求来获取视频的元数据来获取它的持续时间。
EDIT2:我忘了告诉 play.sh 如果没有其他实例就启动播放器,它只是以前版本的保留,我不知道 execFile 的回调