2017-01-24 10 views
-1

にマージしたり、入力私たちはC#普遍的なプラットフォーム・オーディオ、ビデオ

C#のUWPでそれを行う方法を
ffmpeg cmd 
ffmpeg -i audio.mp3 -i video.mp4 -c copy output 

を知られているように、私はGoogleの私で検索しているのMP4

に入力する.aacを試してみてくださいこの問題に関するこの結果は表示されず、誰もが変換の問題を投稿しています。

しかし、C#のとそれをマージする方法任意のサンプルPRJまたは情報は、ビデオで

答えて

3

C#のユニバーサルプラットフォームオーディオのマージや入力が

UWPは、この要件に関するAPIを提供素晴らしいものです。この機能は、BackgroundAudioTracksメソッドMediaCompositionクラスによってuwpで実装できます。方法の詳細については、Add a background audio track to a compositionを参照してください。シナリオ3のサンプルはMediaEditing official sampleです。例えば

// Create the original MediaComposition 
    var clip = await MediaClip.CreateFromFileAsync(pickedFile); 
    composition = new MediaComposition(); 
    composition.Clips.Add(clip); 

    // Add background audio 
    var picker = new Windows.Storage.Pickers.FileOpenPicker(); 
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.MusicLibrary; 
    picker.FileTypeFilter.Add(".mp3"); 
    picker.FileTypeFilter.Add(".wav"); 
    picker.FileTypeFilter.Add(".flac"); 
    var audioFile = await picker.PickSingleFileAsync(); 
    if (audioFile == null) 
    { 
     rootPage.NotifyUser("File picking cancelled", NotifyType.ErrorMessage); 
     return; 
    } 

    var backgroundTrack = await BackgroundAudioTrack.CreateFromFileAsync(audioFile); 
    composition.BackgroundAudioTracks.Add(backgroundTrack); 

    // Render to MediaElement 
    mediaElement.Position = TimeSpan.Zero; 
    mediaStreamSource = composition.GeneratePreviewMediaStreamSource((int)mediaElement.ActualWidth, (int)mediaElement.ActualHeight); 
    mediaElement.SetMediaStreamSource(mediaStreamSource); 

MediaCompositionは、ビデオファイルから作成されます。 BackgroundAudioTrackは、ビデオにマージするMp3やその他のオーディオファイルから作成されます。最後にrender the MediaComposition to fileが必要です(再生するサンプルはMediaElementにレンダリングされています)。

+0

genereted解像度が非常に低い取得ファイルにMediaCompositionをレンダリングオーディオ –

+0

@AsifShariarでmp4ファイルのクローンを取得する方法があり、 'MediaComposition.RenderToFileAsync'は、[この1](といくつかのオーバーロードメソッドを、持っていますhttps://msdn.microsoft.com/en-us/library/windows/apps/dn652696.aspx)、あなたは品質を維持したいものに 'MediaEncodingProfile'を割り当てることができます。これらのパラメータを使用しているときに問題が解決しない場合は、新しいスレッドを開くことができます。理解に感謝。 –

+0

それは魅力のように動作します –

0
public async Task<StorageFile> MergeVideoAudioAsync(StorageFile videoFile, StorageFile audioFile, string finalFileName, StorageFolder destinationFolder) 
    { 
     MediaComposition composition = new MediaComposition(); 
     var file = await destinationFolder.CreateFileAsync(finalFileName, CreationCollisionOption.GenerateUniqueName); 
     var clip = await MediaClip.CreateFromFileAsync(videoFile); 
     composition.Clips.Add(clip); 
     var backgroundTrack = await BackgroundAudioTrack.CreateFromFileAsync(audioFile); 
     composition.BackgroundAudioTracks.Add(backgroundTrack); 
     await composition.RenderToFileAsync(file); 
     return file; 
    } 
関連する問題