2011-09-23 4 views
2

J'essaye de transcoder un fichier mxf en type flv en utilisant Xuggler.Utilisation de Xuggler pour MXF à FLV

Mais je reçois cette exception -

2011-09-23 11:48:06,328 [main] WARN com.xuggle.xuggler - Got error: picture is not of the same PixelType as this Coder expected (../../../../../../../csrc/com/xuggle/xuggler/StreamCoder.cpp:1204) 

Mon code est très simple et il ressemble à ceci -

public static void main(String[] args) { 

    // create a media reader 
    IMediaReader mediaReader = ToolFactory.makeReader(inputFilename); 

    // create a media writer 
    IMediaWriter mediaWriter = ToolFactory.makeWriter(outputFilename, 
      mediaReader); 

    // add a writer to the reader, to create the output file 
    mediaReader.addListener(mediaWriter); 

    // create a media viewer with stats enabled 
    // IMediaViewer mediaViewer = ToolFactory.makeViewer(true); 

    // add a viewer to the reader, to see the decoded media 
    // mediaReader.addListener(mediaViewer); 

    // read and decode packets from the source file and 
    // and dispatch decoded audio and video to the writer 
    while (mediaReader.readPacket() == null) 
     ; 

} 

Il fonctionne pour les fichiers comme types MP4 et MOV.

N'importe quel pointeur s'il vous plait.

Puisque personne n'a répondu et que je n'ai trouvé aucune solution, j'ai décidé de faire en utilisant des arguments de commande de Java.

J'ai essayé et je reçois des erreurs -

public class FfmpegCommandTest { 

public static void main(String args[]) { 

    String commandStr[] = { "ffmpeg -f dv -i \"C:\temp\0001NY.MXF\" -ar 44100 -v codec libx264 -maxrate 2000k -bufsize 2000k -vf scale=\"iw/2:ih/2\" -strict experimental -vstats_file \"C:\nasir\progress.txt\" \"C:\temp\0001NYoutput-short1.mov\"" }; 
    // print the command to execute 
    for (String x : commandStr) { 
     System.out.print(x + " "); 
    } 

    // execute ffmpeg with the command generated by the previous segment 
    try { 
     ProcessBuilder proc = new ProcessBuilder(commandStr); 
     proc.directory(new File("C:\temp")); 
     //proc.command(commandStr); 
     proc.start(); 

    } catch (IOException ex) {   
     ex.getMessage(); 
     ex.printStackTrace(); 
    } 
} 
} 

l'erreur est

The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at com.xuggle.xuggler.demos.FfmpegCommandTest.main(FfmpegCommandTest.java:21) 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 

Répondre

1

pour la substance de commande: utilisez \"C:\\temp\\0001NY.MXF\" au lieu de \ "C: \ temp \ 0001NY.MXF \ ".

Voir double barre oblique inverse.

Questions connexes