I can't get Handbrake to work for me in C #. He continues to throw the error βThe value cannot be empty.β As you can see in the screenshot below, I tried a couple of things based on what I know. I would appreciate any of your guidance to help me get this job.

What I have tried so far (the dots do not refer to the error displayed ... Just FYI):
- Installed hand brake on my computer
- Added link to HandBrakeInterop.dll
- I copied all the other necessary DLL files to the debug folder and even tried to add them as links
- Tried changing debug versions from x86 / x64
Where am I not on the right track?
Here is my code:
HandBrake.Interop.HandBrakeInstance objHb = new HandBrake.Interop.HandBrakeInstance(); HandBrake.Interop.Model.EncodeJob objJob = new HandBrake.Interop.Model.EncodeJob(); objJob.SourceType = HandBrake.Interop.Model.SourceType.File; EncodingProfile objProfile = new EncodingProfile(); objProfile.OutputFormat = Container.Mp4; objProfile.VideoEncodeRateType = VideoEncodeRateType.ConstantQuality; objProfile.IPod5GSupport = true; objProfile.PreferredExtension = OutputExtension.Mp4; // objJob.EncodingProfile = objProfile; objJob.SourcePath = AppDomain.CurrentDomain.BaseDirectory + "1.flv"; objJob.OutputPath = AppDomain.CurrentDomain.BaseDirectory + "1.mp4"; //objHb.Titles.Add(new HandBrake.Interop.SourceData.Title()); XmlSerializer objSerializer = new XmlSerializer(typeof(EncodingProfile)); MemoryStream mem=new MemoryStream(File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "normal.xml")); var objPresetFromFile = objSerializer.Deserialize(mem) as EncodingProfile; objJob.EncodingProfile = objPresetFromFile; objJob.UseDefaultChapterNames = true; // objJob.Title = 1; //HandBrake.Interop.Model.Encoders objHb.EncodeProgress += objHb_EncodeProgress; objHb.EncodeCompleted += objHb_EncodeCompleted; HandBrake.ApplicationServices.Parsing.Title title = new HandBrake.ApplicationServices.Parsing.Title();// new HandBrake.Interop.SourceData.Title(); objHb.Initialize(5); //objHb.Titles = new System.Collections.Generic.List<HandBrake.Interop.SourceData.Title>(); objHb.StartScan(AppDomain.CurrentDomain.BaseDirectory + "1.flv", 0); objJob.SourceType = HandBrake.Interop.Model.SourceType.File; objJob.RangeType = HandBrake.Interop.Model.VideoRangeType.Frames; objHb.StartEncode(objJob); Console.ReadLine();
EDIT: as requested here is more information from the exception copied to the clipboard
System.ArgumentNullException was unhandled HResult=-2147467261 Message=Value cannot be null. Parameter name: source Source=System.Core ParamName=source StackTrace: at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) at HandBrake.Interop.HandBrakeInstance.GetTitle(Int32 titleNumber) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 1604 at HandBrake.Interop.HandBrakeInstance.GetTitleIndex(Int32 titleNumber) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 1614 at HandBrake.Interop.HandBrakeInstance.StartEncode(EncodeJob job, Boolean preview, Int32 previewNumber, Int32 previewSeconds, Double overallSelectedLengthSeconds) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 411 at HandBrake.Interop.HandBrakeInstance.StartEncode(EncodeJob jobToStart) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 395 at HandBrakeTest.Program.Main(String[] args) in c:\Users\user\Documents\Visual Studio 2012\Projects\HandBrakeTest\HandBrakeTest\Program.cs:line 53 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:
Edit:
- The moved instance of handbrakeinstance and encodingjob is outside the main and made them static
- Call StartEncode in a completed event scan
Now exception: Nullreferenceexception with this in detail:
System.NullReferenceException was unhandled by user code HResult=-2147467261 Message=Object reference not set to an instance of an object. Source=HandBrakeInterop StackTrace: at HandBrake.Interop.InteropUtilities.ReadStructure[T](IntPtr structPtr) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\InteropUtilities.cs:line 31 at HandBrake.Interop.HandBrakeInstance.StartEncode(EncodeJob job, Boolean preview, Int32 previewNumber, Int32 previewSeconds, Double overallSelectedLengthSeconds) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 412 at HandBrake.Interop.HandBrakeInstance.StartEncode(EncodeJob jobToStart) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 395 at HandBrakeTest.Program.objHb_ScanCompleted(Object sender, EventArgs e) in c:\Users\user\Documents\Visual Studio 2012\Projects\HandBrakeTest\HandBrakeTest\Program.cs:line 65 at HandBrake.Interop.HandBrakeInstance.PollScanProgress() in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 811 at HandBrake.Interop.HandBrakeInstance.<StartScan>b__2(Object o, ElapsedEventArgs e) in c:\HandBrake\Hudson\workspace\Release_WindowsGui64\0.9.9\win\CS\HandBrake.Interop\HandBrakeInterop\HandBrakeInstance.cs:line 752 at System.Timers.Timer.MyTimerCallback(Object state) InnerException:
Thanks in advance.