Я хочу записывать/записывать в данный момент аудиовоспроизведение в UWP или Windows Phone 8.1, то же самое делает приложение UWP MEE dj в своем приложении, это приложение позволяет захватывать воспроизводимые в данный момент аудио в приложении. Кто-нибудь знает об этом, пожалуйста, ответьте.Запись/запись в настоящее время Воспроизведение аудио
ответ
как установить входные узлы воспроизведения музыки вместо микрофона
Windows.Media.Audio namespace
содержит AudioDeviceInputNode
, AudioDeviceOutputNode
, AudioFileInputNode
, AudioFileOutputNode
и так далее. Микрофон для ввода - AudioDeviceInputNode
, но для воспроизведения музыкального файла вам необходимо использовать AudioFileInputNode
.
Окей, но как я могу захватить этот звук и сохранить его на хранение
Для сохранения в памяти, как я уже говорил выше, мы должны использовать AudioFileOutputNode
. Вот простая демонстрация, вы можете загрузить файл для записи и выбрать файл из хранилища для сохранения результата записи. Код выглядит следующим образом:
XAML Code
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="50">
<TextBlock x:Name="txtresult" ></TextBlock>
<Button x:Name="fileButton" Content="Load audio File for recording" Click="File_Click" MinWidth="120" MinHeight="45" Margin="0,20,0,0"/>
<Button x:Name="OutpuyfileButton" Content="Load output File for save the recording result" Click="OutpuyfileButton_Click" MinWidth="120" MinHeight="45" Margin="0,20,0,0"/>
<Button x:Name="graphButton" Content="Start playing" Click="Graph_Click" MinWidth="120" MinHeight="45" Margin="0,50,0,20"/>
<Button x:Name="graphrecord" Content="Begin recording" Click="graphrecord_Click" ></Button>
</StackPanel>
код за
private AudioFileInputNode fileInput;
private AudioFileOutputNode fileOutputNode;
private AudioDeviceOutputNode deviceOutput;
private AudioGraph graph;
StorageFile outputfile;
public MainPage()
{
this.InitializeComponent();
}
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
await CreateAudioGraph();
}
private async Task CreateAudioGraph()
{
// Create an AudioGraph with default settings
AudioGraphSettings settings = new AudioGraphSettings(AudioRenderCategory.Media);
CreateAudioGraphResult result = await AudioGraph.CreateAsync(settings);
if (result.Status != AudioGraphCreationStatus.Success)
{
// Cannot create graph
await new MessageDialog(String.Format("AudioGraph Creation Error because {0}", result.Status.ToString())).ShowAsync();
return;
}
graph = result.Graph;
// Create a device output node
CreateAudioDeviceOutputNodeResult deviceOutputNodeResult = await graph.CreateDeviceOutputNodeAsync();
if (deviceOutputNodeResult.Status != AudioDeviceNodeCreationStatus.Success)
{
// Cannot create device output node
txtresult.Text+="\n"+ String.Format("Device Output unavailable because {0}", deviceOutputNodeResult.Status.ToString());
return;
}
deviceOutput = deviceOutputNodeResult.DeviceOutputNode;
txtresult.Text += "\n" + "Device Output Node successfully created";
}
private async void File_Click(object sender, RoutedEventArgs e)
{
// If another file is already loaded into the FileInput node
if (fileInput != null)
{
fileInput.Dispose();
}
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
filePicker.FileTypeFilter.Add(".mp3");
filePicker.FileTypeFilter.Add(".wav");
filePicker.FileTypeFilter.Add(".wma");
filePicker.FileTypeFilter.Add(".m4a");
filePicker.ViewMode = PickerViewMode.Thumbnail;
StorageFile file = await filePicker.PickSingleFileAsync();
// File can be null if cancel is hit in the file picker
if (file == null)
{
return;
}
CreateAudioFileInputNodeResult fileInputResult = await graph.CreateFileInputNodeAsync(file);
if (AudioFileNodeCreationStatus.Success != fileInputResult.Status)
{
// Cannot read input file
await new MessageDialog(String.Format("Cannot read input file because {0}", fileInputResult.Status.ToString())).ShowAsync();
return;
}
fileInput = fileInputResult.FileInputNode;
txtresult.Text += "\n" + "File load successfully,input nodes created";
}
private void Graph_Click(object sender, RoutedEventArgs e)
{
if (graphButton.Content.Equals("Start playing"))
{
fileInput.AddOutgoingConnection(deviceOutput);
graph.Start();
graphButton.IsEnabled = false;
}
}
private async void OutpuyfileButton_Click(object sender, RoutedEventArgs e)
{
FileSavePicker saveFilePicker = new FileSavePicker();
saveFilePicker.FileTypeChoices.Add("Pulse Code Modulation", new List<string>() { ".wav" });
saveFilePicker.FileTypeChoices.Add("Windows Media Audio", new List<string>() { ".wma" });
saveFilePicker.FileTypeChoices.Add("MPEG Audio Layer-3", new List<string>() { ".mp3" });
saveFilePicker.SuggestedFileName = "New Audio Track";
outputfile = await saveFilePicker.PickSaveFileAsync();
// File can be null if cancel is hit in the file picker
if (outputfile == null)
{
return;
}
txtresult.Text +="\n"+ String.Format("Recording to {0}", outputfile.Name.ToString());
}
private MediaEncodingProfile CreateMediaEncodingProfile(StorageFile file)
{
switch (file.FileType.ToString().ToLowerInvariant())
{
case ".wma":
return MediaEncodingProfile.CreateWma(AudioEncodingQuality.High);
case ".mp3":
return MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
case ".wav":
return MediaEncodingProfile.CreateWav(AudioEncodingQuality.High);
default:
throw new ArgumentException();
}
}
private async void graphrecord_Click(object sender, RoutedEventArgs e)
{
if (graphrecord.Content.Equals("Begin recording"))
{
MediaEncodingProfile fileProfile = CreateMediaEncodingProfile(outputfile);
CreateAudioFileOutputNodeResult fileOutputNodeResult = await graph.CreateFileOutputNodeAsync(outputfile, fileProfile);
if (fileOutputNodeResult.Status != AudioFileNodeCreationStatus.Success)
{
// FileOutputNode creation failed
await new MessageDialog(String.Format("Cannot create output file because {0}", fileOutputNodeResult.Status.ToString())).ShowAsync();
return;
}
fileOutputNode = fileOutputNodeResult.FileOutputNode;
fileInput.AddOutgoingConnection(fileOutputNode);
graphrecord.Content = "Stop recording";
}
else
{
graph.Stop();
TranscodeFailureReason finalizeResult = await fileOutputNode.FinalizeAsync();
if (finalizeResult != TranscodeFailureReason.None)
{
// Finalization of file failed. Check result code to see why
await new MessageDialog(String.Format("Finalization of file failed because {0}", finalizeResult.ToString())).ShowAsync();
return;
}
txtresult.Text += "\n" + "Recording completed";
graphrecord.IsEnabled = false;
}
}
Для других сложных функций, пожалуйста, по-прежнему ссылается на официальный образец.
Вы можете использовать API в пространстве имен Windows.Media.Audio
, чтобы создавать аудиографики для сценариев аудио-маршрутизации, микширования и обработки. Для того, чтобы создать звуковые графики, пожалуйста, обратитесь к this article.
Звуковой граф представляет собой набор взаимосвязанных аудиоустройств. Аудиофайл, который вы хотите записать, снабжает «узлы аудиовхода», а «узлы вывода аудио» - это место назначения для обработки звука, обрабатываемого графиком, аудио может быть выведено из графика в целевые аудиофайлы. В приложении магазина «MeeDJ» оно может смешивать два звука и записывать их в один. В этой ситуации мы можем использовать «узлы субмикширования», которые берут звук из одного или нескольких узлов и объединяют их в один вывод.
Для начала и остановки записи мы можем попытаться использовать Starting and stopping audio graph nodes для реализации. Вы также можете попробовать Adding audio effects, как это делали «MeeDJ».
Дополнительные функции и примеры кода, пожалуйста, обратитесь к official sample.
OKay, но как я могу захватить этот звук и сохранить его в памяти. –
. Все данные сценарии в примере создания звука - это студия звукозаписи через микрофон, не для воспроизведения звука. –
@ShubhamSahu образец, который вы нашли для записи через микрофон, поскольку входные входные сигналы являются микрофонным входом , Подробно прочитав сценарий1 и документ, который вы найдете, вы можете сделать то, что хотите. Кроме того, образец для справки, он не может предоставить одну и ту же демонстрацию, как вы хотите, также я не могу написать ее для вас. API-интерфейсы поддерживают то, что вы хотите, я уже предоставляю, как это сделать, но детали вам нужны. –
- 1. javaFX mediaPlayer угасает в настоящее время аудио
- 2. В настоящее время расширение видео/аудио
- 3. ExoPlayer как управлять два аудио файлов в настоящее время
- 4. Воспроизведение аудио и воспроизведение его еще
- 5. Alexa Skill, Воспроизведение аудио занимает время
- 6. Аудио перестает потоковое воспроизведение через некоторое время
- 7. Воспроизведение аудио в браузере
- 8. Воспроизведение аудио в HTML
- 9. Воспроизведение аудио в javascript
- 10. воспроизведение аудио в div
- 11. Воспроизведение аудио в Java
- 12. Воспроизведение аудио в браузере
- 13. Воспроизведение аудио в pydub
- 14. Воспроизведение аудио в Xcode7
- 15. Воспроизведение аудио из других приложений
- 16. Случайное воспроизведение аудио - Unity3d
- 17. Воспроизведение аудио с помощью HTML5
- 18. Воспроизведение аудио в сокеты node.js
- 19. Monotouch Stop Воспроизведение аудио клипа
- 20. Получить AVPlayer, который в настоящее время воспроизводит аудио
- 21. Воспроизведение аудио вложений
- 22. Воспроизведение аудио на touchstart
- 23. Android - Последовательное воспроизведение аудио?
- 24. R Shiny - Воспроизведение аудио
- 25. Воспроизведение аудио на iPhone
- 26. Воспроизведение аудио на Android
- 27. AVAudioEngine воспроизведение многоканальный аудио
- 28. Javascript Воспроизведение аудио в определенный момент
- 29. JOptionPane Воспроизведение аудио?
- 30. Воспроизведение аудио с uri
Oh Thank's You, это работает очень хорошо ...... :) –