Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- //maximum filesize in bytes
- var MAX_SIZE=3000000;
- //Percentage of bitrate to subtract (use at least 2)
- var SPACE=2;
- //Factor of bitrate (125 converts bytes to kbits (x*8/1000)
- var FACTOR=125;
- //Unit of bitrate (for display purposes only)
- var UNIT="k";
- //Upper [0] and lower [1] bitrate cap.
- var CAP=[1000,100];
- //You can set this to true or false. The default is to check for "-v" argument
- var VERBOSE=process.argv.slice(2).map(function(v){return v.toLowerCase();}).indexOf("-v")>=0;
- //////////////////////
- // //
- // no changes below //
- // //
- //////////////////////
- var FILENAME=process.argv.slice(2).filter(function(v){return v.toLowerCase()!="-v";})[0];
- if(!FILENAME)
- {
- console.log("node",nameOnly(__filename),"<filename> [-v]");
- process.exit(2);
- }
- function nameOnly(x)
- {
- return x=x.split('/').slice(-1)[0].split('\\').slice(-1)[0];
- }
- function r(x,d)
- {
- var factor=Math.pow(10, d);
- var tempNumber=x*factor;
- var roundedTempNumber=Math.round(tempNumber);
- return roundedTempNumber/factor;
- }
- function niceSize(o,f)
- {
- var units=["Bytes","KB","MB","GB","TB"];
- if(!f)
- {
- f=1000;
- }
- var current=o;
- var index=0;
- while(current>=f && index++<units.length-1)
- {
- current/=f;
- }
- return r(current,1)+" "+units[index];
- }
- var path=require("path");
- var spawn=require("child_process").spawn;
- var proc=spawn(path.join(__dirname,"../ffprobe"),[
- "-show_entries",
- "format=duration",
- "-of",
- "default=noprint_wrappers=1:nokey=1",
- "-v",
- "quiet",
- process.argv[2]
- ]);
- SPACE=(100-SPACE)/100;
- if(SPACE>1.0 || SPACE<=0.0)
- {
- console.log("Invalid percentage (must be in the range 0-99)");
- process.exit(1);
- }
- proc.stdout.on("data",function(data)
- {
- var Duration=+data.toString();
- if(Duration)
- {
- var Bitrate=MAX_SIZE/Duration/FACTOR*SPACE|0;
- if(VERBOSE)
- {
- console.log("Duration :",Duration,"seconds");
- console.log("Raw bitrate :",Bitrate+"k");
- }
- if(Bitrate>CAP[0])
- {
- Bitrate=CAP[0];
- if(VERBOSE)
- {
- console.log("Bitrate too big. Capped to",CAP[0]);
- console.log(
- "File size will be",niceSize(Bitrate*Duration*FACTOR),
- "instead of",niceSize(MAX_SIZE),
- "("+r(Bitrate*Duration*FACTOR/MAX_SIZE*100,1)+"% of original)");
- }
- }
- else if(Bitrate<CAP[1])
- {
- Bitrate=CAP[1];
- if(VERBOSE)
- {
- console.log("Bitrate too small. Capped to",CAP[1]);
- console.log(
- "File size will be",niceSize(Bitrate*Duration*FACTOR),
- "instead of",niceSize(MAX_SIZE),
- "("+r(Bitrate*Duration*FACTOR/MAX_SIZE*100,1)+"% of original)");
- }
- }
- console.log("Recommended :",Bitrate+UNIT);
- }
- else
- {
- console.log("Error estimating bitrate. Invalid input file (maybe image)?");
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement