2016-04-29 21 views
0

trimmen Ich möchte eine Musikdatei (mp3) in meiner UWP Win 10 App trimmen. Ich versuche, Naudio zu verwenden, aber es funktioniert nicht in meiner App, also wie kann ich es tun?Wie kann ich MP3-Datei in UWP

Wer irgendwelche Ideen?

Antwort

1

Wenn Sie eine MP3-Datei zuschneiden möchten, können Sie Windows.Media.Editing namespace, insbesondere MediaClip class verwenden.

Diese Klasse wird standardmäßig zum Ausschneiden aus einer Videodatei verwendet. Aber wir können diese Klasse auch verwenden, um MP3-Dateien zu trimmen, indem MediaEncodingProfile in MediaComposition.RenderToFileAsync Methode während des Renderns festgelegt wird.

Es folgt ein einfaches Beispiel:

var openPicker = new Windows.Storage.Pickers.FileOpenPicker(); 
openPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.MusicLibrary; 
openPicker.FileTypeFilter.Add(".mp3"); 

var pickedFile = await openPicker.PickSingleFileAsync(); 
if (pickedFile != null) 
{ 
    //Created encoding profile based on the picked file 
    var encodingProfile = await MediaEncodingProfile.CreateFromFileAsync(pickedFile); 

    var clip = await MediaClip.CreateFromFileAsync(pickedFile); 

    // Trim the front and back 25% from the clip 
    clip.TrimTimeFromStart = new TimeSpan((long)(clip.OriginalDuration.Ticks * 0.25)); 
    clip.TrimTimeFromEnd = new TimeSpan((long)(clip.OriginalDuration.Ticks * 0.25)); 

    var composition = new MediaComposition(); 
    composition.Clips.Add(clip); 

    var savePicker = new Windows.Storage.Pickers.FileSavePicker(); 
    savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.MusicLibrary; 
    savePicker.FileTypeChoices.Add("MP3 files", new List<string>() { ".mp3" }); 
    savePicker.SuggestedFileName = "TrimmedClip.mp3"; 

    StorageFile file = await savePicker.PickSaveFileAsync(); 
    if (file != null) 
    { 
     //Save to file using original encoding profile 
     var result = await composition.RenderToFileAsync(file, MediaTrimmingPreference.Precise, encodingProfile); 

     if (result != Windows.Media.Transcoding.TranscodeFailureReason.None) 
     { 
      System.Diagnostics.Debug.WriteLine("Saving was unsuccessful"); 
     } 
     else 
     { 
      System.Diagnostics.Debug.WriteLine("Trimmed clip saved to file"); 
     } 
    } 
} 
+0

Tks you very much! Du sparst meine Zeit, ich habe 1 Tag damit verbracht! Tics du so sehr! – Thanhtu150

Verwandte Themen