Attempted to read or write protected memory. This is often an indication that other memory has been corrupted
The line that fails is: m_Encoder.PrepareToEncode(true);
I have been Googling this error for days now and have found few solutions. I have tried some of the solutions I did manage to find, but nothing has helped. I'm thinking it's a permissions issue, but I can't figure out what! Any help would be greatly appreciated and please let me know if you need any more information. I am totally new to WME so I could even be doing this all wrong!
Thanks in Advance,
Carmen
Here is the code I'm using for the conversion and then the method where I am calling the ConvertFile function:
Expand|Select|Wrap|Line Numbers
- private static string ConvertFile(string mediaFile)
- {
- UtilDaoOracle oraDao = new UtilDaoOracle();
- oraDao.LogError(mediaFile, "ConvertFile", 500321);
- WMEncoder m_Encoder = new WMEncoder();
- IWMEncSourceGroup SrcGrp = (IWMEncSourceGroup)m_Encoder.SourceGroupCollection.Add("SG_1");
- IWMEncVideoSource SrcVid = (IWMEncVideoSource)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
- SrcVid.SetInput(mediaFile, "", "");
- const string ProfileName = "Screen Video Medium (CBR)";
- foreach (IWMEncProfile aProfile in m_Encoder.ProfileCollection)
- {
- if (aProfile.Name == ProfileName)
- {
- SrcGrp.set_Profile(aProfile);
- oraDao.LogError(aProfile.Name.ToString(), "ConvertFileLoop", 500321);
- break;
- }
- }
- m_Encoder.File.LocalFileName = Regex.Replace(mediaFile, ".avi", ".wmv");
- oraDao.LogError(m_Encoder.File.LocalFileName, "ConvertFileREturn", 500321);
- m_Encoder.AutoStop = true;
- try
- {
- m_Encoder.PrepareToEncode(true);
- }
- catch (Exception exp)
- {
- oraDao.LogError(exp.Message, "Preparetoencode", 500321);
- m_Encoder.Flush();
- }
- try
- {
- m_Encoder.Start();
- }
- catch (Exception exp)
- {
- oraDao.LogError(exp.Message, "encoderstart", 500321);
- m_Encoder.Flush();
- }
- return m_Encoder.File.LocalFileName;
- }
- private static bool CopyFile(string srcDir, string destDir, string fileName, bool ignoreIfInParentDir)
- {
- UtilDaoOracle oraDao = new UtilDaoOracle();
- FileInfo destFile = new FileInfo(CombinePath(destDir, fileName));
- //Only copy if the file does not already exist.
- if (!destFile.Exists)
- {
- if (ignoreIfInParentDir && File.Exists(CombinePath(destFile.Directory.Parent.FullName, fileName)))
- {
- // Return if the files already exists in the parent directory.
- return false;
- }
- FileInfo srcFile = new FileInfo(CombinePath(srcDir, fileName));
- if (srcFile.Exists)
- {
- // Create the destination directory if not there already.
- if (!destFile.Directory.Exists)
- {
- destFile.Directory.Create();
- }
- if (srcFile.Extension == ".avi")
- {
- string convertedFile = ConvertFile(srcFile.ToString());
- FileInfo convertedFileDone = new FileInfo(convertedFile);
- convertedFileDone.CopyTo(destFile.FullName);
- }
- else
- {
- srcFile.CopyTo(destFile.FullName);
- }
- return true;
- }
- else
- {
- Logger.LogWarning(string.Format("Source file not found on machine: {0}", srcFile.FullName));
- }
- }
- return false;
- }