如何将海报添加到多个视频列表中的特定视频元素

How to add a poster to a specific video element from a list of multiple videos

我想在特定视频元素上添加 poster 标签,其中该特定视频的 src 会导致 404 错误。

进一步说明: 我从数据库中得到了一个视频列表,有些可能会导致 404 错误,这意味着视频文件没有正确上传,我的目标是为这些视频添加一个 poster 标签,这样我就可以告诉正常工作与不正常工作的区别

从数据库中获取视频

<?
$storage = new ObjectStorage;

$db->query("SELECT videoId, videoVsId, videoFile, videoUploadTime FROM videos WHERE vidOjId='$jbId' AND videoArchived = '0000-00-00 00:00:00' AND videoFile LIKE '%/videos/uploaded_videos/items/%'");
$i = 0;
while ($db->next_record()) {
    list($videoId, $videoVsId, $videoFile, $vidUploaded) = $db->Record;
    $vidname = after("_video_", $videoFile);

    $url = "https://website.website.com$videoFile";

    if($vidUploaded) {
        $vidUploaded = "Uploaded: ".date("H:i d/m/Y", strtotime($vidUploaded));
    } else {
        $vidUploaded = "Last edited: ".date("H:i d/m/Y", filemtime("../uploaded_videos/".$videoFile));
    }

    $brokenPoster = "https://media.geeksforgeeks.org/wp-content/cdn-uploads/20190710102234/download3.png";

然后我在检查 url 是否坏了

if(@file_get_contents($url)){
    $brokenPoster = "";
} else { 
    $brokenPoster;
}

此时我不确定该怎么做,到目前为止我所做的是以下内容

 ?>
        <div class="videoDiv_<?= $vidId ?>">
            
            <div class="videosDiv" >
                <video id="allVideos" width="320" height="240" controls 
                 poster="<?= $brokenPoster?>"           
                 class="img_<?= $videoId?>" src="<?= $videoFile."?nocache=".rand()?>"
                     type="video/mp4">
                </video>    
            </div>
            
        </div>

    <? $i++; } ?>

显然,上面的海报将显示所有视频元素的海报,其中有 6 个视频元素,其中只有 2 个不能播放 404。

有没有一种简单的方法可以将海报显示给特定的视频元素?

你似乎在正确的轨道上,但如果你想在损坏的 link 上显示海报 你可以测试 $brokenPoster 是否为空或者不是,像这样:

<div class="videoDiv_<?= $vidId ?>">
            
    <div class="videosDiv" >
        <video id="allVideos" width="320" height="240" controls 
         <?php if (!empty($brokenPoster) { echo 'poster="'.$brokenPoster.'"'; } ?>
         class="img_<?= $videoId?>" src="<?= $videoFile."?nocache=".rand()?>"
             type="video/mp4">
        </video>    
    </div>
    
</div>