Skip to content

Commit 0339808

Browse files
committed
Fix Streampunk#50 - Update Windows install
1 parent d86218c commit 0339808

6 files changed

+644
-530
lines changed

.vscode/c_cpp_properties.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"C:/Program Files (x86)/Windows Kits/8.1/Include/shared",
1010
"C:/Program Files (x86)/Windows Kits/8.1/Include/winrt",
1111
"${workspaceFolder}/**",
12-
"${workspaceFolder}/ffmpeg/ffmpeg-4.2.1-win64-dev/include/**",
13-
"${env:USERPROFILE}/AppData/Local/node-gyp/Cache/12.16.1/include/node"
12+
"${workspaceFolder}/ffmpeg/ffmpeg-4.3.1-win64-shared/include/**",
13+
"${env:USERPROFILE}/AppData/Local/node-gyp/Cache/12.18.2/include/node"
1414
],
1515
"defines": [
1616
"_DEBUG",

binding.gyp

+17-17
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,30 @@
4545
}
4646
},
4747
"include_dirs" : [
48-
"ffmpeg/ffmpeg-4.2.1-win64-dev/include"
48+
"ffmpeg/ffmpeg-4.3.1-win64-shared/include"
4949
],
5050
"libraries": [
51-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/avcodec",
52-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/avdevice",
53-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/avfilter",
54-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/avformat",
55-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/avutil",
56-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/postproc",
57-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/swresample",
58-
"-l../ffmpeg/ffmpeg-4.2.1-win64-dev/lib/swscale"
51+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/avcodec",
52+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/avdevice",
53+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/avfilter",
54+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/avformat",
55+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/avutil",
56+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/postproc",
57+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/swresample",
58+
"-l../ffmpeg/ffmpeg-4.3.1-win64-shared/lib/swscale"
5959
],
6060
"copies": [
6161
{
6262
"destination": "build/Release/",
6363
"files": [
64-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/avcodec-58.dll",
65-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/avdevice-58.dll",
66-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/avfilter-7.dll",
67-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/avformat-58.dll",
68-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/avutil-56.dll",
69-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/postproc-55.dll",
70-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/swresample-3.dll",
71-
"ffmpeg/ffmpeg-4.2.1-win64-shared/bin/swscale-5.dll"
64+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/avcodec-58.dll",
65+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/avdevice-58.dll",
66+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/avfilter-7.dll",
67+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/avformat-58.dll",
68+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/avutil-56.dll",
69+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/postproc-55.dll",
70+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/swresample-3.dll",
71+
"ffmpeg/ffmpeg-4.3.1-win64-shared/bin/swscale-5.dll"
7272
]
7373
}
7474
]

index.js

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ under certain conditions. Conditions and warranty at:
3333
https://github.com/Streampunk/beamcoder/blob/master/LICENSE`;
3434

3535
console.log(splash);
36+
console.log('Using FFmpeg version', beamcoder.avVersionInfo());
3637

3738
beamcoder.demuxerStream = beamstreams.demuxerStream;
3839
beamcoder.muxerStream = beamstreams.muxerStream;

install_ffmpeg.js

+39-34
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,39 @@ async function get(ws, url, name) {
3232
let totalLength = 0;
3333
return new Promise((comp, err) => {
3434
https.get(url, res => {
35-
res.pipe(ws);
36-
if (totalLength == 0) {
37-
totalLength = +res.headers['content-length'];
35+
if (res.statusCode === 301 || res.statusCode === 302) {
36+
err({ name: 'RedirectError', message: res.headers.location });
37+
} else {
38+
res.pipe(ws);
39+
if (totalLength == 0) {
40+
totalLength = +res.headers['content-length'];
41+
}
42+
res.on('end', () => {
43+
process.stdout.write(`Downloaded 100% of '${name}'. Total length ${received} bytes.\n`);
44+
comp();
45+
});
46+
res.on('error', err);
47+
res.on('data', x => {
48+
received += x.length;
49+
process.stdout.write(`Downloaded ${received * 100/ totalLength | 0 }% of '${name}'.\r`);
50+
});
3851
}
39-
res.on('end', () => {
40-
process.stdout.write(`Downloaded 100% of '${name}'. Total length ${received} bytes.\n`);
41-
comp();
42-
});
43-
res.on('error', err);
44-
res.on('data', x => {
45-
received += x.length;
46-
process.stdout.write(`Downloaded ${received * 100/ totalLength | 0 }% of '${name}'.\r`);
47-
});
4852
}).on('error', err);
4953
});
5054
}
5155

5256
async function inflate(rs, folder, name) {
5357
const unzip = require('unzipper');
54-
58+
const directory = await unzip.Open.file(`${folder}/${name}.zip`);
59+
const directoryName = directory.files[0].path;
5560
return new Promise((comp, err) => {
56-
console.log(`Unzipping '${folder}/${name}'.`);
57-
rs.pipe(unzip.Extract({ path: folder }));
58-
rs.on('close', () => {
59-
console.log(`Unzipping of '${folder}/${name}' completed.`);
60-
comp();
61-
});
61+
console.log(`Unzipping '${folder}/${name}.zip'.`);
62+
rs.pipe(unzip.Extract({ path: folder }).on('close', () => {
63+
fs.rename(`./${folder}/${directoryName}`, `./${folder}/${name}`, () => {
64+
console.log(`Unzipping of '${folder}/${name}.zip' completed.`);
65+
comp();
66+
});
67+
}));
6268
rs.on('error', err);
6369
});
6470
}
@@ -71,21 +77,20 @@ async function win32() {
7177
if (e.code === 'EEXIST') return;
7278
else throw e;
7379
});
74-
await access('ffmpeg/ffmpeg-4.2.1-win64-shared', fs.constants.R_OK).catch(async () => {
75-
let ws_shared = fs.createWriteStream('ffmpeg/ffmpeg-4.2.1-win64-shared.zip');
76-
await get(ws_shared,
77-
'https://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-4.2.1-win64-shared.zip',
78-
'ffmpeg-4.2.1-win64-shared.zip');
79-
let rs_shared = fs.createReadStream('ffmpeg/ffmpeg-4.2.1-win64-shared.zip');
80-
await inflate(rs_shared, 'ffmpeg', 'ffmpeg-4.2.1-win64-shared.zip');
81-
});
82-
await access('ffmpeg/ffmpeg-4.2.1-win64-dev', fs.constants.R_OK).catch(async () => {
83-
let ws_dev = fs.createWriteStream('ffmpeg/ffmpeg-4.2.1-win64-dev.zip');
84-
await get(ws_dev,
85-
'https://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-4.2.1-win64-dev.zip',
86-
'ffmpeg-4.2.1-win64-dev.zip');
87-
let rs_dev = fs.createReadStream('ffmpeg/ffmpeg-4.2.1-win64-dev.zip');
88-
console.log(await inflate(rs_dev, 'ffmpeg', 'ffmpeg-4.2.1-win64-dev.zip'));
80+
81+
const ffmpegFilename = 'ffmpeg-4.3.1-win64-shared';
82+
const downloadSource = 'https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2020-09-29-12-56/ffmpeg-n4.3.1-18-g6d886b6586-win64-gpl-shared.zip';
83+
await access(`ffmpeg/${ffmpegFilename}`, fs.constants.R_OK).catch(async () => {
84+
let ws_shared = fs.createWriteStream(`ffmpeg/${ffmpegFilename}.zip`);
85+
await get(ws_shared, downloadSource, `${ffmpegFilename}.zip`)
86+
.catch(async (err) => {
87+
if (err.name === 'RedirectError') {
88+
const redirectURL = err.message;
89+
await get(ws_shared, redirectURL, `${ffmpegFilename}.zip`);
90+
} else console.error(err);
91+
});
92+
let rs_shared = fs.createReadStream(`ffmpeg/${ffmpegFilename}.zip`);
93+
await inflate(rs_shared, 'ffmpeg', `${ffmpegFilename}`);
8994
});
9095
}
9196

0 commit comments

Comments
 (0)