Media-Convert

 view release on metacpan or  search on metacpan

lib/Media/Convert/FfmpegInfo.pm  view on Meta::CPAN

use JSON::MaybeXS;

has 'codecs' => (
	is => 'ro',
	isa => 'HashRef',
	lazy => 1,
	builder => '_build_codecs',
);

sub _build_codecs {
	local $/ = "";
	open my $ffmpeg, "-|", "ffmpeg -codecs 2>/dev/null";
	my $codeclist = <$ffmpeg>;
	close $ffmpeg;
	my $parsing = 0;
	my $rv = {};
	foreach my $line(split /\n/, $codeclist) {
		if(!$parsing) {
			if($line =~ /^ ---+/) {
				$parsing = 1;
			}

lib/Media/Convert/KeyframeFinder.pm  view on Meta::CPAN

has 'keyframes' => (
	is => 'ro',
	isa => 'ArrayRef[Num]',
	lazy => 1,
	builder => '_build_keyframes',
);

sub _build_keyframes {
	my $self = shift;

	local $/ = "";
	open my $jsonpipe, "-|:encoding(UTF-8)", "ffprobe", "-loglevel", "quiet", "-print_format", "json", "-select_streams", "v", "-skip_frame", "nokey", "-show_frames", "-show_entries", "frame=pts_time,pict_type,best_effort_timestamp_time", $self->asset->...
	my $data = decode_json(<$jsonpipe>);
	my $rv = [];
	foreach my $frame(@{$data->{frames}}) {
		next unless $frame->{pict_type} eq "I";
		push @$rv, ($frame->{pts_time} // $frame->{best_effort_timestamp_time}) + 0;
	}
	return $rv;
}



( run in 0.502 second using v1.01-cache-2.11-cpan-49f99fa48dc )