e_d_
Engaged
e_d_
Engaged
Activity
‎Jun 28, 2017
07:13 AM
The question is, what kind of "titles"? Are we talking about "open caption type titles", like opening / ending credits or lower thirds, or are we talking about subtitles/closed captions? Both of which could, but the latter definitely should, use timed text, not single burn-in titles. As long as the challenge is presented in this generic fashion, there's no short answer (even though Bruce has tried ).
... View more
‎Jun 27, 2017
11:30 PM
1 Upvote
Funny. I ran the test on Windows the same day you had posted the issue (also without it occurring there), but I thought "no wait, you don't need to post this because (s)he might have done this already, you see, (s)he's explicitly saying Mac...", and one week later.. gee. Can you please try a different path on Mac, like "/Users/Public/PrTest/Project1/" . I imagine there's something wrong with the resolve of the currently logged in user's path (~/). Doesn't fix the original issue, but may provide some insight. Best, e.d.
... View more
‎Jun 27, 2017
10:22 AM
Hi Bruce, That's what the code I was stealing did. what does that mean exactly? Can you please expand on this? Currently it's ambiguous to me. Generally speaking, my original question has not been answered. I would appreciate concise information along lines like "The engine will always queue events to be executed after the current function's context has ended, which implies blocking calls will also block event propagation. [...further consequences or implications or references to standards documents...] ". Can you or someone else from your team please provide this in a concise way?
... View more
‎Jun 26, 2017
11:40 PM
Hi, did import your images as single images or image sequence? The latter will make your images behave like a movie, the single image frames are not independent (which is expected behaviour). If you want to edit (the duration of) each still image independently, you need to import each image as a single clip. Before you do that, go to the Preferences settings. The second to last entry (which might be called "Edit window" (I'm making this up because I'm not on the english version here)) has an option called like "still image default duration", which should be set to 5 seconds. If you modify this, your images (which in terms of film have a duration of 1 frame) are being assigned the duration entered here, on import. However, if you modify the duration of an image in the timeline by trimming, this should not affect the images before the one being modified. Depending on your trim mode, it might affect images after the one being modified. Keep trying. Nevertheless I have a couple of questions. - Are you and have you been aware of the opportunity to test Premiere (as any other Creative Cloud app) for 30 days for free? - My impression is you're new to editing, did you watch or read any tutorials on the subject? I'm pretty certain this could have saved you many hours of dissatisfaction. - Are you aware that this is not the right place for the specific question you have asked (the Premiere Pro SDK forum is for third-party developers to discuss programming issues with each other and the Adobe staff; actual Premiere Pro usage question are supposed to be asked in the Premiere Pro CC​ forum -- can an admin move this discussion there, please?) ? Kind regards, e.d.
... View more
‎Jun 24, 2017
10:10 AM
Hi sberic, no, the 5sec break happens after "Event 2 to occur...", so obviously the queue (if there is one) is affected by the blocking method as well, which indicates the JSX engine is single-threaded, right? Bruce Bullis​: I noticed in the sample Panel the PlugPlugObject call is somewhat different, for Windows you're using var eoName = new ExternalObject('lib:PlugPlugExternalObject.dll') but it seems to make no difference if I use var xLib = new ExternalObject('lib:\PlugPlugExternalObject') -> built-in fault tolerance / error handling? Or legacy compatibility?
... View more
‎Jun 23, 2017
09:02 AM
Hi sberic, sberic schrieb e.d. wrote What's going on? Why is Event 3 not completely dispatched when Event 2 part one is obviously finished? I took a look through the code and believe I've isolated the issue. The location at which things seem to break for you is the moment you call $.sleep(5000);. I think I understand your intuition here: sleep should emulate what the browser setTimeout function does. Unfortunately, sleep appears to completely pause processing of the ExtendScript thread. From the ESTK's Object Model Viewer: $.sleep (msecs: number ) Core JavaScript Classes Suspends the calling thread for a number of milliseconds. During a sleep period, checks at 100 millisecond intervals to see whether the sleep should be terminated. This can happen if there is a break request, or if the script timeout has expired. msecs: Data Type: number Number of milliseconds to sleep. The key part is highlighted in bold red. Whereas setTimeout in browsers schedules the function to be called after a given delay, the ExtendScript sleep function will pause it entirely. This means that the events you throw to the ExtendScript context will not have a chance to execute before the second call to dispatchEventCEP in your e_chain2 function. By the time the ExtendScript processing thread has a chance to process the queued callbacks, both are already there waiting (one for over 5 seconds, the other likely on the order of milliseconds). thank you, that one I hadn't looked up as potential source of trouble... which reminds us: Never assume! What's interesting though is that every blocking method (for instance also an alert dialog) suspends the entire event chain, which in my view should not happen! When I dispatch an event before the blocking happens, it should be triggering the handler, shouldn't it? What are your thoughts on this? When you call cs.removeEventListener("EventName"), you are not actually removing the callback - it's most likely silently failing. You have to specify the function (and optionally the object) to remove the listener. To properly support this you should create named functions which you can specify in both add/removeEventListener calls, rather than anonymous inline functions. The documentation for add/removeEventListener specifies that you could specify an "object containing the method handler" as a third argument, but I'm not sure if the handler function must still be specified or not (I'm guessing yes)... You're mostly right, one needs to specify the handler on removal as well, which is why it's not a good idea to use an anonymous function. Again, this seems to be mandatory, the object seems to be optional, considering the CSInterface.js implementation. Best, e.d.
... View more
‎Jun 23, 2017
07:14 AM
Hi community, I need to understand what I'm conceptually doing wrong or what I'm confusing here. This experiment is to test the chaining of events, so basically Event1 shall trigger Event2, which is split, so Event2 shall trigger Event3 and then finish. Sounds a bit weird when describing it that way, so here's the basic code: index.html: <html> <head> <meta charset="utf-8"> <script src="./lib/CSInterface.js"></script> <script src="./lib/jquery.js"></script> <script> $(document).ready(function() { $("#EventChain").on("click", function(e){ e.preventDefault(); var cs = new CSInterface(); var message = "Event Listeners created.\nLet's go!\n\n"; cs.addEventListener("Test.Event1", function(evt) { message += evt.data + "\n\nEvent 2 to occur...\n\n"; $("#textarea").text(message); // console.log(evt.data); cs.evalScript('$._ext_ed.e_chain2("This is Event 2.")'); }); cs.addEventListener("Test.Event2", function(evt) { message += evt.data + "\n\nEvent 3 to occur...\n\n"; $("#textarea").text(message); // console.log(evt.data); cs.evalScript('$._ext_ed.e_chain3("This is Event 3.")'); }); cs.addEventListener("Test.Event3", function(evt) { message += evt.data + "\n\n"; $("#textarea").text(message); // console.log(evt.data); cs.removeEventListener("Test.Event1"); cs.removeEventListener("Test.Event2"); cs.removeEventListener("Test.Event3"); }); $("#textarea").text(message); cs.evalScript('$._ext_ed.e_chain1("This is Event 1.")'); }); }); </script> </head> <body> <header></header> <section> <button id="EventChain">EventChain</button><br/> <textarea id="textarea" placeholder="Click the EventChain button!"></textarea> </section> <footer></footer> </body> </html> JSX: try { var xLib = new ExternalObject("lib:\PlugPlugExternalObject"); } catch (e) { alert(e); } $._ext_ed={ dispatchEventCEP : function (_type, _payload) { if (xLib) { var eventObj = new CSXSEvent(); eventObj.type = _type; eventObj.data = _payload; eventObj.dispatch(); } else { alert ("PlugPlugExternalObject not loaded.", true); } }, e_chain1 : function (msg) { alert ("Message \""+msg+"\" received.", false) var eventType = "Test.Event1"; $._ext_ed.dispatchEventCEP(eventType, msg) }, e_chain2 : function (msg) { var eventType = "Test.Event2"; $._ext_ed.dispatchEventCEP(eventType, msg + "part one"); $.sleep(5000); $._ext_ed.dispatchEventCEP(eventType, msg + "part two"); }, e_chain3 : function (msg) { var eventType = "Test.Event3"; $._ext_ed.dispatchEventCEP(eventType, msg) } } expected test result: Event Listeners created. Let's go! This is Event 1. Event 2 to occur... This is Event 2.part one Event 3 to occur... This is Event 3. This is Event 2.part two Event 3 to occur... This is Event 3. actual test result: Event Listeners created. Let's go! This is Event 1. Event 2 to occur... This is Event 2.part one Event 3 to occur... This is Event 2.part two Event 3 to occur... This is Event 3. This is Event 3. What's going on? Why is Event 3 not completely dispatched when Event 2 part one is obviously finished? It gets even worse when I click the button once more: Event Listeners created. Let's go! This is Event 1. Event 2 to occur... This is Event 2.part one Event 3 to occur... This is Event 2.part two Event 3 to occur... This is Event 2.part one Event 3 to occur... This is Event 2.part two Event 3 to occur... This is Event 3. This is Event 3. This is Event 3. This is Event 3. This is Event 3. This is Event 3. This is Event 3. This is Event 3. I'll try to find some useful reading on this myself but I'd appreciate useful comments! Cheers, e.d.
... View more
‎Jun 21, 2017
11:29 AM
I don't expect it. I'm just curious (as with many other things) how it's possible that one has made the effort to implement (mostly) proper OP-Atom reading and then just stopped. One could call it an incomplete feature. I see your reasoning behind it, but from a user perspective it's a PITA, breaking workflows in many places.
... View more
‎Jun 21, 2017
10:29 AM
Hi Anoop, but that's not really the case. In order to have proper wrapping to OP-1a, all streams contained therein need to be of the same length. Which means you have to do a full consolidation on every track of the AAF, which as a result means you're wasting disk space on black video and (mostly) audio silence (which again might not a big deal, depending on the sequence duration and the audio track count). I wonder why to make the extra effort when you can just as easily export a consolidated OP-1a file from MediaComposer. From an archiving point of view this doesn't make sense, because I would always want to preserve a non-baked version of the edit as well as the rendered result (with audio stems). Bruce Bullis​: In my view the issue is PPro represents OP-Atom essences as ClipItems which only hold a reference to the video essence, but not the audio essences of the same material package, so a reverse lookup requires jumping through various hoops on a file system or metadata level which either requires binary processing or 3rd party tools.
... View more
‎Jun 20, 2017
08:24 AM
1 Upvote
Hi, when you're creating an effect this will (at first) appear in the effects pane and not an invididual panel. Of course you can then have a "button" which will launch a separate UI. My guess is this is more straightforward to implement with the C++ SDK, not using JavaScript and HTML5. To my knowledge the latter don't have any direct interfaces to the effects pane, so you'd be stuck quite soon.
... View more
‎Jun 14, 2017
08:02 AM
1 Upvote
Is this an exact copy&paste of your code? If so, I think the problem is a missing comma (,) after the first mediaManage function declaration! $._MYFUNCTIONS = { mediaManage: function() { alert("success # 1"); } mediaManageAgain: function() { alert(success # 2); } } needs to be $._MYFUNCTIONS = { mediaManage: function() { alert("success # 1"); }, // comma goes here! mediaManageAgain: function() { alert(success # 2); } }
... View more
‎Jun 13, 2017
10:56 PM
Hi, have you used Samples/PProPanel at master · Adobe-CEP/Samples · GitHub as a reference before, or which one(s) have you been using? Okay, reading properly tells me this is your reference... In order to use CSInterface, you need to have files with the same functions to make it work... Short overview (as always, no guarantee re errors & omissions..) on the PPro Panel sample: manifest.xml -> must reference index.html and PProPanel.jsx index.html -> your panel, references ext.js and the .js files in the /lib/ subfolder PProPanel.jsx -> provides functions to access your .jsx files (evalFiles) ext.js -> "main script", uses PProPanel.jsx's functions to execute your .jsx files (line 217) /lib/CSInterface.js -> implements class CSInterface the methods of which drive CEP Which means you don't have to use CSInterface, it's (as the name says) an interface to CEP with more convenient methods. Of course, if you don't reference the relevant files, your script will not be executed. So you might as well stick with window.__adobe_cep__.evalScript("$._MYFUNCTIONS.mediaManage()"); because under the hood CSInterface does nothing else (see here). Have you tried this? Because my first question, if you have a callback function at all, seems still unanswered to me. Update: I did a quick check on my system. Funny enough, for me window.__adobe_cep__.evalScript("$._MYFUNCTIONS.mediaManage()"); doesn't do anything, whereas var cs = new CSInterface(); cs.evalScript("$._MYFUNCTIONS.mediaManage()"); does work. Also with a cascade of conditions like you have mentioned.
... View more
‎Jun 13, 2017
09:19 AM
Sorry, my bad I got the offsets wrong, or say I assumed the parser would give me hex, but they were dec. Hence the offsets are 10h (16d), and 54h (84d), and respectively 59h (89d). Which ruins my beautiful theory of straightforward offsetting, unless one interprets the hex value at 10h as decimal, but that hack might lead to trouble downstream...
... View more
‎Jun 13, 2017
06:01 AM
Hi Anoop, I know, Premiere's codec info is not sufficient for this application...What would be useful and feasible is to do a binary read of the MXF header and have the relevant byte(s) tell you what kind of essence(s) the file is containing. (One hour of research later...) As far as I understand it, if one looks at offset 16h of an MXF container, the byte value provided there gives the exact offset (x+1) of the OP descriptors. So if it says "83", the offset for the identifier is 84h (found this in XDCAM OP-1a, in OP-Atom generated by MC the offset is 89h). BTW, the "magic number" for OP-1a is 06 0E 2B 34 04 01 01 01 0D 01 02 01 01 01 09 00, whereas OP-Atom is 06 0E 2B 34 04 01 01 02 0D 01 02 01 10 02 00 00 . You might as well just regex-match for this in the first 300 bytes of the file...
... View more
‎Jun 13, 2017
04:42 AM
Hi, it is possible to determine the wrapper (i.e. file extension) and video codec of an item using app.project.rootItem.children .getProjectMetadata() -> for example, DNxHD is AVdn, XDCAM-HD422 is xd5c (sounds familiar? ), but it won't tell you if the clipitem really is a OP-1a or OP-Atom container. Premiere figures this out "under the hood", presumably by checking the file's internal GUIDs (which requires them to have been properly generated, otherwise OP-Atom files won't import as a single clip anyway).
... View more
‎Jun 13, 2017
03:19 AM
2 Upvotes
Hi, again, please have a look at the sample panel, this should get you started. Here's some documentation, and here. I wouldn't know where else to begin.
... View more
‎Jun 13, 2017
02:51 AM
Hi, yes, there is a JS (or JS-like) API for Premiere (but you can also use the C++ SDK if that's what you prefer...). If you want to, you can use any JS framework you want to build quite sophisticated stuff. Please have a look at the sample panel, this should get you started. Here's some documentation, and here. In there you will find not all, but a lot of information to get you up and running with a Panel for Premiere. What's also quite helpful is to download the aforementioned panels and have a look at their HTML/JS/JSX code, they're really simple. And then, if you still have questions, you can always ask here. This is only about Premiere, if you want to do a similar thing for FCP (7 or X ??), you will certainly have to use Apple's SDK for Xcode.
... View more
‎Jun 13, 2017
02:20 AM
Hi, first off, I wonder if you actually HAVE a callback function? window.__adobe_cep__.evalScript("$._MYFUNCTIONS.mediaManage()", callback); otherwise it should only be window.__adobe_cep__.evalScript("$._MYFUNCTIONS.mediaManage()"); That's what the error message suggests to me. Next thing, I have never used the calls to JSX functions the way you do. What I usually do is something like this: function myFunction() { var cs = new CSInterface(); if(document.getElementById("serialContent").checked == true){ cs.evalScript("$._MYFUNCTIONS.mediaManage()", callback); } if(document.getElementById("serialContent").checked == false){ cs.evalScript("$._MYFUNCTIONS.mediaManageAgain()", callback); } } The CEP object is, if I remember correctly, reserved for methods that are part of the CEF, but not ExtendScript (which is in the .JSX).
... View more
‎Jun 13, 2017
02:10 AM
1 Upvote
Hi, this doesn't look complicated (at first glance). Extreme just does a redirect when the Panel is loaded and takes you to a special subdomain of their site. My guess is that in there they have just added one more JS call (on the site which seems to be more or less the same as the "regular" site) to a JSX function in the Panel, which will create a new bin in the project and download the selected file(s) to that. So what you have highlighted in the screenshot is absolutely feasible. To me it seems there is a small caveat (but I don't know for sure), because I don't know if the file is being downloaded to the project directory or a generic download folder, or if a user can choose on downloading. But the Panel itself doesn't contain a lot of code, it's all rather simple.
... View more
‎Jun 12, 2017
07:35 AM
Let's say I would know how to do this in Premiere, for AE I can't tell. Also, in my experience doing this in Premiere works far better because users will make less mistakes. The potential of getting a, say, "unexpected" result is IMO far higher in AE.
... View more
‎Jun 12, 2017
07:27 AM
Hi, seems I don't get it. So you want to build a music (as in: "we allow users to purchase and download audio files") eCommerce site. You can pretty well build a Panel which allows users to access your site right inside of Premiere, yes (for instance, as Extreme Music did). I don't understand so far what you mean by ankurs79329453 schrieb ...that can we integrate Adobe premiere pro or final cut pro in our website of Magento or X-cart? These tools we wanted to use for give option of video, audio editing, extracting. Can you please expand on that? Currently I imagine you would want to control a (invisible to the user) Premiere instance from the website frontend to perform a/v editing. What use would that be, if users can't see what they're actually doing?
... View more
‎Jun 12, 2017
07:14 AM
Hi jweisbin, this is possible to do, though I would suggest having a sequence already populated with the graphic and the audio, so you just need to add the portion of the individual input file.
... View more
‎Jun 03, 2017
03:59 AM
2 Upvotes
sberic : Others must work remotely and are building workflows to support that approach. Which is exactly why almost all vendors of MAM-ish solutions have contributed their share to the "hundreds of panels out there", many of which allow for the workflow described because it is common not only nowadays but has been so for quite a few years. No need to re-invent the wheel, but choose carefully. If anyone's existing, proof-of-whatever solution is so unique, I wonder how long they can support it in the long run. If they start from scratch, they better plan to make their system so good they can sell it to others for many years, because otherwise it's not worth the effort. Everything is eventually deprecated, which we have seen over and over in the fundamental changes in the last 15-20 years of this industry. It is natural to want to respond to feedback directly within an application like this. I beg to differ from your opinion. My criterion for differentiation is this: If someone needs to edit clip-related metadata which shall afterwards be available for all users accessing the associated media files, using Premiere as primary frontend might be an approach of little use, because you can have that cheaper and more reliable in a browser. This is the scenario funkelodeon​ has described (my guess based on the use of "clips" instead of "edits" or "sequences"). The probable limitation not mentioned could be, for instance, they do not want to use proxies but need to look at the original hi-res and/or they need to output to a (broadcast) video monitor. Now, if the need is to review sequences, this boils down to the same thing because even though there are MAMs which can represent a Premiere sequence exactly as you have it in the app, they currently have no means of rendering effects and advanced transitions in the browser (or on the server and then stream it to the browser), which is why the editor will have to render the sequence to a clip. Sidenote: Yes, Adobe provides the GCD, which is why I would prefer they start fixing issues which are (not only) IMHO more important, instead of blaming it on, for example, the video card vendors. It is a foundation, and yet sturdiness is what I'm still waiting for (quality is an individual definition, that's okay, but there is something like "professional/industry standard", which ... I will stop here because continuing would quickly be off topic, and I've already discussed this with Bruce Bullis​ and others from Adobe, some of them years ago, and basically we're going in circles.)
... View more
‎Jun 02, 2017
10:02 AM
You said it, editing and outputting... I wonder why to perform review & approval in a craft editing app. My guess is "because".
... View more
‎Jun 02, 2017
09:29 AM
https://forums.adobe.com/people/Bruce+Bullis schrieb Isn't that user experience exactly what happens when people work with (for example, review & approval) markers, using the source/program monitor, and the marker panel? Yep, and I guess they don't like it. I'm not suggesting panel developers shouldn't want a transport control API; I'm just trying to understand the motivation, and what makes "how it works today" unworkable. I could also imagine the metadata is coming from another system and not necessarily in the Premiere project... I don't get the OP's concept as well, too much room for speculation, and to me it feels like PPro is being used for a process that's not really in its original scope.
... View more
‎Jun 01, 2017
10:41 AM
Does adding writeStream.end(); as last line (23) make a difference?
... View more
‎Jun 01, 2017
05:39 AM
Hi Kelly, if I'm not mistaken the ExtendScript domain and the HTML5 domain are entirely separated, functions will not permeate from one side to the other. The only thing you can pass between them are JSON objects (and simpler types of course). On the ExtendScript side you use includes (#include or @include), on the HTML5 side it's the easiest to load every script file in order in the <head> area. You could alternatively use jQuery's getScript, but this seems to not have worked reliably in the past.
... View more
‎May 28, 2017
10:53 PM
1 Upvote
Hi, let me kindly refer you to this thread: Panel Notification when Sequence Selection Changes? I have also discussed this topic in another thread with Bruce Bullis​ and we agree it's bad practice to use timers and similar constructs to simulate events. Events would be the way to go but so far they have not been implemented for Sequence Change Events and similar stuff.
... View more
‎May 26, 2017
09:20 AM
Fetching over http is a very bad idea, this is prone to server attacks as well as man-in-the-middle attacks. There's a reason why Adobe requires Panels to be signed...
... View more
‎May 25, 2017
05:17 AM
Hey Meet, for some reason unknown to me (and so far not explained by the CEF/CEP guys), you have to provide absolute paths. System environment variables will not work direclty AFAIK, they do not seem to get expanded. In ExtendScript you would use $.getenv("WINDIR") , but how that would be solved in JS+CEP, I don't know (yet).
... View more