1


我对一个带有特殊水印的文件进行编码以供用户下载
我希望能够在 ffmpeg 对文件进行编码时启动下载。

我有一个创建水印的 php 页面,启动 ffmpeg 并使用 X-sendifle
开始下载 下载不开始,添加 sleep(15) 让我们开始下载,我只收到完成的内容

实际上我使用 Apache2 作为带有 X-sendfile mod 的网络服务器

4

1 回答 1

1


好的,我终于找到了
怎么做

所以这是我用来在 ffmpeg 编码输出时发送 webm 或 flv 文件等文件的代码

shell_exec('ffmpeg command');
sleep(2); //wait few second for the software start
$foutput ="where/is/your/output.file";
header('Content-Disposition: attachment; file.name.for.the.user"');
header("Keep-Alive:timeout=200, max=500");
//sending by chunk
set_time_limit(3600); 
$file =fopen($foutput , 'r');
$files = fstat($file);
$filesize= $files['size'];
$last = 0;
echo fread($file , $filesize);
sleep(5); //wait a little for the software add new bytes
$last = $filesize;
$files = fstat($file);
$filesize= $files['size'];
$done =0;
while( $done < 2 ){
    if ($filesize != $last){
        fseek($file , $last);
        $read = $filesize - $last ;
        echo fread($file , $read);
        $last =$filesize;
        sleep(5);
        $files = fstat($file);
        $filesize= $files['size'];
    }else{
        fclose($file);
        return 0;
    };
};

我是编码的菜鸟,我的“while”有问题,只是代码工作得很好,没有任何问题
不要使用文件大小,这个命令不喜欢文件大小一直变化并且只返回 4096案例
下载会很慢,这是正常的,你会收到一个块一个块,这个软件用ffmpeg做的怎么样,传输在200到1200 kb/s之间

于 2016-02-13T08:33:30.920 回答