#c# #windows-phone-8
#c# #windows-phone-8
Вопрос:
Я создал функцию записи видео в Windows Phone 8 и преобразовываю массив байтов в строку base-64. Как мне узнать продолжительность записи? Размер памяти моего байтового массива становится слишком большим, и поэтому строка base64 также слишком велика, поэтому я получаю такую ошибку:
"System.OutOfMemoryException"
для получения дополнительной информации см. Мой код ниже:
private IsolatedStorageFileStream isoVideoFile;
string isoVideoFileName = "CameraMovie.mp4";
isoVideoFile = new IsolatedStorageFileStream(isoVideoFileName,
FileMode.OpenOrCreate, FileAccess.ReadWrite,
IsolatedStorageFile.GetUserStoreForApplication());
MemoryStream stream = new MemoryStream();
isoVideoFile.Write(stream.GetBuffer(), 0, (int)stream.Position);
byte[] binaryData = new Byte[isoVideoFile.Length];
long bytesRead = isoVideoFile.Read(binaryData, 0, (int)isoVideoFile.Length);
string videofile = Convert.ToBase64String(binaryData, 0, binaryData.Length);
Для длины видео:
private void Element_MediaOpened1(object sender, RoutedEventArgs e)
{
if (mediaElement_1.NaturalDuration.HasTimeSpan)
timelineSlider.Maximum = mediaElement_1.NaturalDuration.TimeSpan.TotalSeconds;
}
Ответ №1:
Вы превышаете лимит памяти для каждого приложения.
Попробуйте утилизировать ресурсы. Рекомендуется использовать using
с потоками. Что-то вроде этого: private IsolatedStorageFileStream isoVideoFile; string isoVideoFileName = «CameraMovie.mp4»;
using(isoVideoFile = new IsolatedStorageFileStream(isoVideoFileName,
FileMode.OpenOrCreate, FileAccess.ReadWrite,
IsolatedStorageFile.GetUserStoreForApplication()))
{
using(MemoryStream stream = new MemoryStream())
{
isoVideoFile.Write(stream.GetBuffer(), 0, (int)stream.Position);
}
byte[] binaryData = new Byte[isoVideoFile.Length];
long bytesRead = isoVideoFile.Read(binaryData, 0, (int)isoVideoFile.Length);
string videofile = Convert.ToBase64String(binaryData, 0, binaryData.Length);
}
А как насчет продолжительности видео, вот тема на форумах msdn
Комментарии:
1. ad1Dima, спасибо, чувак, я проверяю это и как мне узнать продолжительность видео? спасибо
2. ad1Dima, я все еще получаю сообщение об ошибке brother: «Необработанное исключение типа ‘System. В неизвестном модуле произошло исключение ExecutionEngineException».
3. ad1Dima, я просто записываю в течение 2 секунд, и все равно его размер становится 7-значным. Пожалуйста, направьте меня. Спасибо!!
4. @NiteshKothari сори, я не могу с этим помочь.
5. ad1Dima, хорошо, братан, посмотри мой отредактированный код для определения длины видео, я видел на форумах, как мне определить «timelineslider»? Спасибо!!