All
attributes will be probed from ffprobe output unless noted otherwise.
=cut
use JSON::MaybeXS qw(decode_json);
use Media::Convert::CodecMap qw/detect_to_write/;
use Moose;
=head2 url
The file
open my $jsonpipe, "-|:encoding(UTF-8)", "ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", "-show_streams", $self->url;
my $json = "";
while(<$jsonpipe>) {
$json .= $_;
}
close $jsonpipe;
return decode_json($json);
}
return {};
}
sub _probe_audiodata {
my $self = shift;
if(!exists($self->_get_probedata->{streams})) {
return {};
}
foreach my $stream(@{$
package Media::Convert::KeyframeFinder;
use v5.28;
use Moose;
use JSON::MaybeXS qw/decode_json/;
use autodie qw/:all/;
has 'asset' => (
is => 'ro',
isa => 'Media::Convert::Asset',
required => 1,
= shift;
local $/ = "";
my @pipe = ("ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", "-select_streams", "v", "-skip_frame", "nokey", "-show_frames", "-show_entries"
l);
say "Running: '". join("' '", @pipe) . "'";
open my $jsonpipe, "-|:encoding(UTF-8)", @pipe;
my $data = decode_json(<$jsonpipe>);
my $rv = [];
my $offset = $data->{format}{start_
package Media::Convert::Pipe;
use JSON::MaybeXS qw(decode_json);
use Moose;
use Carp;
use autodie qw/:all/;
=head1 NAME
Media::Convert::Pipe - class to generate ffmpeg command lines with Media::Co
:Convert::Normalizer::Ffmpeg;
use Moose;
extends 'Media::Convert::Normalizer';
use JSON::MaybeXS qw/decode_json/;
use Symbol 'gensym';
use IPC::Open3;
use Media::Convert::CodecMap qw/detect_to_writ
0:print_format=json", "-f", "null", "-");
print "Running: '" . join("' '", @command) . "'\n";
open3 (my $in, my $out, my $ffmpeg = gensym, @command);
my $json = "";
my $reading_json = 0;
while(<$
) {
$reading_json++;
}
if($reading_json) {
$json .= $_;
}
if(/}/) {
$reading_json--;
}
}
$json = decode_json($json);
# TODO: abs
package Media::Convert::FfmpegInfo;
use MooseX::Singleton;
use SemVer;
use JSON::MaybeXS;
has 'codecs' => (
is => 'ro',
isa => 'HashRef',
lazy => 1,
builder => '_build_codecs',
);
sub _build_co
fprobe -loglevel quiet -show_program_version -print_format json";
local $/ = undef;
my $json = decode_json(<$ffprobe>);
my $version = $json->{program_version}{version};
if($version =~ /([0-9.]+)/)