internal override bool ExportHighlightsToFile(string outputPath)
{
bool success = true;
var sb = new StringBuilder();
int masterClipId = 1;
sb.Append(
@"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE xmeml>
<xmeml version=""4"">
<project>
<name>Highlights from Highlight Hunter</name>
<children>
");
for (int i = 0; i < MainModel.HighlightObjects.Count; i++)
{
var highlightObject = MainModel.HighlightObjects[i];
var uuid = (Guid.NewGuid()).ToString();
var duration = highlightObject.InputFileObject.TotalFrames;
var timebase = CalculateTimebase(highlightObject.InputFileObject.FramesPerSecond);
var isNTSC = CalculateIsNTSC(highlightObject.InputFileObject.FramesPerSecond);
int inFrame = (int)(highlightObject.StartTime.TotalSeconds * highlightObject.InputFileObject.FramesPerSecond);
int outFrame = (int)(highlightObject.EndTime.TotalSeconds * highlightObject.InputFileObject.FramesPerSecond);
var clipName = highlightObject.Title + " " + masterClipId;
var pathURL = GeneratePathURL(highlightObject.InputFileObject.SourceFileInfo.FullName);
sb.Append(
@"<clip id=""masterclip-" + masterClipId + @""">
<uuid>" + uuid + @"</uuid>
<masterclipid>masterclip-" + masterClipId + @"</masterclipid>
<ismasterclip>TRUE</ismasterclip>
<duration>" + duration + @"</duration><rate>
<timebase>" + timebase + @"</timebase>
<ntsc>" + isNTSC + @"</ntsc>
</rate>
<in>" + inFrame + @"</in>
<out>" + outFrame + @"</out>
<name>" + clipName + @"</name>
");
sb.Append(@"<media>
");
#region Video
sb.Append(@"<video>
");
sb.Append(@"<track>
");
sb.Append(@"<clipitem id=""clipitem-" + masterClipId + @"-video"">
<masterclipid>masterclip-" + masterClipId + @"</masterclipid>
<name>" + clipName + @"</name>
<file id=""file-" + masterClipId + @""">
<name>" + highlightObject.InputFileObject.SourceFileInfo.Name + @"</name>
<pathurl>" + pathURL + @"</pathurl>
<media>
<video>
<samplecharacteristics>
<width>" + highlightObject.InputFileObject.VideoWidth + @"</width>
<height>" + highlightObject.InputFileObject.VideoHeight + @"</height>
</samplecharacteristics>
</video>
<audio>
<samplecharacteristics>
<depth>16</depth>
<samplerate>48000</samplerate>
</samplecharacteristics>
<channelcount>1</channelcount>
<layout>mono</layout>
<audiochannel>
<sourcechannel>1</sourcechannel>
<channellabel>discrete</channellabel>
</audiochannel>
</audio>
<audio>
<samplecharacteristics>
<depth>16</depth>
<samplerate>48000</samplerate>
</samplecharacteristics>
<channelcount>1</channelcount>
<layout>mono</layout>
<audiochannel>
<sourcechannel>2</sourcechannel>
<channellabel>discrete</channellabel>
</audiochannel>
</audio>
</media>
</file>
");
sb.Append(
@"<link>
<linkclipref>clipitem-" + masterClipId + @"-video</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-1</linkclipref>
<mediatype>audio</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-2</linkclipref>
<mediatype>audio</mediatype>
<trackindex>2</trackindex>
<clipindex>1</clipindex>
</link>
</clipitem>
");
sb.Append(@"</track>
</video>
");
#endregion Video
#region Audio
sb.Append(@"<audio>
<track>
<clipitem id=""clipitem-" + masterClipId + @"-audio-1"">
<masterclipid>masterclip-" + masterClipId + @"</masterclipid>
<name>" + clipName + @"</name>
<file id=""file-" + masterClipId + @"""/>
<sourcetrack>
<mediatype>audio</mediatype>
<trackindex>1</trackindex>
</sourcetrack>
<link>
<linkclipref>clipitem-" + masterClipId + @"-video</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-1</linkclipref>
<mediatype>audio</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-2</linkclipref>
<mediatype>audio</mediatype>
<trackindex>2</trackindex>
<clipindex>1</clipindex>
</link>
</clipitem>
</track>
<track>
<clipitem id=""clipitem-" + masterClipId + @"-audio-2"">
<masterclipid>masterclip-" + masterClipId + @"</masterclipid>
<name>" + clipName + @"</name>
<file id=""file-" + masterClipId + @"""/>
<sourcetrack>
<mediatype>audio</mediatype>
<trackindex>2</trackindex>
</sourcetrack>
<link>
<linkclipref>clipitem-" + masterClipId + @"-video</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-1</linkclipref>
<mediatype>audio</mediatype>
<trackindex>1</trackindex>
<clipindex>1</clipindex>
</link>
<link>
<linkclipref>clipitem-" + masterClipId + @"-audio-2</linkclipref>
<mediatype>audio</mediatype>
<trackindex>2</trackindex>
<clipindex>1</clipindex>
</link>
</clipitem>
</track>
</audio>
");
#endregion Audio
sb.Append(@"</media>
</clip>
");
masterClipId += 1;
}
try
{
File.WriteAllText(outputPath, sb.ToString());
ProjectFileLocation = outputPath;
AnalyticsHelper.FireEvent("Export - Adobe Premiere");
success = true;
}
catch (Exception ex)
{
Logger.Error("Error writing to file: " + ex);
success = false;
}
return success;
}