npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@byteark/video-upload-sdk

v1.3.1

Published

Uploading video files directly from user's browser to ByteArk Stream and Qoder

Downloads

696

Readme

ByteArk Stream Video Upload SDK

Uploading video files directly from user's browser to ByteArk Stream and ByteArk Qoder service.

⚠️ For users who are using Video Upload SDK v1.2.3 and earlier, please refer the Migration Guide for migrating to v1.3.0 and newer. ⚠️

Installation

For Yarn:

yarn add @byteark/video-upload-sdk

For npm:

npm install --save @byteark/video-upload-sdk

Usage

Example Code

import { VideoUploadManager } from '@byteark/video-upload-sdk';

async function main() {
  // Initialize the SDK
  const uploadManager = new VideoUploadManager({
    // SDK Options
    serviceName: 'byteark.stream' | 'byteark.qoder',
    serviceEndpoint:
      'https://stream.byteark.com' | 'https://qoder.byteark.com/apps/<appId>/ajax',
    formId: '<formId(Stream)>' | '<appId(Qoder)>',
    formSecret: '<formSecret>',
    projectKey: '<projectKey(Stream)>' | '<projectId(Qoder)>',

    // Callback Functions
    onUploadProgress: (job: UploadJob, progress: UploadProgress) => {
      // Called when video uploading has a progress.
    },
    onUploadCompleted: (job: UploadJob) => {
      // Called when a video has uploaded.
    },
    onUploadFailed: (job: UploadJob, error: Error | DetailedError) => {
      // Called when video uploading failed (cannot retry).
    },
    onVideosCreated: (videoKeys: string[]) => {
      // Called after all videos are created on our service.
    },
  });

  // An example use case
  uploadManager.addUploadJobs(fileList);
  await uploadManager.start();
}

main();

SDK Options

For ByteArk Stream

You are required to create a form upload to use this SDK. You will obtain formId and formSecret after creating the form.

  • serviceName: Please use byteark.stream
  • serviceEndpoint: An optional field, you can customize an endpoint here. A default value is https://stream.byteark.com
  • formId: Please use your form upload's formId
  • formSecret: Please use your form upload's formSecret
  • projectKey: Please use the projectKey that you want to upload videos into. Please refer to this documentation to get your project key.

For ByteArk Qoder (Legacy)

ByteArk Qoder is our legacy service. Please contact ByteArk admin for Qoder's appId and appSecret.

  • serviceName: Please use byteark.qoder
  • serviceEndpoint: An optional field, you can customize an endpoint here. A default value is https://qoder.byteark.com/apps/<appId>/ajax
  • formId: Please use appId
  • formSecret: Please use appSecret
  • projectKey: Please use the project's ID that you want to upload videos into.

Getters

| Name | Returns | Description | | ----------------------- | ---------------------- | -------------------------------------------------------- | | getJobQueue | UploadJob[] | Returns a job queue array. | | getJobByUploadId | UploadJob | undefined | Returns a job that matches the provided uploadId. | | getIsUploadStarted | boolean | Returns true if any upload job has started. | | getIsAllUploadCancelled | boolean | Returns true if all jobs in a queue have been cancelled. |

Methods

addUploadJobs(files: FileList | File[] | VideoFileObject[]): Promise<void>

Add videos that you want to upload. The SDK will create videos from the inputted files, trigger "onVideosCreated" callback, and add them to a job queue.

Parameters

files can be FileList, File[], or VideoFileObject[] type.

  • You can simply use an array of File or FileList to upload videos. Your video titles will be a name of the uploaded file.
  • You can use VideoFileObject if you want to specify more details to your video. VideoFileObject is an object containing the following fields:
    • file: Your video file.
    • videoMetadata: An object containing any pair of string value, with no required fields. Example object fields are:
      • title A title of your video.
      • tags Tags of your video.

setOptions(newOptions: UploadManagerOptions): void

Set a new options to VideoUploadManager. This operation cannot be done when any upload job has already started.

start(): Promise<void>

Start uploading from a job queue.

pauseUploadById(uploadId: UploadId): Promise<UploadJob>

Pause a job by the provided uploadId.

This method throws an error when a job with the provided uploadId cannot be found.

resumeUploadById(uploadId: UploadId): Promise<UploadJob>

Resume a job by the provided uploadId.

This method throws an error when a job with the provided uploadId cannot be found.

cancelUploadById(uploadId: UploadId): Promise<UploadJob>

Cancel a job by the provided uploadId.

This method throws an error when a job with the provided uploadId cannot be found.

cancelAll(): Promise<void>

Cancel all jobs in a job queue.

Callbacks

onVideosCreated(videoKeys: string[])

Triggers after all videos are created on our service, which will happen after calling addUploadJobs(files) method.

onUploadStarted(job: UploadJob)

Triggers after the first upload job started uploading.

onUploadProgress(job: UploadJob, progress: UploadProgress)

Triggers periodically when upload job(s) are being uploaded.

onUploadCompleted(job: UploadJob)

Triggers after all upload jobs finished uploading.

onUploadFailed(job: UploadJob, error: Error | DetailedError)

Triggers when something happened while uploading and halted the uploader.

Example Application

We have an example application in

v1.3 Migration Guide

This guide details the changes and how to change your code to migrate to Video Upload SDK version 1.3.

ByteArk Stream Service

To upload videos to ByteArk Stream, you are now required to create a form upload. You will obtain formId and formSecret after creating the form. And you are now required to initialize the SDK using these form ID and form secret. Click here for an example code.

Removal of authorizationToken

authorizationToken was removed from the SDK options. Please remove it from either ByteArk Qoder or ByteArk Stream service.

Method Changes

addUploadJob method was removed. Please use addUploadJobs instead. You can now add multiple videos using this new method.

Built-in Video Object Creator

The SDK will now create videos when adding upload jobs. After videos are created, the SDK will also trigger onVideosCreated callback.