C#通用平台音频合并或输入视频

问题描述 投票:-1回答:2

我尝试在.mp4中输入.aa​​c

我们知道

ffmpeg cmd
ffmpeg -i audio.mp3 -i video.mp4 -c copy output

如何在c#uwp中执行此操作,我在谷歌搜索我没有看到任何有关此问题的结果,每个人都发布了转换问题。

但是如何将它与c#合并为任何样本prj或信息都会很棒

c# audio video merge uwp
2个回答
3
投票

C#通用平台音频合并或输入视频

UWP提供有关此要求的API。此功能可以通过BackgroundAudioTracks类的MediaComposition方法在uwp中实现。详情请参考Add a background audio track to a composition。你可以从MediaEditing official sample的场景3中找到一个样本。

例如:

  // 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
投票
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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.