ali-em / AdobeCollect

Export Adobe Connect videos to Mkv!
33 stars 2 forks source link

what about recording PDFs presentations...? #1

Open RyanNorooz opened 3 years ago

RyanNorooz commented 3 years ago

awesome app...🥳

but is it possible to record PDFs and PowerPoint presentations in-sync with the narrator's voice? or maybe record chat messages as well...?


IMO it would be really hard to track all these miscellaneous things and the current implementation is only suited for sessions that contain any video

another approach would be to run the session in a headless browser and somehow record the browser window this would take much longer times but the the result will identical to the ground truth

I will try to develop something like that but i just wanted to know if its possible to get all the other data (like chat, pdfs, mouse cursor, ...) from the downloaded zip file or not. any idea if that's possible?

ali-em commented 3 years ago

Hi Ryan, Thanks for your feedback and your nice idea of recording a headless browser (I may work on it if you don't mind)! I should fix some bugs there, but I'm too busy now, and sorry for that.

Now as you said is not supporting pdfs and chats, as they make it so much complex,

But for your information and helping to start your project: You can extract chats and PDFs too.

For accessing PDFs, you should download them separately, If you look at the mainstream.xml it has all of the events such as pdfs, mouse events, etc. For example there is some part like this:

<newValue>
                    <breakoutRoomID><![CDATA[0]]></breakoutRoomID>
                    <ctID><![CDATA[12]]></ctID>
                    <documentDescriptor>
                        <contentH><![CDATA[100]]></contentH>
                        <contentOutputPath><![CDATA[/_a7/pqzcwfm2rp3r/default/]]></contentOutputPath>
                        <contentW><![CDATA[100]]></contentW>
                        <customData><![CDATA[]]></customData>
                        <downloadUrl><![CDATA[/system/download?download-url=/_a7/pqzcwfm2rp3r/source/&name=Forwarding.pdf]]></downloadUrl>
                        <fileSize><![CDATA[203867]]></fileSize>
                        <originatingSco><![CDATA[35752999]]></originatingSco>
                        <parameters><![CDATA[]]></parameters>
                        <playbackContentOutputPath><![CDATA[/_a7/p6ri7txbxu2q/default/]]></playbackContentOutputPath>
                        <playbackFileName><![CDATA[/common/players/pdf2swf/2/viewer.swf]]></playbackFileName>
                        <playbackFileNameHTMLClient><![CDATA[/common/players/pdf2swf/2/viewer.swf]]></playbackFileNameHTMLClient>
                        <registerContentUrl><![CDATA[]]></registerContentUrl>
                        <scoID><![CDATA[35753104]]></scoID>
                        <scoPath><![CDATA[7/35753041-1/output/]]></scoPath>
                        <supportsPlaybackContentOutputPath><![CDATA[]]></supportsPlaybackContentOutputPath>
                        <theName><![CDATA[Forwarding.pdf]]></theName>
                        <theSuffix><![CDATA[1]]></theSuffix>
                        <theType><![CDATA[pdf2swf]]></theType>
                        <theUrl><![CDATA[/common/players/pdf2swf/2/viewer.swf]]></theUrl>
                        <version><![CDATA[8]]></version>
                    </documentDescriptor>
                    <isOverLayed><![CDATA[true]]></isOverLayed>
                    <phase><![CDATA[ready]]></phase>
                    <shareType><![CDATA[document]]></shareType>
                    <wbCTID><![CDATA[13]]></wbCTID>
                    <whoStartedIt><![CDATA[1]]></whoStartedIt>
                </newValue>

As you can see, there is a part:

<downloadUrl><![CDATA[/system/download?download-url=/_a7/pqzcwfm2rp3r/source/&name=Forwarding.pdf]]></downloadUrl>

You can download that specific page, appending the URL above to the main URL of that session. (There are ftcontent*.xml files that contains some events of pdf page changing, etc. that I'm not sure about format of it)

For the chats, they are in a few files, transcriptstream.xml contains them with their time sco_metadata.xml contains them using some position attribute. and also in fchat*.xml files, that contains chats and even isTyping states of users!

Hope it can help you :)

ali-em commented 3 years ago

@RyanNorooz I've created a gist that implements your idea using nodejs/puppeteer, I couldn't find an EZ way to record it headless, so it is headful now:

https://gist.github.com/ali-em/091cfe675889ae9a2d9c312ed6ae2c10

It may help you, please mention me if you created a better one

RyanNorooz commented 3 years ago

awesome demo...!

but also this happens sometimes:

(this is a private session so i can't share the link with you srry)

the webplayer has trouble replaying it's own pdf presentations. fascinating stuff from adobe... the app suggests using the classic view which work with adobe flash kill me already

another way would be to manually open adobeConnect session with the desktop app and record the window with sth like obs but then it would be impossible to record multiple sessions at once

i'm out of ideas now. lemme know if you find a workaround for this

ali-em commented 3 years ago

Things getting harder and harder :))) That is actually Adobe's issue as you said, I'm out of idea :) This is something that's not about recording :)

How these HUGE companies create these awful apps really!! Creating something with this amount of bugs and problems needs a high effort!

BOSS: LET'S KILL FLASH PLAYER AND NOTIFY ALL TO DELETE IT! DEV: BUT WE DEPEND ON IT BOSS: JUST DO IT!

RyanNorooz commented 2 years ago

this champ just did what we all have been trying to do pretty genius stuff... https://github.com/MRT-77/AdobeConnectRecord