6 Replies Latest reply on Feb 27, 2013 4:31 AM by kimdt27

    After Effects video cue point data error #1107

    englishtom86

      Hi all,

       

      I'm trying to create a personalised video using the techniques described here: http://www.adobe.com/devnet/flash/articles/atv_personalized_video.html

       

      I have created the video and tracking data in After Effects (CS5), converted the tracking data to Flash cue points and exported the .flv file. I can import the video into Flash (CS6) just fine and I can see all the cue point data however when I try to compile the Flash project, bearing in mind this is just an empty stage with an instance of FLVPlayback on it, I get the following errors:

       

      VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.

      ReferenceError: Error #1065: Variable Icon is not defined.

      ReferenceError: Error #1065: Variable FLVPlayback is not defined.

      ReferenceError: Error #1065: Variable Main is not defined.

       

      If I export the .flv without the cue point data I can import, compile and play the video without error.

       

      I've had a look around and I've not really been able to find any information about this issue and don't have a clue where to start with it.

       

      Any ideas?!

        • 1. Re: After Effects video cue point data error #1107
          kglad Adobe Community Professional & MVP

          don't import the video.

           

          use an flvplayback component to progressively download your video.  ie, add an flvplayback component to the stage and assign its source in the properties panel or with actionscript.

          • 2. Re: After Effects video cue point data error #1107
            englishtom86 Level 1

            Hi kglad,

             

            Thanks for your reply. I'm not embedding the video in the swf, I've loaded it into an FLVPlayback component. This has been done on the stage and by assigning the video source in the properties panel.

             

            Cheers,

             

            Tom

            • 3. Re: After Effects video cue point data error #1107
              englishtom86 Level 1

              Update:

               

              I've found a workaround. I had a suspicion that this error might be due to an incompatibility between CS5 and CS6 so I installed Flash CS5 and tried the CS5 exported .flv which resulted in the same error. I then installed After Effects CS6 and tried re-exporting the .flv file which led me to find that AE CS6 has a bug whereby it fails to export .flv files with the flash cue point metadata as described here: http://forums.adobe.com/message/4791847

               

              After tinkering around with AE and Flash I've found the following works:

               

              1. Export flv from AE WITHOUT cue point metadata

              2. In AE convert properties to markers

              3. Run a modified version of Bob9743 script from the other thread (I will post the exact script I used later) to export cue point data from AE as XML in a format that Flash will read.

              4. Open Flash, create an FLVPlayback with the exported flv

              5. Import the cue point data into the FLVPlayback component from the XML

               

              I've tested this and can confirm it works. Interestingly when I first tried this Flash failed to import the cue points complaining about a stack overflow, when I stripped the number of cue points down from around 3000 to around 1000 I was able to import without problem. I'm now thinking that this large number of cue points may have been the cause of the original problem.

               

              Hope that helps someone!

               

              Tom

              • 4. Re: After Effects video cue point data error #1107
                englishtom86 Level 1

                Here is the script I used to export the markers as valid XML for Flash to import. Please note that this will export all markers from all layers so if, as I did, you have multiple 'versions' of your tracking data on different layers it will export the whole lot.

                 

                var comp = app.project.activeItem;

                var XMLStart = "<?xml version='1.0' encoding='UTF-8' ?><FLVCoreCuePoints>";

                var XMLEnd = "</FLVCoreCuePoints>";

                var XMLTemp = "";

                var XMLFinal = "";

                var layerCount = comp.numLayers;

                var layer = new Object;

                var layerMarkers = new Object;

                var markerCount = 0;

                var curMarkerTime = 0;

                var curMarkerName = "";

                var curMarkerType = "";

                var curMarkerXML = "";

                 

                //Layer markers

                for(i=1; i<layerCount+1; i++) {

                    layer = comp.layer(i);

                    layerMarkers = layer.marker;

                    markerCount = layerMarkers.numKeys;

                    for(j=1; j<markerCount+1; j++) {

                       

                        // get the parameters for this marker

                        var params = layerMarkers.keyValue(j).getParameters();

                        var XMLParam = "";

                        var cont = false;

                       

                        // loop through parameters

                        for(param in params) {

                 

                 

                            // I added this conditional to strip out markers in my project which were superfluous

                            /*

                            if(params[param] == "410,230.5") {

                                var cont = true;

                                continue;

                            }

                            */

                            // generate the XML for the parameter

                            XMLParam += "<Parameter>";

                              XMLParam += "<Name>" + param + "</Name>";

                              XMLParam += "<Value>" + params[param] + "</Value>";

                            XMLParam += "</Parameter>";

                        }

                   

                        // if this is a superfluous marker then don't add it to the XML string, just go on to the next

                        if(cont) {

                            continue;

                        }

                       

                        // get / set additional marker meta data

                        curMarkerTime = layerMarkers.keyTime(j) * 1000;

                        curMarkerName = layerMarkers.keyValue(j).cuePointName;

                        curMarkerType = "actionscript";

                       

                        // assemble the full XML element for this cue point

                        curMarkerXML = "<CuePoint><Time>" + curMarkerTime + "</Time><Type>" + curMarkerType + "</Type><Name>" + curMarkerName + "</Name><Parameters>" + XMLParam + "</Parameters></CuePoint>";

                        XMLTemp += curMarkerXML;

                    }

                }

                 

                //Comp markers

                var tempText = comp.layers.addText("");

                var tempSrc = tempText.text.sourceText;

                 

                tempSrc.expression = "thisComp.marker.numKeys";

                markerCount = Number(tempSrc.value);

                if(markerCount > 0) {

                    for (i=1; i<=markerCount; i++) {

                        tempSrc.expression = "thisComp.marker.key(" + i + ").time;";

                        curMarkerTime = Number(tempSrc.value) * 1000;

                        tempSrc.expression = "thisComp.marker.key(" + i + ").cuePointName;";

                        curMarkerName = String(tempSrc.value);

                        tempSrc.expression = "thisComp.marker.key(" + i + ").eventCuePoint;";

                        if(tempSrc.value == "true") {

                            curMarkerType = "event";

                        } else {

                            curMarkerType = "navigation";

                        }

                 

                        curMarkerXML = "<CuePoint><Time>" + curMarkerTime + "</Time><Type>" + curMarkerType + "</Type><Name>" + curMarkerName + "</Name></CuePoint>";

                        XMLTemp += curMarkerXML;

                    }

                }

                tempText.remove();

                 

                //create output string

                XMLFinal = XMLStart + XMLTemp + XMLEnd;

                 

                //Write file

                var cueFile = File.saveDialog("Save the XML file", "XML:*.xml" );

                cueFile.open("W");

                cueFile.write(XMLFinal);

                cueFile.close();

                • 5. Re: After Effects video cue point data error #1107
                  kimdt27 Level 1

                  Really nice scipt.. thanks.

                   

                  I just have one small problem.

                  if i use it for exporting tracking data markers, it seems to lag if i import it into flash, and try to track somthing (red box) onto the tracking area.

                   

                  any ideas?

                   

                  Regards Kim

                  • 6. Re: After Effects video cue point data error #1107
                    kimdt27 Level 1

                    Hi Again

                     

                    Solved it!

                    it seems like Flash cant handle the masses of data if the Event-type is ActionScript. if i change it to "Event" it works fine.

                    i have made a little guide explaining the workaround:  http://kim.thoeisen.dk/ae-cs6-flv-cue-point-export/

                     

                    Thanks a lot for the Script!

                    Regards Kim