如何将海报添加到多个视频列表中的特定视频元素
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>
我想在特定视频元素上添加 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>