diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index 9840e891..5145dcd9 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -439,7 +439,7 @@ class Image
$database->execute(
"UPDATE images SET ".
"lossless = :lossless, ".
- "video = :video, audio = :audio,image = :image, ".
+ "video = :video, video_codec = :video_codec, audio = :audio,image = :image, ".
"height = :height, width = :width, ".
"length = :length WHERE id = :id",
[
@@ -448,6 +448,7 @@ class Image
"height" => $this->height ?? 0,
"lossless" => $database->scoresql_value_prepare($this->lossless),
"video" => $database->scoresql_value_prepare($this->video),
+ "video_codec" => $database->scoresql_value_prepare($this->video_codec),
"image" => $database->scoresql_value_prepare($this->image),
"audio" => $database->scoresql_value_prepare($this->audio),
"length" => $this->length
diff --git a/ext/handle_video/main.php b/ext/handle_video/main.php
index b5b53465..bc0a1870 100644
--- a/ext/handle_video/main.php
+++ b/ext/handle_video/main.php
@@ -67,6 +67,7 @@ class VideoFileHandler extends DataHandlerExtension
if (array_key_exists("streams", $data)) {
$video = false;
$audio = true;
+ $video_codec = null;
$streams = $data["streams"];
if (is_array($streams)) {
foreach ($streams as $stream) {
@@ -79,6 +80,7 @@ class VideoFileHandler extends DataHandlerExtension
break;
case "video":
$video = true;
+ $video_codec = $stream["codec_name"];
break;
}
}
@@ -93,7 +95,15 @@ class VideoFileHandler extends DataHandlerExtension
}
}
$event->image->video = $video;
+ $event->image->video_codec = $video_codec;
$event->image->audio = $audio;
+ if($event->image->get_mime()==MimeType::MKV &&
+ ($event->image->video_codec == "vp9" ||
+ $event->image->video_codec == "vp8")) {
+ // WEBMs are MKVs with the VP9 or VP8 codec
+ // For browser-friendliness, we'll just change the mime type
+ $event->image->set_mime(MimeType::WEBM);
+ }
}
}
if (array_key_exists("format", $data)&& is_array($data["format"])) {
diff --git a/ext/media/main.php b/ext/media/main.php
index 769e1b56..986f48ee 100644
--- a/ext/media/main.php
+++ b/ext/media/main.php
@@ -931,6 +931,13 @@ class Media extends Extension
$database->begin_transaction();
}
+
+ if ($this->get_version(MediaConfig::VERSION) < 3) {
+ $database->execute($database->scoreql_to_sql(
+ "ALTER TABLE images ADD COLUMN video_codec varchar(512) NULL"
+ ));
+ $this->set_version(MediaConfig::VERSION, 3);
+ }
}
public static function hex_color_allocate($im, $hex)
diff --git a/themes/lite/view.theme.php b/themes/lite/view.theme.php
index fa25386e..93db16d3 100644
--- a/themes/lite/view.theme.php
+++ b/themes/lite/view.theme.php
@@ -34,6 +34,9 @@ class CustomViewImageTheme extends ViewImageTheme
Filesize: $h_filesize
Type: ".$h_type."
";
+ if($image->video_codec!=null) {
+ $html .= "
Video Codec: $image->video_codec";
+ }
if ($image->length!=null) {
$h_length = format_milliseconds($image->length);
$html .= "
Length: $h_length";