避免两个视频之间的时间间隔

时间:2013-09-05 10:35:29

标签: javascript node.js raspberry-pi

自投票以来被重审

我的目标是在没有过渡的情况下互相播放视频文件。 由于我正在使用Raspberry Pi,我似乎被迫停留在omxplayer上播放视频文件。

我在node.js中编写它,因为异步编程对应用程序的其他非相关部分很有用。

我的问题是,在每个视频之间,屏幕在播放下一个视频之前显示控制台的时间很短。我正在寻找任何方法来无限制地进行过渡。

对于那些想要重现这一点的人,请输入以下代码:

var Playlist=[],
    PIndice=0,
    PATH='';
    DOWNLOAD_DIR='';
    exec=require('child_process').exec,
    execF=require('child_process').execFile;

function start(){
    Playlist.push('video1.mp4');
    Playlist.push('video2.mp4');
    PATH=process.argv[1].substr(0, process.argv[1].indexOf('app.js', 0));
    DOWNLOAD_DIR=PATH+'downloads/';
    play(Playlist[0]);
}

function play(file){
    file=DOWNLOAD_DIR+file;
    execF(PATH+'play.sh', [file], function(error, stdout, stderr){
        if (err){throw err;}
        if (stdout){console.log(stdout);}
        if (stderr){console.log(stderr);}

        if(PIndice < Playlist.length -1){
            PIndice=PIndice+1;
        }else{
            PIndice=0;
        }
        play(Playlist[PIndice]);
    });
}

start();

你也需要这个简单的脚本,在play.sh中:

#!/bin/sh
omxplayer $1 > /dev/null

app文件夹看起来像:

folder/
    -app.js
    -play.sh
    -download/
        -video1.mp4
        -video2.mp4

您可以通过键入(在命令行中)

来启动应用程序
node app.js

omxplayer不接受多个文件播放,所以我每次都需要启动它。 如果有一个玩家可以在RPi上播放多个文件,我也会接受它。

编辑:

经过研究,似乎没有其他视频播放器用于覆盆子pi(是的,vlc,但它只是吃掉所有的gpu而不是玩任何东西,其他玩家只是基于omxplayer),所以我不能在这里寻找解决方案。

有预加载视频的方法吗?也许调整播放以在播放结束之前的某一秒开始播放以下视频?或者我是否需要重写omxplayer本身?任何想法都赞赏

编辑2:

找到old experimental edit of omxplayer with looping video,我正在尝试编译它以进行测试。

4 个答案:

答案 0 :(得分:1)

如果不太了解应用程序的性能,很难对应用程序的性能进行一般性陈述,因此我建议您对应用程序进行概要分析,以了解性能瓶颈的位置。 Node已经构建了对分析的支持。只需运行另外一个选项。

node --prof your_file.js

从它的声音中你可能想要更快地预加载下一个视频以避免用户看到的暂停

答案 1 :(得分:1)

我在github的一个问题报告中发现了一个omxplayer的修改版本,它以最后6次mounth更新和视频文件中的一些严格要求为代价,可以在循环中播放多个文件,而无需在每个文件。

它改变了我的算法的一部分,但至少我回到了项目要求。

对于那些可以搜索它的人:https://github.com/huceke/omxplayer/issues/16,检查pasky注释,其中一个有二进制文件的链接。

答案 2 :(得分:0)

检查Flod,用于对Node.js Web服务器进行基准测试的工具

答案 3 :(得分:0)

您可以通过发出以下命令将控制台的内容清除为黑色:

/ usr / bin / tvservice -p

然后你的omxplayer东西会在电影之间切换为黑色。