2017-05-10 4 views
0

brauchen Hilfe mit folgen Problem. ich heruntergeladen 3 Videos von YouTube und geschnitten, dass mit NReco.VideoConverter.FFMpegConverter.ConvertMedia in kleine Stücke mit Follow-Code:FFMPEG NReco.ConcatMedia Dateien aus verschiedenen Quellen zusammenführen

 ffMpegConverter.ConvertMedia (SourceFile, Format.mp4, tempVideo, Format.mp4, 
     new ConvertSettings() { 
      Seek = StartTime, 
      MaxDuration = (EndTime - StartTime), 
      VideoCodec = "libx264", 
      AudioCodec = "mp3", 
      CustomOutputArgs = string.Format ("-vf \"pad=640:360:x=(640-iw)/2:y=(360-ih)/2:color=black\" -af \"volume = {0}dB\"", volumeMultiplier), 
      VideoFrameRate = 25, 
      AudioSampleRate = 44100, 
      VideoFrameSize = "640x360" 
     }); 

Und hinzugefügt Wasserzeichen (mit nur Inline-ffmpeg-Befehl):

-i {0} -i {1} -filter_complex \"[1:v]scale={3}:{4},format=argb,colorchannelmixer=aa={5}[wat];[0:v][wat]overlay=main_w-overlay_w-{6}:main_h-overlay_h-{7} [out]\" -map \"[out]\" -map 0:a -y {2} 

Und wenn ich Video-Stücke aus den Quellen # 1 und # 2 zusammenhalte, ist es ok, aber nicht mit # 3. Ich glaube, es gibt eine Art von Kompatibilitätsproblem zwischen (# 1, # 2) und (# 3) Formate, aber das sollte bei ConvertMedia-Bühne behoben werden, ist das nicht? Vielleicht habe ich einige OutPut-Parameter verpasst?

Beispiel für Mediainfo-Datei von der Quelle # 3 https://jpst.it/Zoof

und eine für Datei von der Quelle # 2 https://jpst.it/ZooC

Warum, dass Dateien nicht verbunden werden können, wo ein Grund suchen?

Danke.

Antwort

0

Ich habe gefunden keinen Grund, warum NReco nur knapp sein Ziel, dass die Dateien zusammengeführt, aber ich schrieb eigenen Wrapper

 static void Main (string[] args) { 
     concatMedia (new string[] { 
     args[0], args[1] 
     }, args[2]); 
    } 

    private static string makeTempFile (string fileName) { 
     FFMpegConverter c = new FFMpegConverter(); 
     FileInfo fileInfo = new System.IO.FileInfo (fileName); 
     string tempFile = Path.Combine (fileInfo.DirectoryName, Path.GetFileNameWithoutExtension (fileName) + ".ts"); 
     c.Invoke (string.Format ("-i {0} -c copy -bsf:v h264_mp4toannexb -f mpegts -y {1}", fileName, tempFile)); 
     return tempFile; 
    } 

    private static void concatMedia (string[] files, string output) { 
     FFMpegConverter c = new FFMpegConverter(); 
     List<string> tempFiles = new List<string>(); 
     foreach (var item in files) { 
      tempFiles.Add (makeTempFile (item)); 
     } 
     c.Invoke (string.Format ("-i \"concat:{0}\" -c copy -bsf:a aac_adtstoasc -y {1}", string.Join ("|", tempFiles), output)); 
     foreach (var item in tempFiles) { 
      System.IO.File.Delete (item); 
     } 
    } 
Verwandte Themen