This shows you the differences between two versions of the page.
using:scripting [2010/04/15 15:46] j.m |
using:scripting [2012/11/11 08:51] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Scripting ====== | ||
- | |||
- | From the 2.1 branch on, Avidemux uses the SpiderMonkey ECMAScript language to handle scripting. Project files are based on ECMAScript. | ||
- | |||
- | You can use ECMAScript to do your custom scripts. This documentation will present Avidemux commands. | ||
- | |||
- | ===== Creating a script file ===== | ||
- | |||
- | The first thing to take care of is that an Avidemux ECMAScript project must start with "<nowiki>//</nowiki>AD". For example, like this: | ||
- | |||
- | <code javascript> | ||
- | //AD | ||
- | //--automatically built-- | ||
- | //--Project: /tmp/l.js | ||
- | var app = new Avidemux(); | ||
- | </code> | ||
- | |||
- | You will probably want to create an instance of the Avidemux class, that will give you access to Avidemux internal functions. | ||
- | |||
- | This is done by the new Avidemux() command, you will note that in all examples, the instance is refered to as "app". | ||
- | |||
- | **Warning:** most non integer parameters must be sent double quoted. | ||
- | |||
- | It is generally a good idea to save a project file and use it as a starting point for your custom scripts. | ||
- | |||
- | ===== Using functions ===== | ||
- | |||
- | After you have the standard head of your script, as explained in the previous section, you then call all of the functions with a '.' after the variable name you declared. For example, with the line **var(nbsp)app(nbsp)=(nbsp)new(nbsp)Avidemux();**, you would use **app.function** where //function// is the name of the function you want. For list of available functions, see other sections of this article. | ||
- | |||
- | Some example function calls: | ||
- | |||
- | * app.load("/home/user/Movie.mpg.idx"); | ||
- | * app.clearSegments(); | ||
- | * app.addSegment(0,0,20084); | ||
- | * app.markerA=4898; | ||
- | * app.markerB=4902; | ||
- | * app.video.addFilter("crop","left=10","right=0","top=4","bottom=4"); | ||
- | * app.video.addFilter("resize","w=704","h=468","algo=0"); | ||
- | * app.video.addFilter("fluxsmooth","temporal_threshold=7","spatial_threshold=7"); | ||
- | |||
- | ===== Additional functions ===== | ||
- | |||
- | Here is the set of commands which are not part of the Avidemux class. They can be accessed directly. | ||
- | |||
- | ^Command ^Parameter ^Parameter ^Return ^Description ^ | ||
- | |displayError |string | | |Display an error popup with the message | | ||
- | |displayInfo |string | | |Display an info popup with the message | | ||
- | |fileReadSelect | | |filename |Open the file selector (read) | | ||
- | |fileWriteSelect | | |filename |Open the file selector (write) | | ||
- | |allFilesFrom |directory | |Number of files from that directory |Initiate the directory parsing | | ||
- | |nextFile | | |filename |Returns the next filename | | ||
- | |||
- | ===== Avidemux functions ===== | ||
- | |||
- | ^Command ^Parameter ^Parameter ^Return ^Description ^ | ||
- | |load |"filename" | | |Load the video (erasing all) | | ||
- | |append |"filename" | | |Append the video to the existing video(s) | | ||
- | |save |"filename" | | |Save output to the given filename | | ||
- | |saveDVD |"filename" | | |Set output format to MPEG PS and save | | ||
- | |saveOGM |"filename" | | |Set output format to OGM and save | | ||
- | |clearSegments | | | |Remove all segments, after that command you have 0 frames available! | | ||
- | |addSegment |reference |start,len | |Add a new segment from the source reference, starting at frame start with len frames | | ||
- | |goToTime |hh |mm,ss | |Go to frame at hh hour, mm minutes and ss seconds | | ||
- | |forceUnpack | | | |Set autounpack, you must call it before loading a file, and it will be unpacked | | ||
- | |setContainer |"container" | | |Set the output container (must be between "") - available choices are PS, ES, TS, OGM, AVI, AVI_DUAL, AVI_UNP | | ||
- | |||
- | There are also a couple of variables you may want to change: | ||
- | * markA: set the A marker (e.g.: app.markA=100; set markerA to the 100th frame) | ||
- | * markB: set the B marker | ||
- | |||
- | ===== Avidemux video functions ===== | ||
- | |||
- | ^Command ^Parameter ^Parameter ^Return ^Description ^ | ||
- | |addFilter |"filter name" |"filter param" | |Add the filter | | ||
- | |Codec |"codec name" |<nowiki>"codec conf"[,"codec extra"]</nowiki> | |Select the encoder, using the conf, which can be "CBR=bitrate", "CQ=qz", "2PASS=size" or "SAME=0" | | ||
- | |saveJpeg |"filename" | | |Save the current frame as a JPEG file | | ||
- | |getWidth | | |integer |Returns video width | | ||
- | |getHeight | | |integer |Returns video height | | ||
- | |getFps1000 | | |integer |Returns the video framerate * 1000 | | ||
- | |setFps1000 |integer | | |set the video framerate * 1000 | | ||
- | |getFCC | | |string |returns video FourCC as a string | | ||
- | |isVopPacked | | |integer |Returns if video has packed bitstream or not | | ||
- | |hasQpel | | |integer |Returns if video has Qpel or not | | ||
- | |hasGmc | | |integer |Returns if video has GMC or not | | ||
- | |setPostProc |type |threshold,strength | |Set postprocessing | | ||
- | |||
- | ===== Avidemux audio functions ===== | ||
- | |||
- | ^Command ^Parameter ^Parameter ^Return ^Description ^ | ||
- | |scanVBR | | | |Build the time map needed for MP3 VBR | | ||
- | |save |"filename" | | |Save the audio track as filename | | ||
- | |load |"type" |"filename" | |Load audio as an external track, type is the file type - AC3, MP3, WAV, filename is the name of the file to load | | ||
- | |getNbTracks | | |integer |Returns the number of audio tracks at frame frame | | ||
- | |setTrack |track | | |Select track "track" | | ||
- | |||
- | There are also a couple of variables you may want to change as above, if your instance has been created by app=new(nbsp)Avidemux(). You will access them using app.audio.xxx=yyy: | ||
- | |||
- | * normalize: 1 (normalize activated), 0 (not activated) | ||
- | * downsample: same for downsample (48 kHz to 44.1 kHz) | ||
- | * resample: set the new frequency | ||
- | * delay: set the delay in ms | ||
- | * film2pal: 1 (film2pal activated), 0 (not activated) | ||
- | * mono2stereo: ditto | ||
- | stereo2mono: ditto | ||
- | |||
- | ===== See also ===== | ||
- | |||
- | [[tutorial:Scripting tutorial]] | ||