Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
jajbshjahavahh
GitHub Repository: jajbshjahavahh/Gojo-Satoru
Path: blob/master/lib/converter.js
2591 views
1
//═══════════════════════════════════════════════════════//
2
//If you want to recode, reupload
3
//or copy the codes/script,
4
//pls give credit
5
//no credit? i will take action immediately
6
//© 2022 Xeon Bot Inc. Cheems Bot MD
7
//Thank you to Lord Buddha, Family and Myself
8
//════════════════════════════//
9
const fs = require('fs')
10
const path = require('path')
11
const { spawn } = require('child_process')
12
13
function ffmpeg(buffer, args = [], ext = '', ext2 = '') {
14
return new Promise(async (resolve, reject) => {
15
try {
16
let tmp = path.join(__dirname, '../src', + new Date + '.' + ext)
17
let out = tmp + '.' + ext2
18
await fs.promises.writeFile(tmp, buffer)
19
spawn('ffmpeg', [
20
'-y',
21
'-i', tmp,
22
...args,
23
out
24
])
25
.on('error', reject)
26
.on('close', async (code) => {
27
try {
28
await fs.promises.unlink(tmp)
29
if (code !== 0) return reject(code)
30
resolve(await fs.promises.readFile(out))
31
await fs.promises.unlink(out)
32
} catch (e) {
33
reject(e)
34
}
35
})
36
} catch (e) {
37
reject(e)
38
}
39
})
40
}
41
42
/**
43
* Convert Audio to Playable WhatsApp Audio
44
* @param {Buffer} buffer Audio Buffer
45
* @param {String} ext File Extension
46
*/
47
function toAudio(buffer, ext) {
48
return ffmpeg(buffer, [
49
'-vn',
50
'-ac', '2',
51
'-b:a', '128k',
52
'-ar', '44100',
53
'-f', 'mp3'
54
], ext, 'mp3')
55
}
56
57
/**
58
* Convert Audio to Playable WhatsApp PTT
59
* @param {Buffer} buffer Audio Buffer
60
* @param {String} ext File Extension
61
*/
62
function toPTT(buffer, ext) {
63
return ffmpeg(buffer, [
64
'-vn',
65
'-c:a', 'libopus',
66
'-b:a', '128k',
67
'-vbr', 'on',
68
'-compression_level', '10'
69
], ext, 'opus')
70
}
71
72
/**
73
* Convert Audio to Playable WhatsApp Video
74
* @param {Buffer} buffer Video Buffer
75
* @param {String} ext File Extension
76
*/
77
function toVideo(buffer, ext) {
78
return ffmpeg(buffer, [
79
'-c:v', 'libx264',
80
'-c:a', 'aac',
81
'-ab', '128k',
82
'-ar', '44100',
83
'-crf', '32',
84
'-preset', 'slow'
85
], ext, 'mp4')
86
}
87
88
module.exports = {
89
toAudio,
90
toPTT,
91
toVideo,
92
ffmpeg,
93
}
94
95