我正在建立一个Wordpress网站,管理员可以从post metabox上传视频文件。
在那篇帖子被保存并且视频文件被附加到帖子之后,我使用ffmpeg在视频的第一秒获取屏幕截图,然后将这个屏幕截图作为JPG文件保存在主题目录的“tmp”目录中。
最后,我想以编程方式将此屏幕截图制作为后期特色图像。我使用media\\u sideload\\u image函数,它通常用于从另一台服务器获取图像,并将该图像设置为后期特色图像,我认为此函数也可以在这种情况下使用。
在我的例子中,视频截图已成功保存到我的主题目录中的“tmp”目录,但media\\u sideload\\u图像部分没有返回任何内容以供进一步处理。以下是我的功能:
function create_video_featured_image($post_id, $image_uri) {
// $image_uri = \'http://localhost/demo-site/wp-content/themes/mytheme/tmp/video_thumb_952.jpg\';
$media = media_sideload_image($image_uri, $post_id);
if(!empty($media) && !is_wp_error($media)){
$args = array(
\'post_type\' => \'attachment\',
\'posts_per_page\' => -1,
\'post_status\' => \'any\',
\'post_parent\' => $post_id
);
// reference new image to set as featured
$attachments = get_posts($args);
if(isset($attachments) && is_array($attachments)){
foreach($attachments as $attachment){
// grab source of full size images (so no 300x150 nonsense in path)
$image = wp_get_attachment_image_src($attachment->ID, \'full\');
// determine if in the $media image we created, the string of the URL exists
if(strpos($media, $image[0]) !== false){
// if so, we found our image. set it as thumbnail
set_post_thumbnail($post_id, $attachment->ID);
// only want one image
break;
}
}
}
}
}
我是否遗漏了什么,或者在这种情况下是否有其他解决方法?
非常感谢!