vnc2swf-users Mailing List for vnc2swf (Page 16)
Status: Alpha
Brought to you by:
euske
You can subscribe to this list here.
2005 |
Jan
|
Feb
(1) |
Mar
(11) |
Apr
(9) |
May
(2) |
Jun
(2) |
Jul
(7) |
Aug
(32) |
Sep
(22) |
Oct
(31) |
Nov
(54) |
Dec
(8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(11) |
Feb
(14) |
Mar
(2) |
Apr
(6) |
May
(13) |
Jun
(10) |
Jul
(14) |
Aug
(12) |
Sep
(13) |
Oct
(62) |
Nov
(18) |
Dec
(12) |
2007 |
Jan
(13) |
Feb
(10) |
Mar
(27) |
Apr
(1) |
May
(10) |
Jun
(1) |
Jul
|
Aug
(10) |
Sep
(21) |
Oct
(15) |
Nov
(3) |
Dec
(4) |
2008 |
Jan
(4) |
Feb
(24) |
Mar
(1) |
Apr
(9) |
May
(7) |
Jun
(11) |
Jul
(10) |
Aug
(11) |
Sep
(4) |
Oct
|
Nov
(13) |
Dec
|
2009 |
Jan
(3) |
Feb
(4) |
Mar
(6) |
Apr
(37) |
May
|
Jun
(5) |
Jul
(1) |
Aug
(2) |
Sep
(1) |
Oct
|
Nov
(20) |
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
From: Fredrik G. <ive...@gm...> - 2006-08-31 08:21:28
|
I can only use the C version for some reason. The python version wont work. But that is not my current problem. The window is too small and do not fit my terminal. what to do? |
From: Roberto W. <rhw...@gm...> - 2006-08-28 14:52:53
|
hi, i made a tutorial on how to install and use pyvnc2swf. there is a text: http://estudiolivre.org/tiki-index.php?page=3Dv%C3%ADdeo+tutorial+swf&bl accompanied (obviously!) by a video tutorial: http://www.rhwinter.com/video_tutorial/ everything is in portuguese. --------------------------------------------------------------------- ol=E1, eu fiz um tutorial sobre como instalar e usar o pyvnc2swf. h=E1 um texto: http://estudiolivre.org/tiki-index.php?page=3Dv%C3%ADdeo+tutorial+swf&bl acompanhado (=E9 claro!) por um video tutorial: http://www.rhwinter.com/video_tutorial/ tudo em portugu=EAs. enjoy, roberto |
From: jewelz <je...@gm...> - 2006-08-27 23:03:51
|
Hi, I am working with pyvnc2swf with vncserver and vncviewer (Xvnc) in ubuntu 6.06 I am successfully connecting to localhost:2 and can record for around 20-30 minutes, however after this time I get the following error and cannot stop recording to save the swf file. I am recording under the SWF (Shape) type. Writing: out.html... Connected: localhost:5902, protocol_version=3.3, preferred_encoding=(0, -232, -239) VNC Screen: size=800x600, name="root's x11 desktop (me:2)" Creating movie: '/home/me/pyvnc2swf-0.8.2/out.swf': version=5, size=800x600, framerate=12.0, compression=None //after some time.. Traceback (most recent call last): File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 1345, in __call__ return self.func(*args) File "./vnc2swf.py", line 225, in record self.client.close() File "/home/me/pyvnc2swf-0.8.2/rfb.py", line 525, in close RFBProxy.close(self) File "/home/me/pyvnc2swf-0.8.2/rfb.py", line 463, in close self.fb.close() File "/home/me/pyvnc2swf-0.8.2/rfb.py", line 814, in close self.stream.close() File "/home/me/pyvnc2swf-0.8.2/output.py", line 482, in close self.writer.write_file(self.output_frames) File "/home/me/pyvnc2swf-0.8.2/swf.py", line 708, in write_file assert not self.fpstack, 'nonempty fpstack: %r' % self.fpstack AssertionError: nonempty fpstack: [<open file '/home/me/pyvnc2swf-0.8.2/out.swf', mode 'wb' at 0xb6fe4de8>] My vnc server has the following startup options associated: sudo /usr/bin/Xvnc :2 -query localhost -geometry 800x600 -depth 16 -once -fp /usr/share/X11/fonts/misc -dontdisconnect -rfbauth /root/.vncpasswd |
From: Michael G. <mig...@gm...> - 2006-08-18 12:06:45
|
> Hi Michael > > Thanks for the bug report... this is probably something in the pymedia > code. You seem to have the same versions of the code as me so I'm not sure > what's wrong... > I think unfortunately the only way to found out what's going wrong is to > add debug prints into the code / run it through pdb - you familiar with > how to do that? Otherwise we can try help... > > Cheers > David Hi, I tried running vnc2swf.py with 'import pdb' and 'pdb.set_trace()' and this is the last output (step-mode): > /usr/lib/python2.4/lib-tk/Tkinter.py(1139)configure()->None -> return self._configure('configure', cnf, kw) (Pdb) > /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/vnc2swf.py(170)status() -> return (Pdb) --Return-- > /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/vnc2swf.py(170)status()->None -> return (Pdb) > /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/vnc2swf.py(189)set_filename() -> self.root.update() (Pdb) --Call-- > /usr/lib/python2.4/lib-tk/Tkinter.py(857)update() -> def update(self): (Pdb) > /usr/lib/python2.4/lib-tk/Tkinter.py(859)update() -> self.tk.call('update') (Pdb) --Return-- > /usr/lib/python2.4/lib-tk/Tkinter.py(859)update()->None -> self.tk.call('update') (Pdb) Connected: localhost:5900, protocol_version=3.8, preferred_encoding=(0, -232, -239) VNC Screen: size=1280x1024, name='miga:0.0' Output movie size: 1280x1024 Creating movie: 'test.swf': version=5, size=1280x1024, framerate=12.0, compression=None recording to test.mp3 Fatal Python error: (pygame parachute) Segmentation Fault Aborted It seems that the problem is in the pygame not vnc2swf. Should I run pdb inside pygame? If yes where should i put the pdb-code? I also used python -v and thats the output (last lines): import pymedia.removable # precompiled from /usr/lib/python2.4/site-packages/pymedia/removable/__init__.pyc dlopen("/usr/lib/python2.4/site-packages/pymedia/removable/cd.so", 2); import pymedia.removable.cd # dynamically loaded from /usr/lib/python2.4/site-packages/pymedia/removable/cd.so # /usr/lib/python2.4/site-packages/pymedia/player.pyc matches /usr/lib/python2.4/site-packages/pymedia/player.py import pymedia.player # precompiled from /usr/lib/python2.4/site-packages/pymedia/player.pyc Using pymedia 1.3.5 # /usr/lib/python2.4/getopt.pyc matches /usr/lib/python2.4/getopt.py import getopt # precompiled from /usr/lib/python2.4/getopt.pyc # /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/record_sound.pyc matches /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/record_sound.py import pyvnc2swf.record_sound # precompiled from /home/miga/Desktop/pyvnc2swf-0.8.2.1/pyvnc2swf-0.8.2.1/pyvnc2swf/record_sound.pyc Connected: localhost:5900, protocol_version=3.8, preferred_encoding=(0, -232, -239) VNC Screen: size=1280x1024, name='miga:0.0' Output movie size: 1280x1024 Creating movie: 'test.swf': version=5, size=1280x1024, framerate=12.0, compression=None recording to test.mp3 Fatal Python error: (pygame parachute) Segmentation Fault Aborted Perhaps this helps finding the error. I'm going to try it on my windows box later. Greets, Michael |
From: David F. <da...@sj...> - 2006-08-17 15:45:40
|
Michael Gangolf wrote: > Hi, > I just tried the patched version 0.8.2-1 and get the following error message: > > Using pygame 1.7.1release > Using pymedia 1.3.5 > Connected: localhost:5900, protocol_version=3.8, > preferred_encoding=(0, -232, -239) > VNC Screen: size=1280x1024, name='miga:0' > Output movie size: 1280x1024 > Creating movie: 'recording.swf': version=5, size=1280x1024, framerate=12.0, > compression=None > recording to a.mp3 > Fatal Python error: (pygame parachute) Segmentation Fault > Aborted > > on my linux machine with x11vnc: 0.8.2 lastmod: 2006-07-12 and Python 2.4.3 > Without sound recording it works. Any hints how to fix it? > > Greets, > Michael Hi Michael Thanks for the bug report... this is probably something in the pymedia code. You seem to have the same versions of the code as me so I'm not sure what's wrong... I think unfortunately the only way to found out what's going wrong is to add debug prints into the code / run it through pdb - you familiar with how to do that? Otherwise we can try help... Cheers David |
From: Michael G. <mig...@gm...> - 2006-08-16 15:31:26
|
Hi, I just tried the patched version 0.8.2-1 and get the following error message: Using pygame 1.7.1release Using pymedia 1.3.5 Connected: localhost:5900, protocol_version=3.8, preferred_encoding=(0, -232, -239) VNC Screen: size=1280x1024, name='miga:0' Output movie size: 1280x1024 Creating movie: 'recording.swf': version=5, size=1280x1024, framerate=12.0, compression=None recording to a.mp3 Fatal Python error: (pygame parachute) Segmentation Fault Aborted on my linux machine with x11vnc: 0.8.2 lastmod: 2006-07-12 and Python 2.4.3 Without sound recording it works. Any hints how to fix it? Greets, Michael |
From: Mirko N. <mi...@ar...> - 2006-08-06 10:52:53
|
Hello, Great stuff this pyvnc2swf! I just want to report an issue with the mpg output, probably due to PyMedia rather than pyvnc2swf. I'm running Ubuntu 6.06 (Dapper Drake) i386. With PyMedia 1.3.7.3 (the latest version) I get the following exception: -- mirko@nefertiti:~$ ./apps/pyvnc2swf-0.8.2/edit.py -o demo.mpg demo.swf Using pygame 1.7.1release Using pymedia 1.3.7.0 Scanning source swf file: demo.swf... Input movie: version=7, size=600x450, framerate=12fps, frames=145, duration=12.1 s. Output movie size: 600x450 Creating MPEG: 'demo.mpg': codec=mpeg2video, size=600x450, framerate=12.0 .Traceback (most recent call last): File "./apps/pyvnc2swf-0.8.2/edit.py", line 234, in ? if __name__ == "__main__": main(sys.argv[1:]) File "./apps/pyvnc2swf-0.8.2/edit.py", line 229, in main mp3seek=mp3seek, mp3skip=mp3skip) File "./apps/pyvnc2swf-0.8.2/edit.py", line 84, in reorganize builder.build(r) File "/home/mirko/apps/pyvnc2swf-0.8.2/output.py", line 874, in build self.stream.next_frame() File "/home/mirko/apps/pyvnc2swf-0.8.2/output.py", line 758, in next_frame self.out_file.write(encFrame) TypeError: argument 1 must be string or read-only buffer, not pymedia.video.vcod ec.VFrame -- So I've tried PyMedia version 1.3.5.0 instead, which is the version mentioned on the pyvnc2swf web page, and it works correctly. Seems like the API for Encoder.encode() has changed and it now returns a VFrame instead of a string? If that's the case (why an API change in a minor release?) maybe it could be mentioned in the documentation that pyvnc2swf required *exactly* version 1.3.5.0 of PyMedia. Thanks Mirko |
From: <lfk...@ya...> - 2006-08-03 13:10:08
|
Thanks for the quick response. Hmm, maybe it's a flash issue in linux, but I am on the latest firefox 1.5.0.5 and the latest flash provided to linux (ubuntu distro dapper). The swf file alone will launch in firefox in windows but not in linux. In linux if I right click I see the 'about macromedia flash' and above that 'movie not loaded.' I guess it must be a linux/flash issue but any other swf file I have can be played on its own. I noticed that if one goes fullscreen in windows firefox it scales the video which the html prevents, but at least it plays. Also in windows I do have the slider and pause button. However when I attempted to use the slider, a security prompt came up saying 'the tutorial1.html is trying to access tutorial1.swf' and it directed me to macromedia's site with a flash applet to allow this to continue. I found that strange, never encountered that before. The security issue (clicking the slider): >From http://www.adobe.com/devnet/flash/articles/fplayer8_security.html: "In Flash Player 8 Macromedia has changed the security model that's applied to local Flash content. By default, Flash applications that are run from a user's local file system rather than over HTTP have more limited privileges in Flash Player 8 than in Flash Player 7. This model is applied to Flash content of all versions, which means that content published before the release of Flash Player 8 may be affected, in addition to new content created after its release. This article describes how to fix most issues that arise from these changes." This problem happens only when the swf is run locally but it is not supposed to happen when you run the swf through HTTP. I didn't fully understand what you mentioned on compression, but this is what I was referring to. When I capture a movie I see: Creating movie: 'tutorial.swf': version=7, size=640x480, framerate=12.0, compression=None I see compression=true when encoding with edit but the above is when first capturing. Just wanted to make sure there isn't some other type of real time compression. Sorry! The swf file can be compressed or uncompressed. The difference is only that the whole file after the swf header is compressed using ZLIB when it's compressed. This is only available through edit.py. The vnc protocol always sends rectangle areas (colored or bitmap) where there has been a screen update. Pyvnc2swf in shape mode uses this rectangle areas to create swf objects. The optimisation is only that it doesn't create a rectangle that has been overwritten entirely by another object in the same frame. (Please correct me if I'm wrong!). Since an object is created for each rectangle update, it can run out of available object ids (number) in recordings with alot of updates and that are long. But in video mode, pyvnc2swf uses the "screen video format" available in the swf specification "designed for sending captures of screen in action". It divides the area in blocks. "Each frame in a screen video sequence is formatted as a series of blocks. These blocks form a grid over the image. In a keyframe, every block is sent. In an interframe, one or more blocks will contain no data, which indicates that the bitmap region represented by that block has not changed since the last update of that image area." For recordings where the screen changes alot and frequently the video format usually is better and the swf smaller. I would suggest first recording to vnc mode (recording is faster) and converting to video mode afterwards with edit.py with compression on. --------------------------------- Yahoo! Search Música para ver e ouvir: You're Beautiful, do James Blunt |
From: mcquaid m. <mcq...@gm...> - 2006-08-02 21:16:48
|
Thanks for the quick response. Hmm, maybe it's a flash issue in linux, but I am on the latest firefox 1.5.0.5 and the latest flash provided to linux (ubuntu distro dapper). The swf file alone will launch in firefox in windows but not in linux. In linux if I right click I see the 'about macromedia flash' and above that 'movie not loaded.' I guess it must be a linux/flash issue but any other swf file I have can be played on its own. = I noticed that if one goes fullscreen in windows firefox it scales the video which the html prevents, but at least it plays. Also in windows I do have the slider and pause button. However when I attempted to use the slider, a security prompt came up saying 'the tutorial1.html is trying to access tutorial1.swf' and it directed me to macromedia's site with a flash applet to allow this to continue. I found that strange, never encountered that before. I found this bookmarklet that adds a slider when clicked once a flash file is loaded. http://www.squarefree.com/bookmarklets/flash.html Just read that this boommarklet is what is intergrated into to vnc2swf html generated file. Strange it works if enabled manually, can anyone else test this in linux here? So I have a workaround in linux, but I guess I'm more concerned about how other users will encounter a screencast created with vnc2swf if I uploaded them. I didn't fully understand what you mentioned on compression, but this is what I was referring to. When I capture a movie I see: Creating movie: 'tutorial.swf': version=3D7, size=3D640x480, framerate=3D12= .0, compression=3DNone I see compression=3Dtrue when encoding with edit but the above is when firs= t capturing. Just wanted to make sure there isn't some other type of real time compression. And thanks for the info on sound, I thought it was something like that. And if anyone else is aware of blogs that would allow the html jscript needed for these files please post. Or at least I hope the flash file alon= e not working for me is something isolated to my machine and not all linux users. But ya I agree too, an intergrated slider (or an option to enable it) would be nice. On 8/2/06, lfk...@ya... <lfk...@ya...> wrote: > > **I'm not a member of this project but I usually try to answer some email= s > when I can because I believe everybody that uses an open source project > should try to help it somehow. > Many replies to messages in this list have been made through private > messages which I think is not good since many people could benefit from t= he > answers. > I think Yusuke should try to change the default answer field to the list > email and not to the person that wrote the message. > I'll try to answer some of the questions: > > A few things, is there no way to have play, pause, maybe a slider in a > browser or only through play.py? Looking through the html file, I see it > mentioning play, pause, slider, but I don't see them in firefox and epiph= any > but they didn't show in either. > > I use Firefox for Windows and the slider does appear. I once had the sam= e > problem and I think it was solved when I upgraded Firefox. I think the > slider should be in the swf file, but that's up to Yusuke, or any > volunteer... > > Also, I wanted to make some screen casts to eventually upload to a blog. > I've never bothered with blogging, how will it work when I need to upload > two files (html & swf) to play? I haven't tried yet but wasn't sure if > there were some blogs more friendly to that. > > I don't know. Maybe, if your blog allows to include html tags and > javascript in the post then you could upload only the swf and copy the ht= ml > and javascript from the html file. > > Regarding audio, I use -S with arecord like so arecord -c 1 -r 22050 -t > wav voice.wav which sounded fine. But just to see how far I could push > the audio side I tried -r 16000, but edit complained of an error dealing > with rate. (something like error !16000). I use lame for the mp3 > conversion and simply do lame voice.wav voice.mp3. But when I tried to > add -b 16000 I got the same error. Same thing for 8000. Is this a flash > limitation or something with edit.py or in the way I'm capturing/encoding > audio? > > From the swf specification: "The Macromedia Flash (SWF) file format > defines a small and efficient sound model. SWF file format supports sampl= e > rates of 5.5, 11, 22 and 44 kHz in both stereo and mono." > > > Btw, are there any plans on adding a hotkey for stop start and maybe an > ability to pause? I know they can be edited later but it's kinda cumbers= ome > esp when having to deal with a seperate audio file. I wonder if there ar= e > any flash editors that these work in. > > I don't know. > > Also, I tried wink, and did not like the performance but thought the > option to make an optimized palette was a nice option, does pyvnc2swf do > something similar with its compression? I use compression with edit, but = I > noticed when starting pyvnc2swf iit also mentions compression (compressio= n: > none). Is this referring to zlib compression or some other option during > capture? I don't see an option for that. If it's zlib, it's reading that > from the vnc session? I use vnc4server/viewer in ubuntu and it says the > default for zlib is 1 (zero being off) so I don't think it's referring t= o > that. The max for zlib is 9, should one increase the default for typical > screencasts? I bring this up because it's mentioned in the readme that > compression during edit is largely redundant due to zlib compression and = so > far I"m been compressing during edit and noticing a fair file size decrea= se, > but I wouldn't mind if I could compress on the fly if it's not too cpu > intensive. > > The compression used by pyvnc2swf has nothing to do with the vnc > compression. The compression it uses is the one specified in the swf > specification: "...entire file after the first 8 bytes (that is, after th= e > FileLength field) has been compressed using the open standard ZLIB. The d= ata > format used by the ZLIB library is described by Request for Comments (RFC= s) > documents 1950 to 1952." > > Hope it was helpfull. > > Regards, > > Luis Fernando > > ------------------------------ > Yahoo! Search > M=FAsica para ver e ouvir: You're Beautiful, do James Blunt<http://us.rd.= yahoo.com/mail/br/tagline/search/video/*http://br.search.yahoo.com/search/v= ideo?p=3Djames+blunt&ei=3DUTF-8&cv=3Dg&x=3Dwrt&vm=3Dr&fr=3Dintl-mail-br-b> > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > > _______________________________________________ > Vnc2swf-users mailing list > Vnc...@li... > https://lists.sourceforge.net/lists/listinfo/vnc2swf-users > > > |
From: <lfk...@ya...> - 2006-08-02 16:15:26
|
I'm not a member of this project but I usually try to answer some emails when I can because I believe everybody that uses an open source project should try to help it somehow. Many replies to messages in this list have been made through private messages which I think is not good since many people could benefit from the answers. I think Yusuke should try to change the default answer field to the list email and not to the person that wrote the message. I'll try to answer some of the questions: A few things, is there no way to have play, pause, maybe a slider in a browser or only through play.py? Looking through the html file, I see it mentioning play, pause, slider, but I don't see them in firefox and epiphany but they didn't show in either. I use Firefox for Windows and the slider does appear. I once had the same problem and I think it was solved when I upgraded Firefox. I think the slider should be in the swf file, but that's up to Yusuke, or any volunteer... Also, I wanted to make some screen casts to eventually upload to a blog. I've never bothered with blogging, how will it work when I need to upload two files (html & swf) to play? I haven't tried yet but wasn't sure if there were some blogs more friendly to that. I don't know. Maybe, if your blog allows to include html tags and javascript in the post then you could upload only the swf and copy the html and javascript from the html file. Regarding audio, I use -S with arecord like so arecord -c 1 -r 22050 -t wav voice.wav which sounded fine. But just to see how far I could push the audio side I tried -r 16000, but edit complained of an error dealing with rate. (something like error !16000). I use lame for the mp3 conversion and simply do lame voice.wav voice.mp3. But when I tried to add -b 16000 I got the same error. Same thing for 8000. Is this a flash limitation or something with edit.py or in the way I'm capturing/encoding audio? >From the swf specification: "The Macromedia Flash (SWF) file format defines a small and efficient sound model. SWF file format supports sample rates of 5.5, 11, 22 and 44 kHz in both stereo and mono." Btw, are there any plans on adding a hotkey for stop start and maybe an ability to pause? I know they can be edited later but it's kinda cumbersome esp when having to deal with a seperate audio file. I wonder if there are any flash editors that these work in. I don't know. Also, I tried wink, and did not like the performance but thought the option to make an optimized palette was a nice option, does pyvnc2swf do something similar with its compression? I use compression with edit, but I noticed when starting pyvnc2swf iit also mentions compression (compression: none). Is this referring to zlib compression or some other option during capture? I don't see an option for that. If it's zlib, it's reading that from the vnc session? I use vnc4server/viewer in ubuntu and it says the default for zlib is 1 (zero being off) so I don't think it's referring to that. The max for zlib is 9, should one increase the default for typical screencasts? I bring this up because it's mentioned in the readme that compression during edit is largely redundant due to zlib compression and so far I"m been compressing during edit and noticing a fair file size decrease, but I wouldn't mind if I could compress on the fly if it's not too cpu intensive. The compression used by pyvnc2swf has nothing to do with the vnc compression. The compression it uses is the one specified in the swf specification: "...entire file after the first 8 bytes (that is, after the FileLength field) has been compressed using the open standard ZLIB. The data format used by the ZLIB library is described by Request for Comments (RFCs) documents 1950 to 1952." Hope it was helpfull. Regards, Luis Fernando --------------------------------- Yahoo! Search Música para ver e ouvir: You're Beautiful, do James Blunt |
From: mcquaid m. <mcq...@gm...> - 2006-08-02 02:18:08
|
Tried a few and this one is the best for what I need. A few things, is there no way to have play, pause, maybe a slider in a browser or only through play.py? Looking through the html file, I see it mentioning play, pause, slider, but I don't see them in firefox and epiphany but they didn't show in either. Also, I wanted to make some screen casts to eventually upload to a blog. I've never bothered with blogging, how will it work when I need to upload two files (html & swf) to play? I haven't tried yet but wasn't sure if there were some blogs more friendly to that. Regarding audio, I use -S with arecord like so arecord -c 1 -r 22050 -t wav voice.wav which sounded fine. But just to see how far I could push the audio side I tried -r 16000, but edit complained of an error dealing with rate. (something like error !16000). I use lame for the mp3 conversion and simply do lame voice.wav voice.mp3. But when I tried to add -b 16000 I got the same error. Same thing for 8000. Is this a flash limitation or something with edit.py or in the way I'm capturing/encoding audio? Btw, are there any plans on adding a hotkey for stop start and maybe an ability to pause? I know they can be edited later but it's kinda cumbersome esp when having to deal with a seperate audio file. I wonder if there are any flash editors that these work in. Also, I tried wink, and did not like the performance but thought the option to make an optimized palette was a nice option, does pyvnc2swf do something similar with its compression? I use compression with edit, but I noticed when starting pyvnc2swf iit also mentions compression (compression: none). Is this referring to zlib compression or some other option during capture? I don't see an option for that. If it's zlib, it's reading that from the vnc session? I use vnc4server/viewer in ubuntu and it says the default for zlib is 1 (zero being off) so I don't think it's referring to that. The max for zlib is 9, should one increase the default for typical screencasts? I bring this up because it's mentioned in the readme that compression during edit is largely redundant due to zlib compression and so far I"m been compressing during edit and noticing a fair file size decrease, but I wouldn't mind if I could compress on the fly if it's not too cpu intensive. |
From: <lfk...@ya...> - 2006-07-28 17:39:53
|
#!/usr/bin/env python ## ## pyvnc2swf - swf.py ## ## $Id: swf.py,v 1.8 2005/11/21 03:06:16 euske Exp $ ## ## Copyright (C) 2005 by Yusuke Shinyama (yusuke at cs . nyu . edu) ## All Rights Reserved. ## ## This is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This software is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this software; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. ## import sys, zlib, StringIO from struct import pack, unpack stderr = sys.stderr lowerbound = max upperbound = min CURSOR_DEPTH = 65535 ## SWFParser ## class SWFParser: """ Low-level SWF parser. Inheritable. It invokes do_tagXXX method for every SWF tag. """ def __init__(self, debug=0): self.fp = None self.buff = 0 self.bpos = 8 self.debug = debug self.framepos = [] return # fixed bytes read def read(self, n): x = self.fp.read(n) if len(x) != n: raise EOFError return x def readui8(self): return ord(self.read(1)) def readsi8(self): return unpack('<b', self.read(1))[0] def readui16(self): return unpack('<H', self.read(2))[0] def readub16(self): return unpack('>H', self.read(2))[0] def readsi16(self): return unpack('<h', self.read(2))[0] def readui32(self): return unpack('<L', self.read(4))[0] def readrgb(self): return ( self.readui8(), self.readui8(), self.readui8() ) def readrgba(self): return ( self.readui8(), self.readui8(), self.readui8(), self.readui8() ) # fixed bits read def setbuff(self, bpos=8, buff=0): (self.bpos, self.buff) = (bpos, buff) return def readbits(self, bits, signed=False): if bits == 0: return 0 bits0 = bits v = 0 while 1: r = 8-self.bpos # the number of remaining bits we can get from the current buffer. if bits <= r: # |-----8-bits-----| # |-bpos-|-bits-| | # | |----r----| v = (v<<bits) | ((self.buff>>(r-bits)) & ((1<<bits)-1)) self.bpos += bits break else: # |-----8-bits-----| # |-bpos-|---bits----... # | |----r----| v = (v<<r) | (self.buff & ((1<<r)-1)) bits -= r self.buff = ord(self.read(1)) self.bpos = 0 if signed and (v>>(bits0-1)): v -= (1<<bits0) return v # variable length structure def readstring(self): s = [] while 1: c = self.read(1) if c == '\x00': break s.append(c) return unicode(''.join(s), self.encoding) def readrect(self): '''(xmin, xmax, ymin, ymax) NOT width and height!''' x = ord(self.read(1)) bits = x>>3 self.setbuff(5, x) return ( self.readbits(bits,1), self.readbits(bits,1), self.readbits(bits,1), self.readbits(bits,1) ) def readmatrix(self): '''returns (scalex, scaley, rot0, rot1, transx, transy)''' self.setbuff() (scalex, scaley) = (None, None) if self.readbits(1): # hasscale n = self.readbits(5) scalex = self.readbits(n,1)/65536.0 scaley = self.readbits(n,1)/65536.0 (rot0, rot1) = (None, None) if self.readbits(1): # hasrotate n = self.readbits(5) rot0 = self.readbits(n,1)/65536.0 rot1 = self.readbits(n,1)/65536.0 (transx, transy) = (None, None) n = self.readbits(5) transx = self.readbits(n,1) transy = self.readbits(n,1) return (scalex, scaley, rot0, rot1, transx, transy) def readgradient(self, version): n = self.readui8() r = [] for i in xrange(n): ratio = self.readui8() if version < 3: color = self.readrgb() else: color = self.readrgba() r.append((ratio, color)) return r def read_style(self, version): ''' fillstyles: list of (color, matrix, gradient, bitmapid, bitmapmatrix) linestyles: list of (width, color) ''' # fillstylearray fillstyles = [] nfills = self.readui8() if 2 <= version and nfills == 0xff: nfills = self.readui16() for i in xrange(nfills): t = self.readui8() (color, matrix, gradient, bitmapid, bitmapmatrix) = (None, None, None, None, None) if t == 0x00: if version == 3: color = self.readrgba() else: color = self.readrgb() elif t in (0x10, 0x12): matrix = self.readmatrix() gradient = self.readgradient(version) elif t in (0x40, 0x41, 0x42, 0x43): bitmapid = self.readui16() bitmapmatrix = self.readmatrix() fillstyles.append((color, matrix, gradient, bitmapid, bitmapmatrix)) # linestylearray linestyles = [] nlines = self.readui8() if 2 <= version and nlines == 0xff: nlines = self.readui16() for i in xrange(nlines): width = self.readui16() if version == 3: color = self.readrgba() else: color = self.readrgb() linestyles.append((width, color)) return (fillstyles, linestyles) def read_shape(self, version, fillstyles=[], linestyles=[]): self.setbuff() nfillbits = self.readbits(4) nlinebits = self.readbits(4) r = [] while 1: typeflag = self.readbits(1) if typeflag: # edge spec. straightflag = self.readbits(1) if straightflag: # StraightEdgeRecord n = self.readbits(4)+2 if self.readbits(1): dx = self.readbits(n,1) dy = self.readbits(n,1) r.append( (1,(dx,dy)) ) elif self.readbits(1): dy = self.readbits(n,1) r.append( (1,(0,dy)) ) else: dx = self.readbits(n,1) r.append( (1,(dx,0)) ) else: # CurveEdgeRecord n = self.readbits(4)+2 cx = self.readbits(n,1) cy = self.readbits(n,1) ax = self.readbits(n,1) ay = self.readbits(n,1) r.append( (2,(cx,cy),(ax,ay)) ) else: # style spec. flags = self.readbits(5) if flags == 0: break if flags & 1: n = self.readbits(5) x0 = self.readbits(n,1) y0 = self.readbits(n,1) r.append( (0,(x0,y0)) ) if flags & 2: fillstyle0 = self.readbits(nfillbits) if flags & 4: fillstyle1 = self.readbits(nfillbits) if flags & 8: linestyle1 = self.readbits(nlinebits) if flags & 16: (fillstyles, linestyles) = self.read_style(version) nfillbits = self.readbits(4) nlinebits = self.readbits(4) return r # def parse_header(self): (F,W,S,V) = self.read(4) assert W == 'W' assert S == 'S' self.swf_version = ord(V) if 6 <= self.swf_version: self.encoding = 'utf-8' self.totallen = self.readui32() if self.debug: print >>stderr, 'Header:', F,W,S,self.swf_version,self.totallen if F == 'C': # compressed x = zlib.decompress(self.fp.read()) self.fp = StringIO.StringIO(x) self.rect = self.readrect() self.framerate = self.readui16()/256.0 self.framecount = self.readui16() if self.debug: print >>stderr, 'Header:', self.rect, self.framerate, self.framecount return def open(self, fname): print >>stderr, 'Scanning source swf file: %s...' % fname self.fp = file(fname, 'rb') self.parse_header() pos = self.fp.tell() try: while 1: x = self.readui16() tag = x>>6 if x & 63 == 63: length = self.readui32() else: length = x & 63 pos0 = self.fp.tell() name = 'scan_tag%d' % tag # branch to scan_tag<N> if hasattr(self, name): getattr(self, name)(tag, length) self.fp.seek(pos0+length) if tag == 1: # next frame self.framepos.append(pos) pos = self.fp.tell() except EOFError: pass return def parse_frame(self, n): self.fp.seek(self.framepos[n]) if self.debug: print >>stderr, 'seek:', n, self.framepos[n] try: while 1: x = self.readui16() tag = x>>6 if x & 63 == 63: length = self.readui32() else: length = x & 63 pos0 = self.fp.tell() name = 'do_tag%d' % tag # branch to do_tag<N> if hasattr(self, name): getattr(self, name)(tag, length) else: self.do_unknown_tag(tag, length) self.fp.seek(pos0+length) if tag == 1: break except EOFError: pass return def parse_tag1(self): x = self.readui16() tag = x>>6 if x & 63 == 63: length = self.readui32() else: length = x & 63 pos0 = self.fp.tell() name = 'do_tag%d' % tag # branch to do_tag<N> if hasattr(self, name): getattr(self, name)(tag, length) else: self.do_unknown_tag(tag, length) self.fp.seek(pos0+length) return def do_unknown_tag(self, tag, length): if self.debug: print >>stderr, 'unknown tag: %d, length=%d' % (tag, length) return def do_tag0(self, tag, length): # end return ## SWFWriter ## # return the number of required bits for x. def needbits1(x, signed=False): if x == 0: return 0 if signed: n = 1 if x < 0: x = -x-1 else: n = 0 assert 0 < x while 1: n += 1 x >>= 1 if x == 0: break return n def needbits(args, signed=False): return max([ needbits1(x, signed) for x in args ]) # assert needbits1(0,0) == 0 # assert needbits1(0,1) == 0 # assert needbits1(1,0) == 1 # assert needbits1(1,1) == 2 # assert needbits1(2,0) == 2 # assert needbits1(-2,1) == 2 # assert needbits1(-3,1) == 3 # assert needbits1(127,0) == 7 # assert needbits1(127,1) == 8 # assert needbits1(128,0) == 8 # assert needbits1(-128,1) == 8 # assert needbits1(-129,1) == 9 # assert needbits1(-6380,1) == 14 class SWFWriter: """ Low-level SWF generator. It handles some primitive data types and compression. w = SWFWriter('out.swf', 5, (0,0,640,480), True) w.start_tag() w.writeui32(...) w.end_tag(1) ... w.write_file(10) """ def __init__(self, outfile, swf_version, rect, framerate, compression): self.outfp = file(outfile, 'wb') self.swf_version = swf_version self.rect = rect self.framerate = framerate self.compression = compression self.fpstack = [] self.bpos = 0 self.buff = 0 self.objid = 0 if self.compression: self.fp = StringIO.StringIO() self.fp.write('CWS%c' % self.swf_version) else: self.fp = self.outfp self.fp.write('FWS%c' % self.swf_version) self.lenpos = self.fp.tell() self.writeui32(0) # dummy length self.writerect(rect) self.writeui16(int(framerate * 256)) self.fcpos = self.fp.tell() self.writeui16(0) # dummy framecount self.start_action() self.do_action(0x96,7) # PushData type + data + 0x00 self.writeui8(0x00) # String self.writestring('Stage') self.do_action(0x1c) # GetVariable self.do_action(0x96, 11) # Push self.writeui8(0x00) # String self.writestring('scaleMode') self.do_action(0x96, 9) # Push self.writeui8(0x00) # String self.writestring('noScale') self.do_action(0x4f) # setMember self.end_action() return def newid(self): self.objid += 1 assert self.objid < 65536, 'the number of objects exceeded the limit!' return self.objid def push(self): self.fpstack.append(self.fp) self.fp = StringIO.StringIO() return def pop(self): assert self.fpstack, 'empty fpstack' self.fp.seek(0) data = self.fp.read() self.fp = self.fpstack.pop() return data # fixed bytes write def write(self, *args): for x in args: self.fp.write(x) return def writeui8(self, *args): for x in args: self.fp.write(chr(x)) return def writesi8(self, *args): for x in args: self.fp.write(pack('<b', x)) return def writeui16(self, *args): for x in args: self.fp.write(pack('<H', x)) return def writeub16(self, *args): for x in args: self.fp.write(pack('>H', x)) return def writesi16(self, *args): for x in args: self.fp.write(pack('<h', x)) return def writeui32(self, *args): for x in args: self.fp.write(pack('<L', x)) return def writergb(self, (r,g,b)): self.writeui8(r,g,b) return def writergba(self, (r,g,b,a)): self.writeui8(r,g,b,a) return # fixed bits write def writebits(self, bits, x, signed=False): if signed and x < 0: x += (1<<bits) assert 0 <= x and x < (1<<bits) while 1: r = 8-self.bpos # the number of remaining bits we can write into the current buffer. if bits <= r: # |-----8-bits-----| # |-bpos-|-bits-| | # | |----r----| self.buff |= x << (r-bits) self.bpos += bits # <= 8 break else: # |-----8-bits-----| # |-bpos-|---bits----... # | |----r----| self.fp.write(chr(self.buff | (x >> (bits-r)))) # r < bits self.buff = 0 self.bpos = 0 bits -= r # cut the upper r bits x &= (1<<bits)-1 return def finishbits(self): if self.bpos: self.fp.write(chr(self.buff)) self.buff = 0 self.bpos = 0 return # variable length structure def writestring(self, s): assert '\x00' not in s self.write(s) self.write('\x00') return def writerect(self, (xmin,xmax,ymin,ymax)): '''NOT width and height!''' assert xmin <= xmax and ymin <= ymax n = needbits((xmin,xmax,ymin,ymax), 1) self.writebits(5, n) self.writebits(n, xmin, 1) self.writebits(n, xmax, 1) self.writebits(n, ymin, 1) self.writebits(n, ymax, 1) self.finishbits() return def writematrix(self, (scalex,scaley, rot0,rot1, transx,transy)): if scalex != None: scalex = int(scalex*65536) scaley = int(scaley*65536) self.writebits(1, 1) n = needbits((scalex,scaley), 1) assert n < 32, 'too many bits needed' self.writebits(5, n) self.writebits(n, scalex, 1) self.writebits(n, scaley, 1) else: self.writebits(1, 0) if rot0 != None: self.writebits(1, 1) rot0 = int(rot0*65536) rot1 = int(rot1*65536) n = needbits((rot0,rot1), 1) assert n < 32, 'too many bits needed' self.writebits(5, n) self.writebits(n, rot0, 1) self.writebits(n, rot1, 1) else: self.writebits(1, 0) n = needbits((transx, transy), 1) assert n < 32, 'too many bits needed' self.writebits(5, n) self.writebits(n, transx, 1) self.writebits(n, transy, 1) self.finishbits() return def write_style(self, version, fillstyles, linestyles): # fillstyle if 254 < len(fillstyles): assert 2 <= version self.writeui8(0xff) self.writeui16(len(fillstyles)) else: self.writeui8(len(fillstyles)) for (t,color,matrix,gradientmatrix,bitmapid,bitmapmatrix) in fillstyles: self.writeui8(t) if color != None: assert t == 0x00 if version == 3: self.writergba(color) else: self.writergb(color) elif gradientmatrix != None: assert t in (0x10, 0x12) self.writematrix(gradientmatrix) #self.writegradient(gradient, version) elif bitmapid != None and bitmapmatrix != None: assert t in (0x40, 0x41, 0x42, 0x43) self.writeui16(bitmapid) self.writematrix(bitmapmatrix) else: assert 0, 'illegal arg: %d' % t # linestyle if 254 < len(linestyles): assert 2 <= version self.writeui8(0xff) self.writeui16(len(linestyles)) else: self.writeui8(len(linestyles)) for (width,color) in linestyles: self.writeui16(width) if version == 3: self.writergba(color) else: self.writergb(color) return # simple shape - up to only one fill/linestyle def write_shape(self, version, points, fillstyle=None, linestyle=None): assert 2 <= len(points) flags = 0 # moveto fillbits = 0 if fillstyle != None: fillbits = needbits1(fillstyle) flags |= 2 # fillstyle1 linebits = 0 if linestyle != None: linebits = needbits1(linestyle) flags |= 4 # linestyle self.writebits(4, fillbits) self.writebits(4, linebits) # set the style and initial position (t,(x0,y0)) = points[0] assert t == 0 self.writebits(1, 0) # typeflag:0 self.writebits(4, flags) self.writebits(1, 1) # moveto:1 n = needbits((x0,y0), 1) self.writebits(5, n) self.writebits(n, x0, 1) self.writebits(n, y0, 1) if fillstyle != None: self.writebits(fillbits, fillstyle) if linestyle != None: self.writebits(linebits, linestyle) # put points for pt in points[1:]: t = pt[0] self.writebits(1, 1) # edgetype if t == 1: (t,(dx,dy)) = pt self.writebits(1, 1) # StraightEdgeRecord if dx == 0: n = lowerbound(needbits1(dy, 1), 2) self.writebits(4, n-2) self.writebits(1, 0) # write only self.writebits(1, 1) # dy self.writebits(n, dy, 1) elif dy == 0: n = lowerbound(needbits1(dx, 1), 2) self.writebits(4, n-2) self.writebits(1, 0) # write only self.writebits(1, 0) # dx self.writebits(n, dx, 1) else: n = lowerbound(needbits((dx,dy), 1), 2) self.writebits(4, n-2) self.writebits(1, 1) # write dx and dy self.writebits(n, dx, 1) self.writebits(n, dy, 1) elif t == 2: (t,(cx,cy),(ax,ay)) = pt n = lowerbound(needbits((cx,cy,ax,ay), 1), 2) self.writebits(4, n-2) self.writebits(n, cx, 1) self.writebits(n, cy, 1) self.writebits(n, ax, 1) self.writebits(n, ay, 1) (x0,y0) = (ax,ay) else: assert 0 self.writebits(1, 0) # styletype self.writebits(5, 0) # EOS self.finishbits() return def start_tag(self): self.push() return def end_tag(self, tag, forcelong=False): data = self.pop() if 63 <= len(data) or forcelong: self.writeui16(tag << 6 | 63) self.writeui32(len(data)) else: self.writeui16(tag << 6 | len(data)) self.write(data) return def start_action(self): self.start_tag() return def do_action(self, action, length=None): assert action < 128 or length != None self.writeui8(action) if 128 <= action: self.writeui16(length) return def end_action(self): self.writeui8(0) # End self.end_tag(12) # DoAction return def write_file(self, framecount): assert not self.fpstack, 'nonempty fpstack: %r' % self.fpstack self.fp.seek(0, 2) # seek to the last length = self.fp.tell() self.fp.seek(self.lenpos) self.writeui32(length) # adjust the length self.fp.seek(self.fcpos) self.writeui16(framecount) # adjust the framecount if self.compression: self.fp.seek(0) data = self.fp.read(8) self.outfp.write(data) data = self.fp.read() self.outfp.write(zlib.compress(data)) self.outfp.close() return # test if __name__ == "__main__": SWFParser(True).parse_file(sys.argv[1]) |
From: Sami M. <mc...@fp...> - 2006-07-28 15:41:33
|
=20 VljlAGRA from 3 , 35 VALIjlUM from 1 , 25 CIALIjlS from 3 , 75 AMBljIEN =20 http://www.terafoot.com =20 , , , , He took a print from his inner pocket and passed it over to me. I took it and looked at it, then turned it around since there was no indication of which was top or bottom. A twisted hunk of incongruous |
From: Eirene A. <aul...@co...> - 2006-07-23 12:50:24
|
=20 VlzAGRA 3 , 33 $ =20 http://www.meracihetacase.com =20 , , , , sick. I was uneasy at this. I dont agree all the way. I was affected very strongly by watching that story. And I am a very hard guy to con. This |
From: helen <hel...@12...> - 2006-07-22 02:47:19
|
Dear Sir / Madame , How are you ? Sorry to disturb you . We are an leading mini CCD camera manufacture in China. We produce : Square miniature camera (Pinhole) Bullet camera Waterproof camera Dome camera Micro CCTV camera Fly saucer camera IR LED camera Hidden smoke detector camera Car rear vision , LCD PTZ, Zoom camera Vandal-resistant camera Also supply: Modules We mainly use Sony and Sharp sensor. For any detail information, please browse our website: http://www.dvik.com If you require any demands or information , please contact me .Thanks. Regards Helen SHENZHEN DTC INDUSTRIAL CO.,LTD. TEL:86-755-25927770 FAX:86-755-25928078 website: http://www.dvik.com. email: hel...@12... MSN: Hel...@ho... |
From: <lfk...@ya...> - 2006-07-18 11:58:48
|
Take a look at TeleTeachingTool: http://teleteaching.uni-trier.de/news.en.html It allows to broadcast the screen + audio + video. But unfortunately the users must use its own player, not the Flash player. Regards, Luis Fernando David Fraser <da...@sj...> escreveu: Max Ott wrote: > I'm looking for a solution to broadcast presentations. Right now, I > have a VGA/video converter and run HelixProducer to a Helix server to > stream presentations in RealVideo format. As you can imagine the > quality isn't great as video isn't the right intermediary. > > Now VNC captures the screen much better. What would be great to hook > up something which allows a remote participant to watch the same in a > swf player. > > Doable? Of course, I need audio as well :) > vnc2swf doesn't currently support streaming and I suspect it would be hard to add it... You could also try looking at using vlc to do this though (http://www.videolan.org) - they support live streaming and conversion between different formats. The difficulty is probably mixing the audio in with the video There is a screencasting capability and audio input is handled as well (although I haven't managed to get them multiplexing together yet). But may be worth having a look. You use their scripting capability through something called vlm to issue statements like this (this example is meant to transcode to a file) new channel1 broadcast enabled setup channel1 input "screen://" setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=144,width=180},select=video,dst=bridge-out{id=1},select=audio} new channel2 broadcast enabled setup channel2 input "dshow://" setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=144,width=180},select=video,dst=bridge-out{id=2},select=audio} new background broadcast enabled setup background input "fake:" setup background output #transcode{vcodec=mp4v,vb=1024,scale=1,acodec=mpga,ab=192,channels=2}:bridge-in{delay=400,id-offset=100}:duplicate{dst=std{access=file,mux=ts,dst="c:\\Temp\\test3.mpeg"}} control background play control channel1 play control channel2 play Cheers David ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Vnc2swf-users mailing list Vnc...@li... https://lists.sourceforge.net/lists/listinfo/vnc2swf-users --------------------------------- Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! |
From: David F. <da...@sj...> - 2006-07-18 08:08:39
|
Max Ott wrote: > I'm looking for a solution to broadcast presentations. Right now, I > have a VGA/video converter and run HelixProducer to a Helix server to > stream presentations in RealVideo format. As you can imagine the > quality isn't great as video isn't the right intermediary. > > Now VNC captures the screen much better. What would be great to hook > up something which allows a remote participant to watch the same in a > swf player. > > Doable? Of course, I need audio as well :) > vnc2swf doesn't currently support streaming and I suspect it would be hard to add it... You could also try looking at using vlc to do this though (http://www.videolan.org) - they support live streaming and conversion between different formats. The difficulty is probably mixing the audio in with the video There is a screencasting capability and audio input is handled as well (although I haven't managed to get them multiplexing together yet). But may be worth having a look. You use their scripting capability through something called vlm to issue statements like this (this example is meant to transcode to a file) new channel1 broadcast enabled setup channel1 input "screen://" setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=144,width=180},select=video,dst=bridge-out{id=1},select=audio} new channel2 broadcast enabled setup channel2 input "dshow://" setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=144,width=180},select=video,dst=bridge-out{id=2},select=audio} new background broadcast enabled setup background input "fake:" setup background output #transcode{vcodec=mp4v,vb=1024,scale=1,acodec=mpga,ab=192,channels=2}:bridge-in{delay=400,id-offset=100}:duplicate{dst=std{access=file,mux=ts,dst="c:\\Temp\\test3.mpeg"}} control background play control channel1 play control channel2 play Cheers David |
From: Max O. <ma...@se...> - 2006-07-18 04:33:29
|
I'm looking for a solution to broadcast presentations. Right now, I have a VGA/video converter and run HelixProducer to a Helix server to stream presentations in RealVideo format. As you can imagine the quality isn't great as video isn't the right intermediary. Now VNC captures the screen much better. What would be great to hook up something which allows a remote participant to watch the same in a swf player. Doable? Of course, I need audio as well :) Thanks, -max |
From: Eitan S. <eit...@u2...> - 2006-07-17 20:19:53
|
following up on my last message, i've just integrated the code into vnc2swf (python). here's a synopsis: a. copy last message's attachment (html/ directory) under the base directory of the project. b. movie.py write_html: append: basepath = os.path.dirname(outfname) this_file = sys._getframe().f_code.co_filename vnc2swfbasedir = os.path.dirname(this_file) os.system("cp %s/html/*.png %s" % (vnc2swfbasedir, basepath)) os.system("cp %s/html/*.js %s" % (vnc2swfbasedir, basepath)) c. integrate html template into html_templates.py ( i did this against my copy of v0.8.2 which is not the most recent ): (attached) thanks, / eitan |
From: Eitan S. <eit...@u2...> - 2006-07-17 19:37:07
|
hello, i have played a little with vnc2swf. first of all, thank you for such a useful utility. i've made slight revisions to the html template, including: - defaulting to paused state - replacing play button with a stateful pause/play button that uses play/pause icons instead of text. anyhow, if you like these changes, you're welcome to fold them into pyvnc2swf. i've attached the html code. also i have included a screenshot of the play/timeline bar as an illustration. sincerely, / eitan |
From: Tony C. <cap...@gm...> - 2006-07-13 05:17:47
|
I've installed Real VNC and run the server in user mode, and set the options as specified in the flash Movie for Windows. I've renamed vnc2swf.py to vnc2swf.pyw, double cliked on it, nothing happens. I don't see the TCL gui box as shown in the movie, nor do I get any errrors. I'm running this on XP Media Center edition. Can anyone help me figure out why it's not running? thanks |
From: <lfk...@ya...> - 2006-07-12 12:39:27
|
Hi, I think the options are: - resize your desktop before recording; or - use the clipping option ( -C ) to record just what's inside the rectangle area; or - use the scaling option (-s) in edit.py to show the recorded video in a smaller window. Luis Fernando Fernando Manuel Gonçalves Santos <fgs...@gm...> escreveu: Hi there i'm trying to use this app to record my desktop and it works just fine, but i don't want to record at 1024x768. How can i record in diferent sizes, like 800x600 or 640x480 without cropping the image. Thanks, Fernando Santos ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Vnc2swf-users mailing list Vnc...@li... https://lists.sourceforge.net/lists/listinfo/vnc2swf-users --------------------------------- Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! |
From: Fernando M. <fgs...@gm...> - 2006-07-11 23:24:05
|
Hi there i'm trying to use this app to record my desktop and it works just fine, but i don't want to record at 1024x768. How can i record in diferent sizes, like 800x600 or 640x480 without cropping the image. Thanks, Fernando Santos |
From: David F. <da...@sj...> - 2006-07-06 14:45:13
|
Hi I posted a message earlier, "pyvnc2swf sound recording using pymedia", before I was subscribed to the list... this is an updated version, along with some installers I've written an extension that enables recording sound alongside the screen capture. It uses the pymedia library for the recording This is similar to using the -S option, but it does it in-process using python code. I've attached a diff to vnc2swf.py and the new file record_sound.py. The extra dependencies are on pymedia (I used 1.3.5.0) and the builtin threading module The recording is started in a separate thread and gets stopped in a similar way to the subprocess getting stopped (it uses the same interface) I added a new option -a filename.mp3 for the recording, and -m to automatically merge the sound back into the video after recording (using edit.py) The diffs are to my restructured pyvnc2swf 0.8.2 that I posted about earlier To convert the audio and combine it I run as follows python vnc2swf.py -n -o recording.swf -a recording.mp3 -m vnchost I've been reading around the web and it seems having this ability incorporated within pyvnc2swf would make it more useful for a lot of people - there doesn't seem to be an open source tool out there that handles recording audio alongside screen captures nicely, so I hope this is suitable for inclusion I have built installers tentatively called 0.8.2.1 due to interest in this from ShowMeDo.com, they are at http://davidf.sjsoft.com/files/pyvnc2swf/ pyvnc2swf-0.8.2.1.tar.gz - source tarball pyvnc2swf-0.8.2.1.zip - source zip file pyvnc2swf-0.8.2.1-py2.4.egg - Python egg (from setuptools) pyvnc2swf-0.8.2.1-1.noarch.rpm - RPM for Python 2.4 pyvnc2swf-0.8.2.1-1.src.rpm - Source RPM pyvnc2swf-0.8.2.1.win32.exe - installer for installing Python package under Windows pyvnc2swf-0.8.2.1-setup.exe - standalone installer for installing py2exe package under Windows (includes Python libraries and all dependencies, doesn't require Python) If anyone wants to try them out, please give feedback... Regards David |
From: David F. <da...@sj...> - 2006-07-06 12:13:10
|
Hi I have created a setup script for pyvnc2swf which allows packaging it in any of the standard ways (source distribution, rpm, windows installer) and also as a py2exe standalone app on Windows. This uses the standard python distutils system, enhanced by setuptools (http://peak.telecommunity.com/DevCenter/setuptools) and py2exe (http://py2exe.sourceforge.net/) It makes life much easier if pyvnc2swf files are installed in a package rather than just standalone, so to run this you need to move all the py files to a pyvnc2swf directory under the main source directory. This kind of move is of course annoying when using CVS, but I have found it makes projects much easier to package and distribute. I have made some source packages and builds using this system and placed them at http://davidf.sjsoft.com/files/pyvnc2swf/ pyvnc2swf-0.8.2.tar.gz - source tarball pyvnc2swf-0.8.2.tar.gz - source zip file pyvnc2swf-0.8.2-py2.4.egg - Python egg (from setuptools) pyvnc2swf-0.8.2-1.noarch.rpm - RPM for Python 2.4 pyvnc2swf-0.8.2-1.src.rpm - Source RPM pyvnc2swf-0.8.2.win32.exe - installer for installing Python package under Windows pyvnc2swf-0.8.2-setup.exe - standalone installer for installing py2exe package under Windows (includes Python libraries and all dependencies, doesn't require Python) The setup.py file is included below (it will only work with the rearranged source code of course, this is just for reference) Yusuke, if you don't have much time for this at the moment, would it be possible to get commit rights to the CVS repository? Or just briefly comment what you think about this? That would be appreciated Any comments from anyone else appreciated too... Regards David #!/usr/bin/env python from setuptools import setup, find_packages from distutils.cmd import Command try: import py2exe except ImportError: py2exe = None from pyvnc2swf import __version__ py2exe_options = {"dist_dir": "pyvnc2swf-%s-py2exe" % __version__.ver} setup( name = "pyvnc2swf", version = __version__.ver, packages = find_packages(), scripts = ["vnc2swf", "vnc2swf-edit", "vnc2swf-play"], package_data = {'': ["*.txt", "*.html"]}, # install_requires = ["pygame>=1.6", "pymedia>=1.3.5"], options = {"py2exe": py2exe_options, "build_installer": py2exe_options}, console = ["vnc2swf", "vnc2swf-edit", "vnc2swf-play"], entry_points = {"distutils.commands": ["build_installer = pyvnc2swf.innosetup:build_installer"]}, author = "Yusuke Shinyama", author_email = "yu...@cs...", maintainer = "David Fraser", maintainer_email = "da...@sj...", license = "GNU General Public License (GPL)", keywords = "vnc screencast movie record", url = "http://www.unixuser.org/~euske/vnc2swf/pyvnc2swf.html", download_url = "http://www.unixuser.org/~euske/vnc2swf/", description = "Pyvnc2swf is a cross-platform screen recording tool", long_description = "Pyvnc2swf is a cross-platform screen recording tool. It captures screen motion through VNC protocol and generates a Shockwave Flash (SWF) movie.", classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: Win32 (MS Windows)", "Environment :: X11 Applications", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License (GPL)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Multimedia :: Video :: Capture", ], ) |