I have a strange issue with sysread and postgres (and ffpeg/stderr)

If the main program throws an error sysread stops if I write to the
database (a log table)

this is the program (need open3 because ffmpeg writes to stderr not stdout)

use IPC::Open3;
my($file,$in, $out);
my $pid;
use Symbol 'gensym'; $file = gensym;
if ($soptsr->{command}=~/ffmpeg/){
    $pid=open3(undef, undef, $file,$soptsr->{command},
@{$soptsr->{optsin}});# or die print "$!";
}

our $tag=  Glib::IO->add_watch ( fileno($output), ['in', 'hup'], sub {
#local $SIG{__WARN__} = sub {};


my ($fileno, $condition,$tag) = @_;

if ($condition =~ /hup/) {
    close $file;
    Gtk3->main_quit();
    return 1;
}

my $line ;

sysread $output, $line, 256 or die print $!;
my @line=split /\n/,$line;
foreach my $l (@line){
print $DBI::err,"\n";#,$ins->{errstr},"\n";
#print $condition,"\n";
   #$ins->execute($soptsr->{transref},$soptsr->{fileid},$l);# if $l;
}
print "\n",$condition,"\t",$line,"\n";### this stops if I write todb with
prog error

return 1;
 }
 );
}




This is the output


[ in ] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/srv/data/Downloads/xxxxxxxxxxxxxxxxxx.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
  Duration: 01:06:48.30, start: 0.000000, bitrate: 237 kb

[ in ] /s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 /
0x31637661), yuv420p, 426x240, 201 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc
(default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x613470

[ in ] 6D), 24000 Hz, mono, fltp, 32 kb/s (default)
    Metadata:
      handler_name    : VideoHandler

### If I write to db output stops here ###
### If I dont the output continues ###

[ in ] Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help


[ in ] [AVFilterGraph @ 0x55b6655bf800] No such filter: '-setpts'


[ in ] Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0


[ in ] Conversion failed!

Any ideas?

(I have fixed the error in the program, but I need to be able to log if I
have other errors)

Reply via email to