【发布时间】:2019-04-04 18:09:05
【问题描述】:
设备:树莓派 3 操作系统:WIN 10 物联网 编程语言:C#
我正在尝试编写一个 24/7 全天候记录器,它会在 Raspberry 打开后立即记录所有内容。 音频文件长度应在 30 分钟后。 然后这些文件将按年、月、日存储在文件夹中的 U 盘上。 U 盘上的文件夹创建已经生效。
我遇到的问题是文件已创建但没有内容。 该文件大小为 0kb。 这是代码。
感谢您的帮助。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Devices.Enumeration;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Media.Capture;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Windows.Media.MediaProperties;
using Windows.Media.Playback;
using Windows.Storage;
using Windows.Storage.Streams;
namespace Recording_PI
{
/// <summary>
/// Eine leere Seite, die eigenständig verwendet oder zu der innerhalb eines Rahmens navigiert werden kann.
/// </summary>
public sealed partial class MainPage : Page
{
bool isRecording;
LowLagMediaRecording audioRecording;
MediaCapture audioCapture = new MediaCapture();
public MainPage()
{
this.InitializeComponent();
Checked();
Task.Delay(10000).Wait();
Unchecked();
}
private async void Checked()
{
var settings = new Windows.Media.Capture.MediaCaptureInitializationSettings();
settings.StreamingCaptureMode = Windows.Media.Capture.StreamingCaptureMode.Audio;
settings.MediaCategory = Windows.Media.Capture.MediaCategory.Other;
settings.AudioProcessing = Windows.Media.AudioProcessing.Default;
await audioCapture.InitializeAsync(settings);
StorageFolder externalDevices = KnownFolders.RemovableDevices;
IReadOnlyList<StorageFolder> externalDrives = await externalDevices.GetFoldersAsync();
StorageFolder usbStorage = externalDrives[0];
//ENSURE FOLDER EXISTS
if (await usbStorage.TryGetItemAsync("Recording") == null)
await usbStorage.CreateFolderAsync("Recording");
string Folder_Pfad = "Recording\\" + DateTime.Now.Year.ToString();
if (await usbStorage.TryGetItemAsync(Folder_Pfad) == null)
await usbStorage.CreateFolderAsync(Folder_Pfad);
Folder_Pfad = Folder_Pfad + "\\" + DateTime.Now.Month.ToString();
if (await usbStorage.TryGetItemAsync(Folder_Pfad) == null)
await usbStorage.CreateFolderAsync(Folder_Pfad);
Folder_Pfad = Folder_Pfad + "\\" + DateTime.Now.Day.ToString();
if (await usbStorage.TryGetItemAsync(Folder_Pfad) == null)
await usbStorage.CreateFolderAsync(Folder_Pfad);
string Dateiname = "\\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + " "
+ DateTime.Now.Hour.ToString() + "_" + DateTime.Now.Minute.ToString() + "_" + DateTime.Now.Second.ToString()+ ".mp3";
string Dateispeicher_Ort = Folder_Pfad + Dateiname;
StorageFile recordFile = await usbStorage.CreateFileAsync(Dateispeicher_Ort, Windows.Storage.CreationCollisionOption.GenerateUniqueName);
await audioCapture.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Medium), recordFile);
}
private async void Unchecked()
{
if (isRecording)
{
await audioCapture.StopRecordAsync();
}
}
}
}
【问题讨论】:
标签: c# raspberry-pi3 windows-10-iot-core