Thread Installationsproblem mit FFmpeg::Command auf Win7 (18 answers)
Opened by bianca at 2017-08-29 19:19

bianca
 2017-09-08 17:53
#187380 #187380
User since
2009-09-13
6976 Artikel
BenutzerIn

user image
Hi!
Ich komme hier mit system und exec leider doch nicht weiter. Grund: das läuft als Intranet Webseite und solche Konvertierungen dauern teilweise etliche Zeit. Daher mein altbewährtes Hausmittel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Win32;
use Win32::Process;
if (
    Win32::Process::Create(
        my $ProcessObj,
        'd:\FFmpeg\bin\ffmpeg.exe',
        'ffmpeg -i "d:\ein musikvideo.mp4" -filter_complex "[0:v]fade=t=out:st=229:d=4[v]; [0:a]afade=t=out:st=229:d=4[a]" -map "[v]" -map "[a]" -f mp4 "d:\ein neues video.mp4" 2>out.txt',
        0,
        Win32::Process::NORMAL_PRIORITY_CLASS(),#|Win32::Process::DETACHED_PROCESS(),
        '.',
    )
) {
    my $pid;
    if ($pid = $ProcessObj->GetProcessID()) {
        say "PID erhalten: $pid";
    }
    else {
        die 'Kann PID zum Kindprozess nicht ermitteln (Zeile '.__LINE__.')';
    }
}
else {
    die "Kann Verarbeitungsprozess nicht starten: '"
        .Win32::FormatMessage(Win32::GetLastError())
        ."' (Zeile ".__LINE__.')'
    ;
}

  • Win32::Process::DETACHED_PROCESS() ist auskommentiert, damit man das Problem sieht.
  • Lässt man im dritten Parameter ganz hinten 2>out.txt weg sieht man das Kommando sauber durchlaufen.
  • In diesem Fall ist die Eingabedatei ein beliebiges 3:53 Minuten langes mp4 Musikvideo von Youtube. Das sind 233 Sekunden und ab Sekunde 229 wird bis zum Ende (duration 4 Sekunden) ein fading out für Bild und Ton eingebaut. Mehr macht das Kommando nicht.

Problem:
Quote
[NULL @ 0000000002b169c0] Unable to find a suitable output format for '2>out.txt'
2>out.txt: Invalid argument

Das ist an sich hier erklärt: https://superuser.com/a/685061 im vierten Kommentar von slhck. Das heißt, ffmpeg versucht 2>out.txt anstatt "d:\ein neues video.mp4" als Ausgabedatei zu nehmen. Und dort steht, dass man das durch explizite Angabe des Formats verhindert. Ich denke, dass ich das durch den Parameter -f mp4 tue. Ändert aber nichts.
Was mache ich falsch?

Vielen Dank (für die Frage....)
10 print "Hallo"
20 goto 10

View full thread Installationsproblem mit FFmpeg::Command auf Win7