Ошибка NReco: "Указанный исполняемый файл не является допустимым приложением для этой платформы ОС"
Я использую NReco для конвертации видео. Я объявляю конвертер следующим образом и добавляю обработчик в ConvertProgress.
Dim vid_Convert As New FFMpegConverter
AddHandler vid_Convert.ConvertProgress, Sub(sender, e) vidConvertProgress(folder,fname,fext,fverdest,fint,fcount,fhost,e)
vid_Convert.ConvertMedia(file_temp, Nothing, file_dest, "mp4", cSettings)
Медиа конвертируется нормально. Проблема в обработчике, где я объявляю новый конвертер и заставляю его делать GetVideoThumbnail (когда завершено предыдущее преобразование), например так:
Dim vid_Extract As New FFMpegConverter
vid_Extract.GetVideoThumbnail(inputFile, outputFile, extractposition)
Это приводит к ошибке "Указанный исполняемый файл не является допустимым приложением для этой платформы ОС". Тем не менее, я выполнил метод GetVideoThumbnail сам по себе в другом месте в моей программе без проблем. По какой-то причине он не будет работать, если он выполняется внутри обработчика. Это можно обойти?
1 ответ
Я предполагаю, что вы используете пакет nuget NReco.VideoConverter, который встраивает ffmpeg.exe и извлекает его при первом использовании. Скорее всего, вы вызываете "ConvertMedia" и "GetVideoThumbnail" параллельно, и это может привести к неправильному извлечению ffmpeg.exe.
Обходной путь для этой проблемы может вызывать new FFMpegConverter().ExtractFFmpeg();
при запуске приложения (в Program.cs), чтобы гарантировать, что для вызовов "ConvertMedia" и "GetVideoThumbnail" ffmpeg уже извлечен.