我有一个后台ffmpeg进程,它正在输出一个音频文件,我想把这个文件推到用户的web浏览器,同时ffmpeg继续在文件上写。我尝试了下面的,但是这个发送0字节的文件。在
// open the file in a binary mode
$fp = fopen($fname, 'rb');
// send the right headers
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fname));
ob_end_clean();
fpassthru($fp);
exit;
无法从PHP/Python启动ffmpeg并在此处捕获输出。在
在这里,
fpassthru
函数不能起作用。此外,还需要知道文件何时完成。在文件读取功能在到达文件结尾时停止。如果有一个并发的编写器增加了文件的长度,那么读卡器在看到EOF之前会走多远是不确定的。此外,没有明确的方法-通过文件操作-知道文件编写器是否完成。在
尝试使用如下循环(psuedo代码)在超时的情况下进行读取可能是可行的:
如果有帮助的话,我可以把它放到PHP代码中。在
下面是PHP代码,它使用两个文件
^{pr2}$in.dat
和out.dat
:注意睡眠的奇怪位置是为了防止在最后一次尝试读取后的一秒钟内睡着。在
为此,我建议将空闲超时限制设置为大于10。在
相关问题 更多 >
编程相关推荐