Probably fixed things by not really doing anything in particular?
This commit is contained in:
parent
fb9d9b02a0
commit
d8e02e7f12
2 changed files with 25 additions and 11 deletions
|
@ -3,6 +3,7 @@ namespace Uiharu;
|
||||||
|
|
||||||
use stdClass;
|
use stdClass;
|
||||||
use Imagick;
|
use Imagick;
|
||||||
|
use RuntimeException;
|
||||||
use Index\IO\Stream;
|
use Index\IO\Stream;
|
||||||
use Index\IO\ProcessStream;
|
use Index\IO\ProcessStream;
|
||||||
|
|
||||||
|
@ -23,23 +24,35 @@ final class FFMPEG {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function probe(string $url): ?object {
|
public static function probe(string $url): ?object {
|
||||||
return json_decode(
|
$command = sprintf(
|
||||||
shell_exec(
|
'ffprobe -show_streams -show_format -print_format json -v quiet -i %s',
|
||||||
sprintf(
|
escapeshellarg($url)
|
||||||
'ffprobe -show_streams -show_format -print_format json -v quiet -i %s',
|
|
||||||
escapeshellarg($url)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$ffprobe = proc_open($command, [1 => ['pipe', 'w'], 2 => ['pipe', 'w']], $pipes);
|
||||||
|
if(!is_resource($ffprobe))
|
||||||
|
throw new RuntimeException('Could not open ffprobe.');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stderr = trim(stream_get_contents($pipes[2]));
|
||||||
|
if(!empty($stderr))
|
||||||
|
throw new RuntimeException('ffprobe: ' . $stderr);
|
||||||
|
|
||||||
|
$stdout = trim(stream_get_contents($pipes[1]));
|
||||||
|
if(empty($stdout))
|
||||||
|
throw new RuntimeException('ffprobe did not report any errors but exited without any output');
|
||||||
|
} finally {
|
||||||
|
proc_close($ffprobe);
|
||||||
|
}
|
||||||
|
|
||||||
|
return json_decode($stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function cleanProbe(string $url): ?object {
|
public static function cleanProbe(string $url): ?object {
|
||||||
return self::cleanProbeResult(self::probe($url));
|
return self::cleanProbeResult(self::probe($url));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function cleanProbeResult(?object $in): ?object {
|
public static function cleanProbeResult(?object $in): object {
|
||||||
if($in === null)
|
|
||||||
return null;
|
|
||||||
$out = new stdClass;
|
$out = new stdClass;
|
||||||
|
|
||||||
if(!empty($in->format)) {
|
if(!empty($in->format)) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace Uiharu\Lookup;
|
||||||
use Uiharu\AudioTags;
|
use Uiharu\AudioTags;
|
||||||
use Uiharu\Url;
|
use Uiharu\Url;
|
||||||
use Index\MediaType;
|
use Index\MediaType;
|
||||||
|
use Index\Colour\Colour;
|
||||||
|
|
||||||
class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaInfo {
|
class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaInfo {
|
||||||
private object $mediaInfo;
|
private object $mediaInfo;
|
||||||
|
@ -26,7 +27,7 @@ class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaI
|
||||||
public function hasColour(): bool {
|
public function hasColour(): bool {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public function getColour(): int {
|
public function getColour(): Colour {
|
||||||
throw new RuntimeException('Unsupported');
|
throw new RuntimeException('Unsupported');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue