PHP和ffmpeg-为JW播放器动态转换为H.264

PHP和ffmpeg-为JW播放器动态转换为H.264,php,ffmpeg,h.264,Php,Ffmpeg,H.264,因此,我正在处理的项目在服务器上已经有成吨的MP4文件,需要在嵌入式播放器中播放。理想情况下,我们希望使用已经为大多数视频设置好的JW播放器。不幸的是,许多旧的视频都是MPEG-4编码的,需要额外的插件才能在浏览器中播放 我想做的是能够将这些视频转换成JW播放器支持的格式,比如H.264。现在,我已经做到了一部分,因为我可以让它转换旧的MP4文件,但是我很难将数据直接传递给播放器 这是我当前正在进行转换的脚本(这是media\u converted.php): 我试图将上面的文件作为视频源传

因此,我正在处理的项目在服务器上已经有成吨的MP4文件,需要在嵌入式播放器中播放。理想情况下,我们希望使用已经为大多数视频设置好的JW播放器。不幸的是,许多旧的视频都是MPEG-4编码的,需要额外的插件才能在浏览器中播放

我想做的是能够将这些视频转换成JW播放器支持的格式,比如H.264。现在,我已经做到了一部分,因为我可以让它转换旧的MP4文件,但是我很难将数据直接传递给播放器

这是我当前正在进行转换的脚本(这是
media\u converted.php
):


我试图将上面的文件作为视频源传递给JW播放器:在JW播放器的变量脚本中,如下所示:

so.addVariable('file','media\u converted.php?MediaName=12345')

虽然我相信这应该行得通,但事实并非如此

即使转换似乎有效并且正在发送给播放器,也很难说,因为我认为浏览器在播放任何内容之前试图下载整个文件。显然,我不能让用户那样等待

我已经研究了qt faststart,我能够在我的计算机上使用它来修改文件,以便它可以在加载时开始播放。不幸的是,这需要两个步骤。我首先必须完全转换文件,然后在转换完成后,我必须对其使用qt-faststart.exe。同样,这不是一个真正的即时解决方案。我相信一定有某种方法可以在一个命令中产生类似的结果,然后输出给玩家。。。对吧?

服务器上的视频数据比我当前硬盘上的空间还多,因此永久性地重新编码每个视频,即使是成批,也会很麻烦,因为我必须下载一些,转换,重新加载,下载更多,等等。如果我必须这样做,我会,但我更愿意让它们保持原样,能够在运行中进行代码转换


有什么想法吗?

我认为这是不可能的。必须先进行转换,然后才能加载文件。看看维梅奥。上载文件时,系统会先转换格式,然后才能播放该文件。那太糟糕了。谢谢我想我只需要把它们全部转换过来。哦,好吧。不管怎样,从长远来看,这会更好。:)是的,我听到了。我可能错了,所以可能值得再多研究一点。然而,我所看到的一切都表明这是不可能的(不做大量的定制工作)。我已经花了几个小时研究了各种可能性。到目前为止,可以找到即时转码的解决方案。然而,无论如何,永久地转换它们更为理想,而且使用我编写的AHK脚本,这个过程基本上是自动化的。再次感谢。
<?php
    error_reporting(0);
    if (!isset($_GET["MediaName"])) {
        $_GET["MediaName"] = "GSX238";
    }       
    require_once("php/media_center_functions.php");
    $MediaURL = ConstructVideoURLInternap($_GET["MediaName"]);  
    header("Content-Transfer-Encoding: binary");
    //header('Content-type: video/mp4');
    //$calculatedFileSize = filesize($MediaURL);
    //header("Content-Length: {$calculatedFileSize}");

    $cmd = 'ffmpeg -i "'.$MediaURL.'"  -vcodec libx264 -acodec copy -f mp4  -moov_size 32000 "_temp/'.time().'_temp.mp4"  2> _temp/media_converter_output.txt';
    passthru($cmd);

?>