Adopt lerna and typescript
15
.eslintrc
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "airbnb-base",
|
|
||||||
"parser": "babel-eslint",
|
|
||||||
"rules": {
|
|
||||||
"no-underscore-dangle": 0,
|
|
||||||
"linebreak-style": 0,
|
|
||||||
"global-require": 0,
|
|
||||||
"no-await-in-loop": 0,
|
|
||||||
"no-console": 0,
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"node": true
|
|
||||||
}
|
|
||||||
}
|
|
18
.eslintrc.cjs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended-requiring-type-checking",
|
||||||
|
],
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
|
project: [
|
||||||
|
"./tsconfig.eslint.json",
|
||||||
|
"./packages/*/tsconfig.json",
|
||||||
|
"./apps/*/tsconfig.json",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: ["@typescript-eslint"],
|
||||||
|
root: true,
|
||||||
|
};
|
53
Dockerfile
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# Base emsdk image with environment variables.
|
||||||
|
FROM emscripten/emsdk:3.1.18 AS emsdk-base
|
||||||
|
ARG EXTRA_CFLAGS
|
||||||
|
ARG EXTRA_LDFLAGS
|
||||||
|
ARG FFMPEG_MT
|
||||||
|
ENV INSTALL_DIR=/src/build
|
||||||
|
ENV FFMPEG_VERSION=n5.1
|
||||||
|
ENV CFLAGS="$CFLAGS $EXTRA_CFLAGS"
|
||||||
|
ENV LDFLAGS="$LDFLAGS $CFLAGS $EXTRA_LDFLAGS"
|
||||||
|
ENV EM_PKG_CONFIG_PATH=$EM_PKG_CONFIG_PATH:$INSTALL_DIR/lib/pkgconfig:/emsdk/upstream/emscripten/system/lib/pkgconfig
|
||||||
|
ENV PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$EM_PKG_CONFIG_PATH
|
||||||
|
ENV FFMPEG_MT=$FFMPEG_MT
|
||||||
|
|
||||||
|
# Build x264
|
||||||
|
FROM emsdk-base AS x264-builder
|
||||||
|
RUN git clone \
|
||||||
|
--branch stable \
|
||||||
|
--depth 1 \
|
||||||
|
https://github.com/ffmpegwasm/x264 \
|
||||||
|
/src
|
||||||
|
COPY build/x264.sh /src/build.sh
|
||||||
|
RUN bash /src/build.sh
|
||||||
|
|
||||||
|
# Base ffmpeg image with dependencies and source code populated.
|
||||||
|
FROM emsdk-base AS ffmpeg-base
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y pkg-config
|
||||||
|
RUN embuilder build sdl2
|
||||||
|
RUN git clone \
|
||||||
|
--branch $FFMPEG_VERSION \
|
||||||
|
--depth 1 \
|
||||||
|
https://github.com/FFmpeg/FFmpeg \
|
||||||
|
/src
|
||||||
|
COPY --from=x264-builder $INSTALL_DIR $INSTALL_DIR
|
||||||
|
|
||||||
|
# Build ffmpeg
|
||||||
|
FROM ffmpeg-base AS ffmpeg-builder
|
||||||
|
COPY build/ffmpeg.sh /src/build.sh
|
||||||
|
RUN bash /src/build.sh
|
||||||
|
|
||||||
|
# Build ffmpeg-core.wasm
|
||||||
|
FROM ffmpeg-builder AS ffmpeg-wasm-builder
|
||||||
|
COPY src/bind /src/wasm/bind
|
||||||
|
COPY src/fftools /src/wasm/fftools
|
||||||
|
RUN mkdir -p /src/dist
|
||||||
|
COPY build/ffmpeg-wasm.sh build.sh
|
||||||
|
# FIXME: find a way to export both entry points in one command.
|
||||||
|
RUN bash /src/build.sh -o dist/ffmpeg-core.cjs
|
||||||
|
RUN bash /src/build.sh -sEXPORT_ES6 -o dist/ffmpeg-core.js
|
||||||
|
|
||||||
|
# Export ffmpeg-core.wasm to dist/, use `docker buildx build -o . .` to get assets
|
||||||
|
FROM scratch AS exportor
|
||||||
|
COPY --from=ffmpeg-wasm-builder /src/dist /dist
|
41
Makefile
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
all: dev dev-mt
|
||||||
|
|
||||||
|
PROD_CFLAGS := -O3 -msimd128
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ./packages/core$(PKG_SUFFIX)/dist
|
||||||
|
rm -rf ./packages/core$(PKG_SUFFIX)/types
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build:
|
||||||
|
make clean PKG_SUFFIX="$(PKG_SUFFIX)"
|
||||||
|
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
|
||||||
|
EXTRA_LDLAGS="$(EXTRA_LDLAGS)" \
|
||||||
|
FFMPEG_MT="$(FFMPEG_MT)" \
|
||||||
|
docker buildx build \
|
||||||
|
--build-arg EXTRA_CFLAGS \
|
||||||
|
--build-arg EXTRA_LDLAGS \
|
||||||
|
--build-arg FFMPEG_MT \
|
||||||
|
-o ./packages/core$(PKG_SUFFIX) \
|
||||||
|
$(EXTRA_ARGS) \
|
||||||
|
.
|
||||||
|
cp -r src/types/core packages/core$(PKG_SUFFIX)/types
|
||||||
|
|
||||||
|
build-mt:
|
||||||
|
make build \
|
||||||
|
PKG_SUFFIX=-mt \
|
||||||
|
FFMPEG_MT=yes \
|
||||||
|
EXTRA_CFLAGS="-sUSE_PTHREADS -pthread" \
|
||||||
|
EXTRA_LDLAGS="-sPTHREAD_POOL_SIZE=8"
|
||||||
|
|
||||||
|
dev:
|
||||||
|
make build
|
||||||
|
|
||||||
|
dev-mt:
|
||||||
|
make build-mt
|
||||||
|
|
||||||
|
prd:
|
||||||
|
make build EXTRA_CFLAGS="$(PROD_CFLAGS)"
|
||||||
|
|
||||||
|
prd-mt:
|
||||||
|
make build-mt EXTRA_CFLAGS="$(PROD_CFLAGS)"
|
0
apps/node-ts/index.ts
Normal file
6
apps/node-ts/load-core-mt.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import createFFmpegCore from "@ffmpeg/core-mt";
|
||||||
|
|
||||||
|
void (async () => {
|
||||||
|
const core = await createFFmpegCore();
|
||||||
|
console.log(core);
|
||||||
|
})();
|
6
apps/node-ts/load-core.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import createFFmpegCore from "@ffmpeg/core";
|
||||||
|
|
||||||
|
void (async () => {
|
||||||
|
const core = await createFFmpegCore();
|
||||||
|
console.log(core);
|
||||||
|
})();
|
21
apps/node-ts/package.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "node-ts",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "node example",
|
||||||
|
"main": "index.ts",
|
||||||
|
"scripts": {
|
||||||
|
"lint": "eslint .",
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "Jerome Wu <jeromewus@gmail.com>",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@ffmpeg/core": "^0.11.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
||||||
|
"@typescript-eslint/parser": "^5.37.0",
|
||||||
|
"eslint": "^8.23.1",
|
||||||
|
"typescript": "^4.8.3"
|
||||||
|
}
|
||||||
|
}
|
3
apps/node-ts/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.json"
|
||||||
|
}
|
52
build/ffmpeg-wasm.sh
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
EXTRA_CONF_FLAGS=(
|
||||||
|
-sINITIAL_MEMORY=32MB
|
||||||
|
-sALLOW_MEMORY_GROWTH
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ ! -z "$FFMPEG_MT" ]]; then
|
||||||
|
EXTRA_CONF_FLAGS=(
|
||||||
|
-sINITIAL_MEMORY=1024MB
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
emcc \
|
||||||
|
-I. \
|
||||||
|
-I./wasm/fftools \
|
||||||
|
-I$INSTALL_DIR/include \
|
||||||
|
-L$INSTALL_DIR/lib \
|
||||||
|
-Llibavcodec \
|
||||||
|
-Llibavdevice \
|
||||||
|
-Llibavfilter \
|
||||||
|
-Llibavformat \
|
||||||
|
-Llibavutil \
|
||||||
|
-Llibpostproc \
|
||||||
|
-Llibswresample \
|
||||||
|
-Llibswscale \
|
||||||
|
-lavcodec \
|
||||||
|
-lavdevice \
|
||||||
|
-lavfilter \
|
||||||
|
-lavformat \
|
||||||
|
-lavutil \
|
||||||
|
-lpostproc \
|
||||||
|
-lswresample \
|
||||||
|
-lswscale \
|
||||||
|
-lx264 \
|
||||||
|
-Wno-deprecated-declarations \
|
||||||
|
$LDFLAGS \
|
||||||
|
-sUSE_SDL=2 \
|
||||||
|
-sMODULARIZE \
|
||||||
|
-sEXPORT_NAME="createFFmpegCore" \
|
||||||
|
-sEXPORTED_FUNCTIONS=$(node wasm/bind/export.js) \
|
||||||
|
-sEXPORTED_RUNTIME_METHODS=$(node wasm/bind/export-runtime.js) \
|
||||||
|
--pre-js wasm/bind/bind.js \
|
||||||
|
wasm/fftools/ffmpeg.c \
|
||||||
|
wasm/fftools/ffmpeg_filter.c \
|
||||||
|
wasm/fftools/ffmpeg_hw.c \
|
||||||
|
wasm/fftools/ffmpeg_mux.c \
|
||||||
|
wasm/fftools/ffmpeg_opt.c \
|
||||||
|
wasm/fftools/cmdutils.c \
|
||||||
|
wasm/fftools/opt_common.c \
|
||||||
|
${EXTRA_CONF_FLAGS[@]} \
|
||||||
|
$@
|
37
build/ffmpeg.sh
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
EXTRA_CONF_FLAGS=(
|
||||||
|
--disable-pthreads
|
||||||
|
--disable-w32threads
|
||||||
|
--disable-os2threads
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ ! -z "$FFMPEG_MT" ]]; then
|
||||||
|
EXTRA_CONF_FLAGS=()
|
||||||
|
fi
|
||||||
|
|
||||||
|
emconfigure ./configure \
|
||||||
|
--target-os=none \
|
||||||
|
--arch=x86_32 \
|
||||||
|
--enable-cross-compile \
|
||||||
|
--disable-asm \
|
||||||
|
--disable-stripping \
|
||||||
|
--disable-programs \
|
||||||
|
--disable-doc \
|
||||||
|
--disable-debug \
|
||||||
|
--disable-runtime-cpudetect \
|
||||||
|
--disable-autodetect \
|
||||||
|
--extra-cflags="$CFLAGS" \
|
||||||
|
--extra-cxxflags="$CFLAGS" \
|
||||||
|
--nm="llvm-nm" \
|
||||||
|
--ar=emar \
|
||||||
|
--ranlib=emranlib \
|
||||||
|
--cc=emcc \
|
||||||
|
--cxx=em++ \
|
||||||
|
--objcc=emcc \
|
||||||
|
--dep-cc=emcc \
|
||||||
|
${EXTRA_CONF_FLAGS[@]} \
|
||||||
|
--enable-gpl \
|
||||||
|
--enable-libx264
|
||||||
|
|
||||||
|
emmake make -j
|
20
build/x264.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
EXTRA_CONF_FLAGS=(
|
||||||
|
--disable-thread
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ ! -z "$FFMPEG_MT" ]]; then
|
||||||
|
EXTRA_CONF_FLAGS=()
|
||||||
|
fi
|
||||||
|
|
||||||
|
emconfigure ./configure \
|
||||||
|
--prefix=$INSTALL_DIR \
|
||||||
|
--host=x86-gnu \
|
||||||
|
--enable-static \
|
||||||
|
--disable-cli \
|
||||||
|
--disable-asm \
|
||||||
|
--extra-cflags="$CFLAGS" \
|
||||||
|
${EXTRA_CONF_FLAGS[@]}
|
||||||
|
|
||||||
|
emmake make install-lib-static -j
|
6
lerna.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||||
|
"useNx": true,
|
||||||
|
"useWorkspaces": true,
|
||||||
|
"version": "0.0.0"
|
||||||
|
}
|
23700
package-lock.json
generated
74
package.json
@ -1,73 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@ffmpeg/ffmpeg",
|
"name": "root",
|
||||||
"version": "0.11.5",
|
"private": true,
|
||||||
"description": "FFmpeg WebAssembly version",
|
"workspaces": [
|
||||||
"main": "src/index.js",
|
"packages/*",
|
||||||
"types": "src/index.d.ts",
|
"apps/*"
|
||||||
"directories": {
|
|
||||||
"example": "examples"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"start": "node scripts/server.js",
|
|
||||||
"start:worker": "node scripts/worker-server.js",
|
|
||||||
"build": "rimraf dist && webpack --config scripts/webpack.config.prod.js",
|
|
||||||
"build:worker": "rimraf dist && webpack --config scripts/webpack.config.worker.prod.js",
|
|
||||||
"prepublishOnly": "npm run build",
|
|
||||||
"lint": "eslint src",
|
|
||||||
"wait": "rimraf dist && wait-on http://localhost:3000/dist/ffmpeg.dev.js",
|
|
||||||
"test": "npm-run-all -p -r start test:all",
|
|
||||||
"test:all": "npm-run-all wait test:browser:ffmpeg test:node:all",
|
|
||||||
"test:node": "node node_modules/mocha/bin/_mocha --exit --bail --require ./scripts/test-helper.js",
|
|
||||||
"test:node:all": "npm run test:node -- ./tests/*.test.js",
|
|
||||||
"test:browser": "mocha-headless-chrome -a allow-file-access-from-files -a incognito -a no-sandbox -a disable-setuid-sandbox -a disable-logging -t 300000",
|
|
||||||
"test:browser:ffmpeg": "npm run test:browser -- -f ./tests/ffmpeg.test.html"
|
|
||||||
},
|
|
||||||
"browser": {
|
|
||||||
"./src/node/index.js": "./src/browser/index.js"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/ffmpegwasm/ffmpeg.wasm.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"ffmpeg",
|
|
||||||
"WebAssembly",
|
|
||||||
"video"
|
|
||||||
],
|
],
|
||||||
"author": "Jerome Wu <jeromewus@gmail.com>",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/ffmpegwasm/ffmpeg.wasm/issues"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.16.1"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/ffmpegwasm/ffmpeg.wasm#readme",
|
|
||||||
"dependencies": {
|
|
||||||
"is-url": "^1.2.4",
|
|
||||||
"node-fetch": "^2.6.1",
|
|
||||||
"regenerator-runtime": "^0.13.7",
|
|
||||||
"resolve-url": "^0.2.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.12.3",
|
"lerna": "^5.4.3"
|
||||||
"@babel/preset-env": "^7.12.1",
|
|
||||||
"@ffmpeg/core": "^0.11.0",
|
|
||||||
"@types/emscripten": "^1.39.4",
|
|
||||||
"babel-eslint": "^10.1.0",
|
|
||||||
"babel-loader": "^8.1.0",
|
|
||||||
"chai": "^4.2.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"eslint": "^7.12.1",
|
|
||||||
"eslint-config-airbnb-base": "^14.1.0",
|
|
||||||
"eslint-plugin-import": "^2.22.1",
|
|
||||||
"express": "^4.17.1",
|
|
||||||
"mocha": "^8.2.1",
|
|
||||||
"mocha-headless-chrome": "^2.0.3",
|
|
||||||
"npm-run-all": "^4.1.5",
|
|
||||||
"wait-on": "^5.3.0",
|
|
||||||
"webpack": "^5.3.2",
|
|
||||||
"webpack-cli": "^4.1.0",
|
|
||||||
"webpack-dev-middleware": "^4.0.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
50
packages/core-mt/package.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"name": "@ffmpeg/core-mt",
|
||||||
|
"version": "0.11.0",
|
||||||
|
"description": "ffmpeg.wasm core",
|
||||||
|
"main": "./dist/ffmpeg-core.cjs",
|
||||||
|
"types": "./types/ffmpeg-core.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./types/ffmpeg-core.d.ts",
|
||||||
|
"import": "./dist/ffmpeg-core.js",
|
||||||
|
"require": "./dist/ffmpeg-core.cjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/ffmpegwasm/ffmpeg.wasm.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"ffmpeg",
|
||||||
|
"webassembly",
|
||||||
|
"video",
|
||||||
|
"audio",
|
||||||
|
"transcode"
|
||||||
|
],
|
||||||
|
"author": "jeromewus@gmail.com",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/ffmpegwasm/ffmpeg.wasm/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/ffmpegwasm/ffmpeg.wasm#readme",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist",
|
||||||
|
"types"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"lint": "eslint types"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/emscripten": "^1.39.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
||||||
|
"@typescript-eslint/parser": "^5.37.0",
|
||||||
|
"eslint": "^8.23.1",
|
||||||
|
"typescript": "^4.8.3"
|
||||||
|
}
|
||||||
|
}
|
3
packages/core-mt/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.json"
|
||||||
|
}
|
10
packages/core-mt/types/ffmpeg-core.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/// <reference types="emscripten" />
|
||||||
|
|
||||||
|
type Pointer = number;
|
||||||
|
type StringArrayPointer = Pointer;
|
||||||
|
|
||||||
|
interface FFmpegCoreModule extends EmscriptenModule {
|
||||||
|
_ffmpeg: (number, StringArrayPointer) => number;
|
||||||
|
}
|
||||||
|
declare const createFFmpegCore: EmscriptenModuleFactory<FFmpegCoreModule>;
|
||||||
|
export default createFFmpegCore;
|
3
packages/core/.eslintrc.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: "../../.eslintrc.cjs",
|
||||||
|
};
|
2
packages/core/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dist/
|
||||||
|
types/
|
50
packages/core/package.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"name": "@ffmpeg/core",
|
||||||
|
"version": "0.11.0",
|
||||||
|
"description": "ffmpeg.wasm core",
|
||||||
|
"main": "./dist/ffmpeg-core.cjs",
|
||||||
|
"types": "./types/ffmpeg-core.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./types/ffmpeg-core.d.ts",
|
||||||
|
"import": "./dist/ffmpeg-core.js",
|
||||||
|
"require": "./dist/ffmpeg-core.cjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/ffmpegwasm/ffmpeg.wasm.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"ffmpeg",
|
||||||
|
"webassembly",
|
||||||
|
"video",
|
||||||
|
"audio",
|
||||||
|
"transcode"
|
||||||
|
],
|
||||||
|
"author": "jeromewus@gmail.com",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/ffmpegwasm/ffmpeg.wasm/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/ffmpegwasm/ffmpeg.wasm#readme",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist",
|
||||||
|
"types"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"lint": "eslint types"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/emscripten": "^1.39.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
||||||
|
"@typescript-eslint/parser": "^5.37.0",
|
||||||
|
"eslint": "^8.23.1",
|
||||||
|
"typescript": "^4.8.3"
|
||||||
|
}
|
||||||
|
}
|
3
packages/core/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.json"
|
||||||
|
}
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
60
packages/ffmpeg/package.json
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"name": "@ffmpeg/ffmpeg",
|
||||||
|
"version": "0.11.5",
|
||||||
|
"description": "FFmpeg WebAssembly version",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"types": "src/index.d.ts",
|
||||||
|
"directories": {
|
||||||
|
"example": "examples"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "node scripts/server.js",
|
||||||
|
"start:worker": "node scripts/worker-server.js",
|
||||||
|
"build": "rimraf dist && webpack --config scripts/webpack.config.prod.js",
|
||||||
|
"build:worker": "rimraf dist && webpack --config scripts/webpack.config.worker.prod.js",
|
||||||
|
"prepublishOnly": "npm run build",
|
||||||
|
"wait": "rimraf dist && wait-on http://localhost:3000/dist/ffmpeg.dev.js",
|
||||||
|
"test": "npm-run-all -p -r start test:all",
|
||||||
|
"test:all": "npm-run-all wait test:browser:ffmpeg test:node:all",
|
||||||
|
"test:node": "node node_modules/mocha/bin/_mocha --exit --bail --require ./scripts/test-helper.js",
|
||||||
|
"test:node:all": "npm run test:node -- ./tests/*.test.js",
|
||||||
|
"test:browser": "mocha-headless-chrome -a allow-file-access-from-files -a incognito -a no-sandbox -a disable-setuid-sandbox -a disable-logging -t 300000",
|
||||||
|
"test:browser:ffmpeg": "npm run test:browser -- -f ./tests/ffmpeg.test.html"
|
||||||
|
},
|
||||||
|
"browser": {
|
||||||
|
"./src/node/index.js": "./src/browser/index.js"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/ffmpegwasm/ffmpeg.wasm.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"ffmpeg",
|
||||||
|
"WebAssembly",
|
||||||
|
"video"
|
||||||
|
],
|
||||||
|
"author": "Jerome Wu <jeromewus@gmail.com>",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/ffmpegwasm/ffmpeg.wasm/issues"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.16.1"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/ffmpegwasm/ffmpeg.wasm#readme",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"is-url": "^1.2.4",
|
||||||
|
"node-fetch": "^2.6.1",
|
||||||
|
"regenerator-runtime": "^0.13.7",
|
||||||
|
"resolve-url": "^0.2.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
||||||
|
"@typescript-eslint/parser": "^5.37.0",
|
||||||
|
"eslint": "^8.23.1",
|
||||||
|
"typescript": "^4.8.3"
|
||||||
|
}
|
||||||
|
}
|