我尝试在.mp4中输入.aac
我们知道
ffmpeg cmd
ffmpeg -i audio.mp3 -i video.mp4 -c copy output
如何在c#uwp中执行此操作,我在谷歌搜索我没有看到任何有关此问题的结果,每个人都发布了转换问题。
但是如何将它与c#合并为任何样本prj或信息都会很棒
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
进行播放)。
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;
}