1- const QencodeApiClient = require ( 'qencode-api' ) ;
2-
3- const apiKey = "your_api_key_here" ;
4- const s3_path = "s3://s3-yourRegion.amazonaws.com/bucketname" ;
5- const s3_key = "youS3Key" ;
6- const s3_secret = "yourS3secret" ;
7-
8- // using one video as a source
9- // const videoUrl = "https://servername/folder/video.mp4";
10-
11- // using several videos as a source for stitching
12- const videoUrl = [
13- "https://servername/folder/video1.mp4" ,
14- "https://servername/folder/video2.mp4" ,
15- {
16- "url" :"https://servername/folder/video3.mp4" ,
17- "start_time" :"0.01567" ,
18- "duration" :"0.575"
19- }
20- ] ;
21-
22- const payload = null ;
23-
24- let transcodingParams = { } ;
25- transcodingParams . source = videoUrl ;
26-
27- let format = { } ;
28-
29- format . destination = { } ;
30- format . destination . url = s3_path ;
31- format . destination . key = s3_key ;
32- format . destination . secret = s3_secret ;
33-
34- format . output = "advanced_hls" ;
35-
36-
37- let stream = { } ;
38- stream . size = "1920x1080" ;
39- stream . audio_bitrate = 128 ;
40-
41- let vcodec_params = { } ;
42- vcodec_params . vprofile = "baseline" ;
43- vcodec_params . level = 31 ;
44- vcodec_params . coder = 0 ;
45- vcodec_params . flags2 = "-bpyramid+fastpskip-dct8x8" ;
46- vcodec_params . partitions = "+parti8x8+parti4x4+partp8x8+partb8x8" ;
47- vcodec_params . directpred = 2 ;
48-
49- stream . video_codec_parameters = vcodec_params ;
50-
51- format . stream = [ ] ;
52- format . stream . push ( stream ) ;
53-
54-
55- transcodingParams . format = [ ] ;
56- transcodingParams . format . push ( format ) ;
57-
58- const qencodeApiClient = new QencodeApiClient ( apiKey ) ;
59- console . log ( "AccessToken: " , qencodeApiClient . AccessToken ) ;
60-
61- let task = qencodeApiClient . CreateTask ( ) ;
62- console . log ( "Created new task: " , task . taskToken ) ;
63-
64- task . StartCustom ( transcodingParams , payload ) ;
65- console . log ( "Status URL: " , task . statusUrl ) ;
66-
67-
68- CheckTaskStatus ( ) ;
69-
70- async function CheckTaskStatus ( ) {
71- while ( task . GetStatus ( ) . status != "completed" ) {
72- console . log ( task . GetStatus ( ) . status ) ;
73- await sleep ( 10000 ) ;
1+ ( async function ( ) {
2+
3+ const QencodeApiClient = require ( 'qencode-api' ) ;
4+
5+ const apiKey = "your_api_key_here" ;
6+ const s3_path = "s3://s3-yourRegion.amazonaws.com/bucketname" ;
7+ const s3_key = "youS3Key" ;
8+ const s3_secret = "yourS3secret" ;
9+
10+ // using one video as a source
11+ // const videoUrl = "https://servername/folder/video.mp4";
12+
13+ // using several videos as a source for stitching
14+ const videoUrl = [
15+ "https://servername/folder/video1.mp4" ,
16+ "https://servername/folder/video2.mp4" ,
17+ {
18+ "url" :"https://servername/folder/video3.mp4" ,
19+ "start_time" :"0.01567" ,
20+ "duration" :"0.575"
21+ }
22+ ] ;
23+
24+ const payload = null ;
25+
26+ let transcodingParams = { } ;
27+ transcodingParams . source = videoUrl ;
28+
29+ let format = { } ;
30+
31+ format . destination = { } ;
32+ format . destination . url = s3_path ;
33+ format . destination . key = s3_key ;
34+ format . destination . secret = s3_secret ;
35+
36+ format . output = "advanced_hls" ;
37+
38+
39+ let stream = { } ;
40+ stream . size = "1920x1080" ;
41+ stream . audio_bitrate = 128 ;
42+
43+ let vcodec_params = { } ;
44+ vcodec_params . vprofile = "baseline" ;
45+ vcodec_params . level = 31 ;
46+ vcodec_params . coder = 0 ;
47+ vcodec_params . flags2 = "-bpyramid+fastpskip-dct8x8" ;
48+ vcodec_params . partitions = "+parti8x8+parti4x4+partp8x8+partb8x8" ;
49+ vcodec_params . directpred = 2 ;
50+
51+ stream . video_codec_parameters = vcodec_params ;
52+
53+ format . stream = [ ] ;
54+ format . stream . push ( stream ) ;
55+
56+
57+ transcodingParams . format = [ ] ;
58+ transcodingParams . format . push ( format ) ;
59+
60+ const qencodeApiClient = await new QencodeApiClient ( apiKey ) ;
61+ console . log ( "AccessToken: " , qencodeApiClient . AccessToken ) ;
62+
63+ let task = await qencodeApiClient . CreateTask ( ) ;
64+ console . log ( "Created new task: " , task . taskToken ) ;
65+
66+ await task . StartCustom ( transcodingParams , payload ) ;
67+ console . log ( "Status URL: " , task . statusUrl ) ;
68+
69+
70+ // example on how to get status
71+ CheckTaskStatus ( ) ;
72+
73+ async function CheckTaskStatus ( ) {
74+ let statusObject = await task . GetStatus ( )
75+ let status = statusObject . status
76+ while ( status != "completed" ) {
77+ statusObject = await task . GetStatus ( )
78+ status = statusObject . status ;
79+ progress = statusObject . percent ;
80+ console . log ( `task: ${ task . taskToken } | status: ${ status } | progress: ${ progress } ` ) ;
81+ await sleep ( 10000 ) ;
82+ }
7483 }
75- console . log ( task . GetStatus ( ) . status ) ;
76- }
77-
78- function sleep ( ms ) {
79- return new Promise ( resolve => {
84+
85+ function sleep ( ms ) {
86+ return new Promise ( resolve => {
8087 setTimeout ( resolve , ms )
8188 } )
82- }
89+ }
90+
91+ } ) ( ) ;
0 commit comments