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";