【问题标题】:How to create a video stream from a single dynamic image in PHP如何在 PHP 中从单个动态图像创建视频流
【发布时间】:2021-02-15 09:56:13
【问题描述】:

我的服务器上有一个图像文件,其内容每 100 毫秒更改一次。

我可以像往常一样加载和提供这张图片:

$image = file_get_contents('path/to/image.jpg');
header('Content-type: image/jpeg');
echo $image;
<img src="image.php">

因此,每次用户更新屏幕(例如按 F5)时,服务器都会回复不同的图像。我还可以使用 Java Script(例如使用setInterval)来不断更新图像,这样用户就不需要自己更新屏幕了。

但是,我需要将此图像作为连续流(例如 LIVE VIDEO STREAM)提供,以便显示为 HTML5 视频而不是静态图像。

到目前为止,我发现的一些示例使用 PHP-FFMpeg 库来处理流视频。事实证明,这些示例要求我手头有一个视频文件(操作系统中的文件或文件的 URL),而不是我上面描述的单个(动态)图像。

我找到了this example,了解如何使用 PHP 进行流式传输。看起来很有希望。但是代码再次假设我有一个我没有的视频文件 url。

我想知道是否可以根据我的需要调整此代码。比如setHeader()方法如何适配到没有begin和end的场景?考虑到我已经使用file_get_contents左右加载了图像内容,如何正确更改stream()?或者,是否有其他方法可以将此图像作为视频流提供?

【问题讨论】:

    标签: php video-streaming


    【解决方案1】:

    下面的代码应该每 200 毫秒重新加载一次图像。添加一个随机数可以避免任何潜在的缓存,因为您正在请求一个 PHP 页面。

    <html>
        <header>
        
            <script>
            
                function ReloadImage()
                {
                    var image_element = document.getElementById('image_id');
                    
                    image_element.src = 'image.php?rand=' + Math.random();
                }
    
                setInterval(ReloadImage,200);
            
            </script>
            
        </header>
    
        <body>
    
            <img src="image.php" id="image_id">
            
        </body>
    
    </html>
    

    【讨论】:

    • 感谢@Markus,但正如我指出的那样,我已经使用了这种方法,但略有不同,我使用 setTimeout 代替。我实际上正在寻找如何生成要作为 HTML 5 视频打开的视频流。
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 2010-12-24
    相关资源
    最近更新 更多