Ошибка 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 уже извлечен.

Другие вопросы по тегам