summaryrefslogtreecommitdiff
path: root/node_modules/prism-media/src/transcoders/MediaTranscoder.js
diff options
context:
space:
mode:
author8cy <[email protected]>2020-04-03 02:37:42 -0700
committer8cy <[email protected]>2020-04-03 02:37:42 -0700
commit60867fb030bae582082340ead7dbc7efdc2f5398 (patch)
tree4c6a7356351be2e4914e15c4703172597c45656e /node_modules/prism-media/src/transcoders/MediaTranscoder.js
parentcommenting (diff)
downloads5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz
s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/prism-media/src/transcoders/MediaTranscoder.js')
-rw-r--r--node_modules/prism-media/src/transcoders/MediaTranscoder.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/prism-media/src/transcoders/MediaTranscoder.js b/node_modules/prism-media/src/transcoders/MediaTranscoder.js
new file mode 100644
index 0000000..217e34c
--- /dev/null
+++ b/node_modules/prism-media/src/transcoders/MediaTranscoder.js
@@ -0,0 +1,31 @@
+const Ffmpeg = require('./ffmpeg/Ffmpeg');
+
+const transcoders = [
+ 'ffmpeg',
+];
+
+class MediaTranscoder {
+ constructor(prism) {
+ this.prism = prism;
+ this.ffmpeg = new Ffmpeg(this);
+ }
+
+ static verifyOptions(options) {
+ if (!options) throw new Error('Options must be passed to MediaTranscoder.transcode()');
+ if (!options.type) throw new Error('Options.type must be passed to MediaTranscoder.transcode()');
+ if (!transcoders.includes(options.type)) throw new Error(`Options.type must be: ${transcoders.join(' ')}`);
+ return options;
+ }
+
+ /**
+ * Transcodes a media stream based on specified options
+ * @param {Object} options the options to use when transcoding
+ * @returns {ReadableStream} the transcodeed stream
+ */
+ transcode(options) {
+ options = MediaTranscoder.verifyOptions(options);
+ return this[options.type].transcode(options);
+ }
+}
+
+module.exports = MediaTranscoder;