2017-05-10 1 views
0

ont besoin d'aide avec le numéro de suivi. Je téléchargé 3 vidéos de youtube, et coupé avec qui NReco.VideoConverter.FFMpegConverter.ConvertMedia en petits morceaux avec le code de suivi:FFMPEG NReco.ConcatMedia la fusion des fichiers provenant de différentes sources

 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" 
     }); 

Et filigrane ajouté (avec commande ffmpeg juste en ligne):

-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} 

Et quand je concène des vidéos des sources n ° 1 et n ° 2, ça va, mais pas avec n ° 3. Je crois qu'il existe une sorte de problème de compatibilité entre les formats (# 1, # 2) et (# 3), mais cela devrait être corrigé à l'étape ConvertMedia, n'est-ce pas? Peut-être que j'ai manqué certains paramètres OutPut?

MediaInfo exemples pour le fichier de la source n ° 3 https://jpst.it/Zoof

Et pour un fichier à partir de la source # 2 https://jpst.it/ZooC

Pourquoi que les fichiers ne peuvent être joints, où chercher une raison?

Thanx.

Répondre

0

Je ne l'ai pas trouvé une raison pour laquelle na pas NReco que les fichiers ont fusionné, mais je l'ai écrit propre emballage

 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); 
     } 
    }