Showing preview only (9,695K chars total). Download the full file or copy to clipboard to get everything.
Repository: duixcom/Duix-Avatar
Branch: main
Commit: 44a1bb200efc
Files: 481
Total size: 161.3 MB
Directory structure:
gitextract_g62g6868/
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc.yaml
├── .vscode/
│ └── settings.json
├── LICENSE
├── README.md
├── README_zh.md
├── build/
│ ├── entitlements.mac.plist
│ └── icon.icns
├── deploy/
│ ├── docker-compose-5090.yml
│ ├── docker-compose-linux.yml
│ ├── docker-compose-lite.yml
│ └── docker-compose.yml
├── dev-app-update.yml
├── doc/
│ └── 常见问题.md
├── electron-builder.yml
├── electron.vite.config.mjs
├── jsconfig.json
├── package.json
├── resources/
│ └── ffmpeg/
│ ├── linux-amd64/
│ │ ├── GPLv3.txt
│ │ ├── ffmpeg
│ │ ├── ffprobe
│ │ ├── manpages/
│ │ │ ├── ffmpeg-all.txt
│ │ │ ├── ffmpeg-bitstream-filters.txt
│ │ │ ├── ffmpeg-codecs.txt
│ │ │ ├── ffmpeg-devices.txt
│ │ │ ├── ffmpeg-filters.txt
│ │ │ ├── ffmpeg-formats.txt
│ │ │ ├── ffmpeg-protocols.txt
│ │ │ ├── ffmpeg-resampler.txt
│ │ │ ├── ffmpeg-scaler.txt
│ │ │ ├── ffmpeg-utils.txt
│ │ │ ├── ffmpeg.txt
│ │ │ └── ffprobe.txt
│ │ ├── model/
│ │ │ ├── 000-PLEASE-README.TXT
│ │ │ ├── other_models/
│ │ │ │ ├── model_V8a.model
│ │ │ │ ├── nflx_v1.json
│ │ │ │ ├── nflx_v1.pkl
│ │ │ │ ├── nflx_v1.pkl.model
│ │ │ │ ├── nflx_vmaff_rf_v1.pkl
│ │ │ │ ├── nflx_vmaff_rf_v2.pkl
│ │ │ │ ├── nflxall_libsvmnusvr_currentbest.pkl
│ │ │ │ ├── nflxall_libsvmnusvr_currentbest.pkl.model
│ │ │ │ ├── nflxall_vmafv1.pkl
│ │ │ │ ├── nflxall_vmafv1.pkl.model
│ │ │ │ ├── nflxall_vmafv2.pkl
│ │ │ │ ├── nflxall_vmafv2.pkl.model
│ │ │ │ ├── nflxall_vmafv3.pkl
│ │ │ │ ├── nflxall_vmafv3.pkl.model
│ │ │ │ ├── nflxall_vmafv3a.pkl
│ │ │ │ ├── nflxall_vmafv3a.pkl.model
│ │ │ │ ├── nflxall_vmafv4.pkl
│ │ │ │ ├── nflxall_vmafv4.pkl.model
│ │ │ │ ├── nflxtrain_libsvmnusvr_currentbest.pkl
│ │ │ │ ├── nflxtrain_libsvmnusvr_currentbest.pkl.model
│ │ │ │ ├── nflxtrain_norm_type_none.json
│ │ │ │ ├── nflxtrain_norm_type_none.pkl
│ │ │ │ ├── nflxtrain_norm_type_none.pkl.model
│ │ │ │ ├── nflxtrain_vmafv1.pkl
│ │ │ │ ├── nflxtrain_vmafv1.pkl.model
│ │ │ │ ├── nflxtrain_vmafv2.pkl
│ │ │ │ ├── nflxtrain_vmafv2.pkl.model
│ │ │ │ ├── nflxtrain_vmafv3.pkl
│ │ │ │ ├── nflxtrain_vmafv3.pkl.model
│ │ │ │ ├── nflxtrain_vmafv3a.pkl
│ │ │ │ ├── nflxtrain_vmafv3a.pkl.model
│ │ │ │ ├── niqe_v0.1.pkl
│ │ │ │ ├── vmaf_4k_v0.6.1rc.pkl
│ │ │ │ ├── vmaf_4k_v0.6.1rc.pkl.model
│ │ │ │ ├── vmaf_v0.6.0.json
│ │ │ │ ├── vmaf_v0.6.0.pkl
│ │ │ │ ├── vmaf_v0.6.0.pkl.model
│ │ │ │ └── vmaf_v0.6.1mfz.json
│ │ │ ├── vmaf_4k_rb_v0.6.2/
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.json
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0001
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0001.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0002
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0002.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0003
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0003.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0004
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0004.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0005
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0005.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0006
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0006.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0007
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0007.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0008
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0008.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0009
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0009.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0010
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0010.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0011
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0011.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0012
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0012.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0013
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0013.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0014
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0014.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0015
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0015.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0016
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0016.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0017
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0017.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0018
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0018.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0019
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0019.model
│ │ │ │ └── vmaf_4k_rb_v0.6.2.pkl.model
│ │ │ ├── vmaf_4k_v0.6.1.json
│ │ │ ├── vmaf_b_v0.6.3.json
│ │ │ ├── vmaf_float_4k_v0.6.1.json
│ │ │ ├── vmaf_float_b_v0.6.3/
│ │ │ │ ├── vmaf_float_b_v0.6.3.json
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0001
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0001.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0002
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0002.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0003
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0003.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0004
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0004.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0005
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0005.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0006
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0006.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0007
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0007.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0008
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0008.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0009
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0009.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0010
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0010.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0011
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0011.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0012
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0012.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0013
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0013.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0014
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0014.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0015
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0015.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0016
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0016.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0017
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0017.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0018
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0018.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0019
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0019.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0020
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0020.model
│ │ │ │ └── vmaf_float_b_v0.6.3.pkl.model
│ │ │ ├── vmaf_float_b_v0.6.3.json
│ │ │ ├── vmaf_float_v0.6.1.json
│ │ │ ├── vmaf_float_v0.6.1.pkl
│ │ │ ├── vmaf_float_v0.6.1.pkl.model
│ │ │ ├── vmaf_float_v0.6.1neg.json
│ │ │ ├── vmaf_float_v0.6.1neg.pkl
│ │ │ ├── vmaf_float_v0.6.1neg.pkl.model
│ │ │ ├── vmaf_rb_v0.6.2/
│ │ │ │ ├── vmaf_rb_v0.6.2.json
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0001
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0001.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0002
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0002.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0003
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0003.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0004
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0004.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0005
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0005.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0006
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0006.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0007
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0007.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0008
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0008.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0009
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0009.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0010
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0010.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0011
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0011.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0012
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0012.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0013
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0013.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0014
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0014.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0015
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0015.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0016
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0016.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0017
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0017.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0018
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0018.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0019
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0019.model
│ │ │ │ └── vmaf_rb_v0.6.2.pkl.model
│ │ │ ├── vmaf_rb_v0.6.3/
│ │ │ │ ├── vmaf_rb_v0.6.3.json
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0001
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0001.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0002
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0002.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0003
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0003.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0004
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0004.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0005
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0005.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0006
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0006.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0007
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0007.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0008
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0008.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0009
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0009.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0010
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0010.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0011
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0011.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0012
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0012.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0013
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0013.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0014
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0014.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0015
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0015.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0016
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0016.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0017
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0017.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0018
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0018.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0019
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0019.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0020
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0020.model
│ │ │ │ └── vmaf_rb_v0.6.3.pkl.model
│ │ │ ├── vmaf_v0.6.1.json
│ │ │ └── vmaf_v0.6.1neg.json
│ │ ├── qt-faststart
│ │ └── readme.txt
│ └── win-amd64/
│ ├── include/
│ │ ├── libavcodec/
│ │ │ ├── ac3_parser.h
│ │ │ ├── adts_parser.h
│ │ │ ├── avcodec.h
│ │ │ ├── avdct.h
│ │ │ ├── avfft.h
│ │ │ ├── bsf.h
│ │ │ ├── codec.h
│ │ │ ├── codec_desc.h
│ │ │ ├── codec_id.h
│ │ │ ├── codec_par.h
│ │ │ ├── d3d11va.h
│ │ │ ├── dirac.h
│ │ │ ├── dv_profile.h
│ │ │ ├── dxva2.h
│ │ │ ├── jni.h
│ │ │ ├── mediacodec.h
│ │ │ ├── packet.h
│ │ │ ├── qsv.h
│ │ │ ├── vaapi.h
│ │ │ ├── vdpau.h
│ │ │ ├── version.h
│ │ │ ├── videotoolbox.h
│ │ │ ├── vorbis_parser.h
│ │ │ └── xvmc.h
│ │ ├── libavdevice/
│ │ │ ├── avdevice.h
│ │ │ └── version.h
│ │ ├── libavfilter/
│ │ │ ├── avfilter.h
│ │ │ ├── buffersink.h
│ │ │ ├── buffersrc.h
│ │ │ └── version.h
│ │ ├── libavformat/
│ │ │ ├── avformat.h
│ │ │ ├── avio.h
│ │ │ └── version.h
│ │ ├── libavutil/
│ │ │ ├── adler32.h
│ │ │ ├── aes.h
│ │ │ ├── aes_ctr.h
│ │ │ ├── attributes.h
│ │ │ ├── audio_fifo.h
│ │ │ ├── avassert.h
│ │ │ ├── avconfig.h
│ │ │ ├── avstring.h
│ │ │ ├── avutil.h
│ │ │ ├── base64.h
│ │ │ ├── blowfish.h
│ │ │ ├── bprint.h
│ │ │ ├── bswap.h
│ │ │ ├── buffer.h
│ │ │ ├── camellia.h
│ │ │ ├── cast5.h
│ │ │ ├── channel_layout.h
│ │ │ ├── common.h
│ │ │ ├── cpu.h
│ │ │ ├── crc.h
│ │ │ ├── des.h
│ │ │ ├── dict.h
│ │ │ ├── display.h
│ │ │ ├── dovi_meta.h
│ │ │ ├── downmix_info.h
│ │ │ ├── encryption_info.h
│ │ │ ├── error.h
│ │ │ ├── eval.h
│ │ │ ├── ffversion.h
│ │ │ ├── fifo.h
│ │ │ ├── file.h
│ │ │ ├── film_grain_params.h
│ │ │ ├── frame.h
│ │ │ ├── hash.h
│ │ │ ├── hdr_dynamic_metadata.h
│ │ │ ├── hmac.h
│ │ │ ├── hwcontext.h
│ │ │ ├── hwcontext_cuda.h
│ │ │ ├── hwcontext_d3d11va.h
│ │ │ ├── hwcontext_drm.h
│ │ │ ├── hwcontext_dxva2.h
│ │ │ ├── hwcontext_mediacodec.h
│ │ │ ├── hwcontext_opencl.h
│ │ │ ├── hwcontext_qsv.h
│ │ │ ├── hwcontext_vaapi.h
│ │ │ ├── hwcontext_vdpau.h
│ │ │ ├── hwcontext_videotoolbox.h
│ │ │ ├── hwcontext_vulkan.h
│ │ │ ├── imgutils.h
│ │ │ ├── intfloat.h
│ │ │ ├── intreadwrite.h
│ │ │ ├── lfg.h
│ │ │ ├── log.h
│ │ │ ├── lzo.h
│ │ │ ├── macros.h
│ │ │ ├── mastering_display_metadata.h
│ │ │ ├── mathematics.h
│ │ │ ├── md5.h
│ │ │ ├── mem.h
│ │ │ ├── motion_vector.h
│ │ │ ├── murmur3.h
│ │ │ ├── opt.h
│ │ │ ├── parseutils.h
│ │ │ ├── pixdesc.h
│ │ │ ├── pixelutils.h
│ │ │ ├── pixfmt.h
│ │ │ ├── random_seed.h
│ │ │ ├── rational.h
│ │ │ ├── rc4.h
│ │ │ ├── replaygain.h
│ │ │ ├── ripemd.h
│ │ │ ├── samplefmt.h
│ │ │ ├── sha.h
│ │ │ ├── sha512.h
│ │ │ ├── spherical.h
│ │ │ ├── stereo3d.h
│ │ │ ├── tea.h
│ │ │ ├── threadmessage.h
│ │ │ ├── time.h
│ │ │ ├── timecode.h
│ │ │ ├── timestamp.h
│ │ │ ├── tree.h
│ │ │ ├── twofish.h
│ │ │ ├── tx.h
│ │ │ ├── version.h
│ │ │ ├── video_enc_params.h
│ │ │ └── xtea.h
│ │ ├── libpostproc/
│ │ │ ├── postprocess.h
│ │ │ └── version.h
│ │ ├── libswresample/
│ │ │ ├── swresample.h
│ │ │ └── version.h
│ │ └── libswscale/
│ │ ├── swscale.h
│ │ └── version.h
│ ├── lib/
│ │ ├── avcodec-58.def
│ │ ├── avcodec.lib
│ │ ├── avdevice-58.def
│ │ ├── avdevice.lib
│ │ ├── avfilter-7.def
│ │ ├── avfilter.lib
│ │ ├── avformat-58.def
│ │ ├── avformat.lib
│ │ ├── avutil-56.def
│ │ ├── avutil.lib
│ │ ├── libavcodec.dll.a
│ │ ├── libavdevice.dll.a
│ │ ├── libavfilter.dll.a
│ │ ├── libavformat.dll.a
│ │ ├── libavutil.dll.a
│ │ ├── libpostproc.dll.a
│ │ ├── libswresample.dll.a
│ │ ├── libswscale.dll.a
│ │ ├── postproc-55.def
│ │ ├── postproc.lib
│ │ ├── swresample-3.def
│ │ ├── swresample.lib
│ │ ├── swscale-5.def
│ │ └── swscale.lib
│ └── presets/
│ ├── libvpx-1080p.ffpreset
│ ├── libvpx-1080p50_60.ffpreset
│ ├── libvpx-360p.ffpreset
│ ├── libvpx-720p.ffpreset
│ └── libvpx-720p50_60.ffpreset
└── src/
├── main/
│ ├── api/
│ │ ├── f2f.js
│ │ ├── request.js
│ │ └── tts.js
│ ├── config/
│ │ └── config.js
│ ├── dao/
│ │ ├── context.js
│ │ ├── f2f-model.js
│ │ ├── video.js
│ │ └── voice.js
│ ├── db/
│ │ ├── index.js
│ │ └── sql.js
│ ├── handlers/
│ │ ├── app.js
│ │ ├── file.js
│ │ └── index.js
│ ├── index.js
│ ├── interval/
│ │ └── interval.js
│ ├── logger.js
│ ├── service/
│ │ ├── context.js
│ │ ├── index.js
│ │ ├── model.js
│ │ ├── video.js
│ │ └── voice.js
│ └── util/
│ └── ffmpeg.js
├── preload/
│ └── index.js
└── renderer/
├── index.html
└── src/
├── App.vue
├── api/
│ └── index.js
├── assets/
│ ├── agreement.less
│ ├── base.css
│ ├── main.css
│ └── theme.css
├── client/
│ └── index.js
├── components/
│ ├── AppHeader.vue
│ ├── ModalFinished.vue
│ ├── agreement.vue
│ ├── deleteDialog.vue
│ ├── menuLIst.vue
│ └── model-create/
│ ├── ModalBox.vue
│ ├── ModalBoxGuide.vue
│ ├── ModalBoxUpload.vue
│ ├── ModelCreateView.vue
│ └── index.js
├── i18n/
│ ├── components/
│ │ └── common.js
│ ├── config/
│ │ ├── en.js
│ │ └── zh.js
│ └── index.js
├── main.js
├── router/
│ └── index.js
├── stores/
│ ├── app.js
│ ├── home.js
│ └── user.js
├── utils/
│ ├── const.js
│ └── index.js
└── views/
├── account/
│ └── index.vue
├── home/
│ ├── components/
│ │ ├── bannerList.vue
│ │ ├── myModelList.vue
│ │ ├── videoDialog.vue
│ │ └── worksList.vue
│ └── index.vue
└── video-edit/
├── VideoEditView.vue
├── edit/
│ ├── EditListener.vue
│ ├── EditText.vue
│ ├── EditTextSpeaker.vue
│ ├── EditUpload.vue
│ └── EditView.vue
├── header/
│ └── HeaderView.vue
├── preview/
│ └── PreviewView.vue
└── select/
└── SelectView.vue
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
================================================
FILE: .eslintignore
================================================
node_modules
dist
out
.gitignore
================================================
FILE: .eslintrc.cjs
================================================
/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')
module.exports = {
extends: [
'eslint:recommended',
// 'plugin:vue/vue3-recommended',
'@electron-toolkit',
// '@vue/eslint-config-prettier'
],
parserOptions: {
ecmaVersion: 2022, // 或者更高版本
sourceType: 'module', // 如果你使用 ES 模块
},
rules: {
'no-unused-vars': 'off',
'vue/require-default-prop': 'off',
'vue/multi-word-component-names': 'off'
}
}
================================================
FILE: .gitignore
================================================
node_modules
dist
out
.idea
.DS_Store
*.log*
================================================
FILE: .npmrc
================================================
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
better_sqlite3_binary_host=https://registry.npmmirror.com/-/binary/better-sqlite3
better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3
================================================
FILE: .prettierignore
================================================
out
dist
pnpm-lock.yaml
LICENSE.md
tsconfig.json
tsconfig.*.json
================================================
FILE: .prettierrc.yaml
================================================
singleQuote: true
semi: false
printWidth: 100
trailingComma: none
================================================
FILE: .vscode/settings.json
================================================
{
"i18n-ally.localesPaths": "src/renderer/src/i18n/config",
"i18n-ally.enabledParsers": ["js"],
"i18n-ally.enabledFrameworks": ["vue", "vue-sfc"],
"i18n-ally.keystyle": "nested",
"i18n-ally.displayLanguage": "zh",
"i18n-ally.sortKeys": false,
"i18n-ally.namespace": true,
"i18n-ally.translate.engines": ["deepl", "google"], // 翻译器
"i18n-ally.extract.keygenStyle": "camelCase" // 翻译字段命名样式采用驼峰
}
================================================
FILE: LICENSE
================================================
DUIX.COM COMMUNITY LICENSE AGREEMENT
"Agreement" means the terms and conditions for use, reproduction, distribution and modification of this product set forth herein.
"Documentation" means the specifications, manuals and documentation by DUIX.COM.
"Licensee" or "you" means you, or your employer or any other person or entity (if you are entering into this Agreement on such person or entity's behalf), of the age required under applicable laws, rules or regulations to provide legal consent and that has legal authority to bind your employer or such other person or entity if you are entering in this Agreement on their behalf.
"DUIX.COM Materials" means, collectively, DUIX.COM's proprietary code and Documentation (and any portion thereof) made available under this Agreement.
"Monthly Active Users" means the number of unique users who interact with your product or service that incorporates the DUIX.COM Materials at least once during a calendar month.
By clicking "I Accept" below or by using or distributing any portion or element of the DUIX.COM Materials, you agree to be bound by this Agreement.
1. License Rights and Redistribution.
a. Grant of Rights. You are granted a non-exclusive, worldwide, non-transferable and royalty-free limited license under DUIX.COM's intellectual property or other rights owned by DUIX.COM embodied in the DUIX.COM Materials to use, reproduce, distribute, copy, create derivative works of, and make modifications to the DUIX.COM Materials.
b. Redistribution and Use.
i. If you distribute or make available the DUIX.COM Materials (or any derivative works thereof), or a product or service that uses any of them, you shall (A) provide a copy of this Agreement with any such DUIX.COM Materials; (B) prominently display "Built with DUIX.COM" on a related website, user interface, blogpost, about page, or product documentation; and (C) include a clear and conspicuous statement in your terms of service, end user license agreement, or other user-facing legal agreements that your product or service incorporates or is built using DUIX.COM technology. If you use the DUIX.COM Materials to create, train, fine tune, or otherwise improve an AI model, which is distributed or made available, you shall also include "DUIX.COM" at the beginning of any such AI model name.
ii. If you receive DUIX.COM Materials, or any derivative works thereof, from a Licensee as part of an integrated end user product, then Section 2 of this Agreement will not apply to you.
iii. You must retain in all copies of the DUIX.COM Materials that you distribute the following attribution notice within a "Notice" text file distributed as a part of such copies: "DUIX.COM is licensed under the DUIX.COM Community License, Copyright © DUIX.COM Platforms, Inc. All Rights Reserved."
iv. Your use of the DUIX.COM Materials must comply with applicable laws and regulations (including trade compliance laws and regulations).
2. Additional Commercial Terms. If, on the DUIX.COM version release date, either (a) the Monthly Active Users of the products or services made available by or for Licensee, or Licensee's affiliates, is greater than 1 thousand in the preceding calendar month, or (b) your product incorporating DUIX.COM Materials has greater than 1 thousand Monthly Active Users, you must request a commercial license from DUIX.COM, which DUIX.COM may grant to you in its sole discretion, and you are not authorized to exercise any of the rights under this Agreement unless or until DUIX.COM otherwise expressly grants you such rights.
3. Disclaimer of Warranty. UNLESS REQUIRED BY APPLICABLE LAW, THE DUIX.COM MATERIALS AND ANY OUTPUT AND RESULTS THEREFROM ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, AND DUIX.COM DISCLAIMS ALL WARRANTIES OF ANY KIND, BOTH EXPRESS AND IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE DUIX.COM MATERIALS AND ASSUME ANY RISKS ASSOCIATED WITH YOUR USE OF THE DUIX.COM MATERIALS AND ANY OUTPUT AND RESULTS.
4. Limitation of Liability. IN NO EVENT WILL DUIX.COM OR ITS AFFILIATES BE LIABLE UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT, NEGLIGENCE, PRODUCTS LIABILITY, OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, FOR ANY LOST PROFITS OR ANY INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL, EXEMPLARY OR PUNITIVE DAMAGES, EVEN IF DUIX.COM OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF ANY OF THE FOREGOING.
5. Intellectual Property.
a. No trademark licenses are granted under this Agreement, and in connection with the DUIX.COM Materials, neither DUIX.COM nor Licensee may use any name or mark owned by or associated with the other or any of its affiliates, except as required for reasonable and customary use in describing and redistributing the DUIX.COM Materials or as set forth in this Section 5(a). DUIX.COM hereby grants you a license to use "DUIX.COM" solely as required to comply with the last sentence of Section 1.b.i. You will comply with DUIX.COM's brand guidelines as published on DUIX.COM's website or otherwise made available to you. All goodwill arising out of your use of the Mark will inure to the benefit of DUIX.COM.
b. If you institute litigation or other proceedings against DUIX.COM or any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the DUIX.COM Materials or outputs or results, or any portion of any of the foregoing, constitutes infringement of intellectual property or other rights owned or licensable by you, then any licenses granted to you under this Agreement shall terminate as of the date such litigation or claim is filed or instituted. You will indemnify and hold harmless DUIX.COM from and against any claim by any third party arising out of or related to your use or distribution of the DUIX.COM Materials.
c. Case Studies and Usage Examples. By using the DUIX.COM Materials, you grant DUIX.COM a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to use, reproduce, modify, publicly display, publicly perform, and distribute any case studies, examples, applications, or implementations created using the DUIX.COM Materials for any purpose, including but not limited to marketing, documentation, research, and product improvement. DUIX.COM may use such case studies and examples without any compensation or attribution to you, though DUIX.COM may, at its sole discretion, provide attribution where appropriate.
6. Term and Termination. The term of this Agreement will commence upon your acceptance of this Agreement or access to the DUIX.COM Materials and will continue in full force and effect until terminated in accordance with the terms and conditions herein. DUIX.COM may terminate this Agreement if you are in breach of any term or condition of this Agreement. Upon termination of this Agreement, you shall delete and cease use of the DUIX.COM Materials. Sections 3, 4, 5(b), and 5(c) shall survive the termination of this Agreement.
================================================
FILE: README.md
================================================
# 🚀🚀🚀 Duix Avatar — Truly open-source AI avatar toolkit for offline video generation and digital human cloning
🔗 **Office website:** [www.duix.com](http://www.duix.com)
# Table of Contents
1. [What's Duix.Avatar](#1-whats-Duix.Avatar)
2. [Introduction](#2-introduction)
3. [How to Run Locally](#3-how-to-run-locally)
4. [Open APIs](#4-open-apis)
5. [What's New](#5-whats-new)
6. [FAQ](#6-faq)
7. [How to Interact in real time](#7-how-to-interact-in-real-time)
8. [Contact](#8-contact)
9. [License](#9-license)
10. [Acknowledgments](#10-acknowledgments)
11. [Star History](#11-star-history)
------
## 1. What's Duix.Avatar
**Duix.Avatar** is a free and open-source AI avatar project developed by **Duix.com**.
Seven years ago, a group of young pioneers chose an unconventional technical path, developing a method to train digital human models using real-person video data. Unlike traditional costly 3D digital human approaches, we leveraged AI-generated technology to create ultra-realistic digital humans, slashing production costs from hundreds of thousands of dollars to just $1,000. This innovation has empowered over 10,000 enterprises and generated over 500,000 personalized avatars for professionals across fields – educators, content creators, legal experts, medical practitioners, and entrepreneurs – dramatically enhancing their video production efficiency. However, our vision extends beyond commercial applications. We believe this transformative technology should be accessible to everyone. To democratize digital human creation, we've open-sourced our cloning technology and video production framework. Our commitment remains: breaking down technological barriers to make cutting-edge tools available to all. Now, anyone with a computer can freely craft their own AI Avatar and produce videos at zero cost – this is the essence of **Duix.Avatar**.
## 2. Introduction

Duix.Avatar is a fully offline video synthesis tool designed for Windows systems that can precisely clone your appearance and voice, digitalizing your image. You can create videos by driving virtual avatars through text and voice. No internet connection is required, protecting your privacy while enjoying convenient and efficient digital experiences.
- Core Features
- Precise Appearance and Voice Cloning: Using advanced AI algorithms to capture human facial features with high precision, including facial features, contours, etc., to build realistic virtual models. It can also precisely clone voices, capturing and reproducing subtle characteristics of human voices, supporting various voice parameter settings to create highly similar cloning effects.
- Text and Voice-Driven Virtual Avatars: Understanding text content through natural language processing technology, converting text into natural and fluent speech to drive virtual avatars. Voice input can also be used directly, allowing virtual avatars to perform corresponding actions and facial expressions based on the rhythm and intonation of the voice, making the virtual avatar's performance more natural and vivid.
- Efficient Video Synthesis: Highly synchronizing digital human video images with sound, achieving natural and smooth lip-syncing, intelligently optimizing audio-video synchronization effects.
- Multi-language Support: Scripts support eight languages - English, Japanese, Korean, Chinese, French, German, Arabic, and Spanish.
- Key Advantages
- Fully Offline Operation: No internet connection required, effectively protecting user privacy, allowing users to create in a secure, independent environment, avoiding potential data leaks during network transmission.
- User-Friendly: Clean and intuitive interface, easy to use even for beginners with no technical background, quickly mastering the software's usage to start their digital human creation journey.
- Multiple Model Support: Supports importing multiple models and managing them through one-click startup packages, making it convenient for users to choose suitable models based on different creative needs and application scenarios.
- Technical Support
- Voice Cloning Technology: Using advanced technologies like artificial intelligence to generate similar or identical voices based on given voice samples, covering context, intonation, speed, and other aspects of speech.
- Automatic Speech Recognition: Technology that converts human speech vocabulary content into computer-readable input (text format), enabling computers to "understand" human speech.
- Computer Vision Technology: Used in video synthesis for visual processing, including facial recognition and lip movement analysis, ensuring virtual avatar lip movements match voice and text content.
## 3. How to Run Locally
Duix.Avatar supports Docker-based rapid deployment. Prior to deployment, ensure your hardware and software environments meet the specified requirements.
Duix.Avatar support two deployment modes:Windows / Ubuntu 22.04 Installation
### **Dependencies**
1. Nodejs 18
2. Docker Images
- docker pull guiji2025/fun-asr
- docker pull guiji2025/fish-speech-ziming
- docker pull guiji2025/duix.avatar
### Mode 1:Windows Installation
**System Requirements:**
- Currently supports Windows 10 19042.1526 or higher
**Hardware Requirements:**
- Must have D Drive: Mainly used for storing digital human and project data
- Free space requirement: More than 30GB
- C Drive: Used for storing service image files
- Free space requirement: More than 100GB
- If less than 100GB is available, after installing Docker, you can choose a different disk folder with more than 100GB of remaining space at the location shown below.

- Recommended Configuration:
- CPU: 13th Gen Intel Core i5-13400F
- Memory: 32GB
- Graphics Card: RTX 4070
- Ensure you have an NVIDIA graphics card with properly installed drivers
> NVIDIA driver download link: https://www.nvidia.cn/drivers/lookup/

#### **Installing Windows Docker**
1. Use the command `wsl --list --verbose` to check if WSL is installed. If it shows as below, it's already installed and no further installation is needed.

2. Update WSL using `wsl --update`.

3. [Download Docker for Windows](https://www.docker.com/), choose the appropriate installation package based on your CPU architecture.
4. When you see this interface, installation is successful.

5. Run Docker

6. Accept the agreement and skip login on first run



#### **Installing the Server**
Installation using Docker, docker-compose as follows:
1. The `docker-compose.yml` file is in the `/deploy` directory.
2. Execute `docker-compose up -d` in the `/deploy` directory, if you want to use the lite version, execute `docker-compose -f docker-compose-lite.yml up -d`
3. Wait patiently (about half an hour, speed depends on network), download will consume about 70GB of traffic, make sure to use WiFi
4. When you see three services in Docker, it indicates success (the lite version has only one service `Duix.Avatar-gen-video`)

#### **Server Deployment Solution for NVIDIA 50 Series Graphics Cards**
For 50 series graphics cards (tested and also works for 30/40 series with CUDA 12.8) Uses the official preview version of PyTorch
#### **Client**
1. Directly download the [officially built installation package](https://github.com/duixcom/Duix.Avatar/releases)
2. Double-click `Duix.Avatar-x.x.x-setup.exe` to install
### Mode 2:Ubuntu 22.04 Installation
**System Requirements:**
We have conducted a complete test on **Ubuntu 22.04**. However, theoretically, it supports desktop Linux distributions.
**Hardware Requirements:**
- Recommended Configuration
- CPU: 13th Generation Intel Core i5 - 13400F
- Memory: 32G or more (necessary)
- Graphics Card: RTX - 4070 (Ensure you have an NVIDIA graphics card and the graphics card driver is correctly installed)
- Hard Disk: Free space greater than 100G
**Install Docker:**
First, use` docker --version` to check if Docker is installed. If it is installed, skip the following steps.
```
sudo apt update
sudo apt install docker.io
sudo apt install docker-compose
```
**Install the graphics card driver:**
1. Install the graphics card driver by referring to the official documentation(https://www.nvidia.cn/drivers/lookup/).
After installation, execute the `nvidia-smi` command. If the graphics card information is displayed, the installation is successful.
2. Install the NVIDIA Container Toolkit
The NVIDIA Container Toolkit is a necessary tool for Docker to use NVIDIA GPUs. The installation steps are as follows:
- Add the NVIDIA package repository:
```
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
```
- Update the package list and install the toolkit:
```
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
```
- Configure Docker to use the NVIDIA runtime:
```
sudo nvidia-ctk runtime configure --runtime=docker
```
- Restart the Docker service:
```
sudo systemctl restart docker
```
#### **Install the server**
```
cd /deploy
docker-compose -f docker-compose-linux.yml up -d
```
#### **Install the client**
1. Directly download the Linux version of the [officially built installation package](https://github.com/duixcom/Duix.Avatar/releases).
2. Double click `Duix.Avatar-x.x.x.AppImage` to launch it. No installation is required.
Reminder: In the Ubuntu system, if you enter the desktop as the `root` user, directly double - clicking `Duix.Avatar - x.x.x.AppImage` may not work. You need to execute `./Duix.Avatar - x.x.x.AppImage --no - sandbox` in the command - line terminal. Adding the `--no - sandbox` parameter will do the trick.
## 4. Open APIs
We have opened APIs for model training and video synthesis. After Docker starts, several ports will be exposed locally, accessible through `http://127.0.0.1`.
For specific code, refer to:
- src/main/service/model.js
- src/main/service/video.js
- src/main/service/voice.js
### **Model Training**
1. Separate video into silent video + audio
2. Place audio in
`D:\duix_avatar_data\voice\data` is agreed with the `guiji2025/fish-speech-ziming` service, can be modified in docker-compose
3. Call the
Parameter example:Response example:**Record the response results as they will be needed for subsequent audio synthesis**
### **Audio Synthesis**
Interface: `http://127.0.0.1:18180/v1/invoke`
```
// Request parameters
{
"speaker": "{uuid}", // A unique UUID
"text": "xxxxxxxxxx", // Text content to synthesize
"format": "wav", // Fixed parameter
"topP": 0.7, // Fixed parameter
"max_new_tokens": 1024, // Fixed parameter
"chunk_length": 100, // Fixed parameter
"repetition_penalty": 1.2, // Fixed parameter
"temperature": 0.7, // Fixed parameter
"need_asr": false, // Fixed parameter
"streaming": false, // Fixed parameter
"is_fixed_seed": 0, // Fixed parameter
"is_norm": 0, // Fixed parameter
"reference_audio": "{voice.asr_format_audio_url}", // Return value from previous "Model Training" step
"reference_text": "{voice.reference_audio_text}" // Return value from previous "Model Training" step
}
```
### **Video Synthesis**
- Synthesis interface: `http://127.0.0.1:8383/easy/submit`
```
// Request parameters
{
"audio_url": "{audioPath}", // Audio path
"video_url": "{videoPath}", // Video path
"code": "{uuid}", // Unique key
"chaofen": 0, // Fixed value
"watermark_switch": 0, // Fixed value
"pn": 1 // Fixed value
}
```
- Progress query: `http://127.0.0.1:8383/easy/query?code=${taskCode}`
GET request, the parameter `taskCode` is the `code` from the synthesis interface input above
### **Important Notice to Developer Partners**
we are now announcing two parallel service solutions:
| **Project** | **Duix.Avatar Open Source Local Deployment** | **Digital Human/Clone Voice API Service** |
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Usage | Open Source Local Deployment | Rapid Clone API Service |
| Recommended | Technical Users | Business Users |
| Technical Threshold | Developers with deep learning framework experience/pursuing deep customization/wishing to participate in community co-construction | Quick business integration/focus on upper-level application development/need enterprise-level SLA assurance for commercial scenarios |
| Hardware Requirements | Need to purchase GPU server | No need to purchase GPU server |
| Customization | Can modify and extend the code according to your needs, fully controlling the software's functions and behavior | Cannot directly modify the source code, can only extend functions through API-provided interfaces, less flexible than open source projects |
| Technical Support | Community Support | Dynamic expansion support + professional technical response team |
| Maintenance Cost | High maintenance cost | Simple maintenance |
| Lip Sync Effect | Usable effect | Stunning and higher definition effect |
| Commercial Authorization | Supports global free commercial use (enterprises with more than 100,000 users or annual revenue exceeding 10 million USD need to sign a commercial license agreement) | Commercial use allowed |
| Iteration Speed | Slow updates, bug fixes depend on the community | Latest models/algorithms are prioritized, fast problem resolution |
We always adhere to the open source spirit, and the launch of the API service aims to provide a more complete solution matrix for developers with different needs. No matter which method you choose, you can always obtain technical support documents through [https://duix.com](https://duix.com/)
We look forward to working with you to promote the inclusive development of digital human technology!
You can chat with Duix.Avatar Digital Human on the official website: https://duix.com/
We also provide APl at DUIX Platform: https://docs.duix.com/api-reference/api/Introduction
## 5. What's New
### **[Nvidia 50 Series GPU Version Notice]**
1. Tested and verified on 5090 GPU
2. For installation instructions, see [Server Deployment Solution for NVIDIA 50 Series Graphics Cards](#Server-Deployment-Solution-for-NVIDIA-50-Series-Graphics-Cards)
### **[New Ubuntu Version Notice]**
**Ubuntu Version Officially Released**
1. Adaptation and verification work for Ubuntu 22.04 Desktop version (kernel 6.8.0-52-generic) has been completed. Compatibility testing for other Linux versions has not yet been conducted.
2. Added internationalization (English) for the client program interface.
3. Fixed some known issues
- \#304
- \#292
4. [Ubuntu22.04 Installation Documentation](https://github.com/duixcom/Duix.Avatar?tab=readme-ov-file#ubuntu-2204-installation)
## 6. FAQ
### **Self-Check Steps Before Asking Questions**
1. Check if all three services are in Running status

2. Confirm that your machine has an NVIDIA graphics card and drivers are correctly installed.
All computing power for this project is local. The three services won't start without an NVIDIA graphics card or proper drivers.
3. Ensure both server and client are updated to the latest version. The project is newly open-sourced, the community is very active, and updates are frequent. Your issue might have been resolved in a new version.
- Server: Go to `/deploy` directory and re-execute `docker-compose up -d`
- Client: `pull` code and re-`build`
4. [GitHub Issues](https://github.com/duixcom/Duix.Avatar/issues) are continuously updated, issues are being resolved and closed daily. Check frequently, your issue might already be resolved.
### **Question Template**
1. Problem Description
Describe the reproduction steps in detail, with screenshots if possible.
2. Provide Error Logs
- How to get client logs:

- Server logs:
Find the key location, or click on our three Docker services, and "Copy" as shown below.

## 7. How to Interact in real time
Duix.Avatar's digital human realizes digital human cloning and non-real-time video synthesis.
If you want a digital human to support interaction, you can visit [duix.com](www.duix.com) to experience the free test.
## 8. Contact
If you have any questions, please raise an issue or contact us at james@duix.com
## 9. License
https://github.com/duixcom/Duix.Avatar/blob/main/LICENSE
## 10. Acknowledgments
- ASR based on fun-asr
- TTS based on fish-speech-ziming
## 11. Star History
[GitHub Star History](https://www.star-history.com/#duixcom/Duix.Avatar&Date)
================================================
FILE: README_zh.md
================================================
# Duix.Avatar [【Switch to English】](./README.md)
## 【项目介绍】
Duix.Avatar数字人是由硅基智能发布的免费开源项目,支持本地部署/API调用。
仅需提交一段10秒左右的视频,即可快速完成数字人形象和声音克隆,输入文案或上传音频即可驱动数字人口型,自动生成口播播报视频。
## 【官方网站】
登录网站体验更多数字人能力: https://duix.com/
技术交流 & 商务合作联系邮箱: james@duix.com
## 【NVIDIA 50系列显卡版本通知】
1. 基于5090显卡测试通过
2. 安装方法见<a href="#Nvidia-50系列显卡服务端部署方案">Nvidia 50系列显卡服务端部署方案</a>
## 【新增Ubuntu版本通知】
**Ubuntu版本正式发布**
1. 目前已完成 Ubuntu 22.04 Desktop 版本(内核 6.8.0-52-generic)的适配验证工作。其他 Linux 版本暂未进行兼容性测试。
2. 补充客户端程序界面国际化(英文)。
3. 修复一些已知问题
- #304
- #292
4. [Ubuntu22.04 安装文档](https://github.com/duixcom/Duix.Avatar/blob/main/README_zh.md#ubuntu2204-%E5%AE%89%E8%A3%85)
## 【致开发者伙伴】
**亲爱的Duix.Avatar开源社区成员:**
衷心感谢各位对Duix.Avatar数字人开源项目的热情关注与积极参与!我们注意到部分开发者在本地部署环节遇到挑战,为更好地满足不同场景需求,现同步告知两项并行服务方案:
| **项目** | **Duix.Avatar开源本地部署** | **数字人/克隆音API接口服务** |
| -------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| 使用方式 | 开源本地部署 | 极速克隆API服务 |
| 推荐 | 技术型用户 | 业务型用户 |
| 技术门槛 | 具备深度学习框架经验/追求深度定制化/希望参与社区共建的开发者 | 快速业务集成/专注上层应用开发/需企业级SLA保障的商用场景 |
| 硬件要求 | 需要购买GPU服务器 | 无需购买GPU服务器 |
| 定制化 | 可以根据自己的需求对代码进行修改和扩展,完全掌控软件的功能和行为 | 无法直接修改源代码,只能通过API提供的接口进行功能扩展,灵活性不如开源项目 |
| 技术支持 | 社区支持 | 动态扩容支持 + 专业技术响应团队 |
| 维护成本 | 维护成本高 | 维护简单 |
| 口形效果 | 效果可用 | 效果惊艳且更高清 |
| 商用授权 | 支持全球免费商用(用户量超过10万或年营收达1000万美元以上的企业需签署商业许可协议) | 可商用 |
| 迭代速度 | 更新慢,Bug修复依赖社区 | 最新模型/算法优先适用,问题修复快 |
我们始终秉持开源初心,API服务的推出旨在为不同需求的开发者提供更完整的解决方案矩阵。无论您选择哪种方式,都可随时通过 [ duix.com](https://duix.com/) 获取技术支持文档。期待与各位共同推动数字人技术的普惠发展!
## 【Duix.Avatar数字人技术交流】
扫码加入技术交流群
<img src="./README_zh.assets/cb10263a14cc826e22c2be4bcae01a89.jpg" width="50%">
## 【上线Coze平台】
Duix.Avatar 数字人克隆智能体和插件已成功上线至Coze 平台 ,无需复杂部署,即使是小白用户也能轻松上手直接使用。
戳这里直达Coze商店体验👉[硅基智能数字人克隆智能体](https://www.coze.cn/store/agent/7488696243959431206?bid=6ftfk9dtg0g12) | [硅基智能数字人克隆插件](https://www.coze.cn/store/plugin/7488926246634782746)
扫码观看操作视频
<img src="./README_zh.assets/coze-video.png" width="50%">
## 【开源共创·荣耀共享】
自从我们开源了Duix.Avatar,全球极客已在代码宇宙中点亮数字分身矩阵,每个commit都在重构未来!但独乐乐不如众乐乐——现在诚邀各路大神加入「开源共创计划」,让AI创意赋能每个人,一起推动中国AI舰队驶向星辰大海!
1. 共创内容方向
分享Duix.Avatar部署教程、优化指南、实战案例等高质量视频或文章(B站、抖音、小红书、公众号、知乎等)
2. 开源共创特供奖励池(真金白银奉上!)
(1)基础奖励
内容获得 20-100 点赞,获评【Duix.Avatar 大师奖】及 20 元现金大师🧧
内容获得 100+ 点赞,获评【Duix.Avatar 之神奖】及 50 元现金大神🧧
(2)特殊成就:
月度MVP将解锁开源名人堂数字勋章(永久上链)
3. 参与方式
你的创意发送至至客服小姐姐,加好友备注“姓名+999”
<img src="./README_zh.assets/2025-03-20_14-38-00.jpg" width="50%">
## 共创优秀作品展
[Duix.Avatar数字人一键启动,8G显存可用,模型体积10G,不需要100G硬盘空间,不需要d盘,基于Docker单镜像,硅基开源](https://www.bilibili.com/video/BV1awQqYZEqB/?spm_id_from=333.337.search-card.all.click&vd_source=618f44772c5dafb47317bb728505d79c)
[Ai数字人16-本地部署!最火爆开源数字人Duix.Avatar零基础手把手教学搭建教程,20%生成卡住解决方法,全套简化流程配套文件分享-T8 comfyui教程](https://www.bilibili.com/video/BV1ACQSYEErF/?spm_id_from=333.337.search-card.all.click&vd_source=618f44772c5dafb47317bb728505d79c)
[Duix.Avatar开源见证历史了!赛博打工人革命啊!](https://www.bilibili.com/video/BV1R3QpYsEY6/?spm_id_from=333.337.search-card.all.click&vd_source=618f44772c5dafb47317bb728505d79c)
[数字人项目Duix.Avatar本地部署教程](https://www.bilibili.com/video/BV1eWQ6YgEcp/?spm_id_from=333.337.search-card.all.click&vd_source=618f44772c5dafb47317bb728505d79c)
[真香!从付费到开源,AI数字人将开启新时代](http://xhslink.com/a/rQPYqoDSRih8)
[开源免费的数字人来了,不限次数,快速克隆](http://xhslink.com/a/tX3p5V5tajh8)
[AI数字人免费啦!GitHub爆火项目电脑就能跑](http://xhslink.com/a/8UT1kQ7vxjh8)
[最火爆免费AI数字人,Duix.Avatar V1.0.3,最新更新,一键整合包!口型效果超强,速度飞起,支持长视频、批量生成,8G显存可用!](https://www.bilibili.com/video/BV1SkoCYpEwh/?share_source=copy_web&vd_source=c38dcdb72a68f2a4e0b3c0f4f9a5a03c)
[【Duix.Avatar】一键包 windows直接运行 无需docker 硅基开源数字人](https://www.bilibili.com/video/BV1ZgovYGE3u/)
## 【部署流程】
<img src="./README.assets/2.png">
Duix.Avatar是一款专为Windows系统设计的全离线视频合成工具,它能够精确克隆您的外貌和声音,让您的形象数字化。您可以通过文字和语音驱动虚拟形象,进行视频制作。无需联网,保护隐私的同时,也能享受到便捷和高效的数字体验。
- 核心功能
- 精确外貌与声音克隆:运用先进的 AI 算法,高精度捕捉真人外貌特征,包括五官形状、面部轮廓等,构建逼真虚拟模型。同时,能精准克隆声音,捕捉并还原人声的细微特征,支持多种声音参数设置,可创造与原声高度相似的克隆效果。
- 文字和语音驱动虚拟形象:通过自然语言处理技术理解文本内容,将文字转换为自然流畅的语音,实现文字驱动虚拟形象。也可直接使用语音输入,让虚拟形象根据语音的节奏、语调等进行相应的动作和表情变化,使虚拟形象的表现更加自然、生动。
- 高效视频合成:将数字人的视频画面与声音高度同步,实现自然流畅的口型匹配,智能优化音视频同步效果。
- 多语言:脚本支持八种语言,英语、日语、韩语、中文、法语、德语、阿拉伯语和西班牙语。
- 显著优势
- 全离线操作:无需联网即可使用,有效保护用户隐私,让用户在安全、独立的环境中进行创作,避免数据在网络传输过程中可能存在的泄露风险。
- 简单易用:操作界面简洁直观,即使是没有任何技术背景的小白也能轻松上手,快速掌握软件的使用方法,轻松开启数字人创作之旅。
- 多模型支持:支持导入多个模型,并通过一键启动包进行管理,方便用户根据不同的创作需求和应用场景选择合适的模型。
- 技术支持
- 声音克隆技术:利用人工智能等先进技术,根据给定的声音样本生成与之相似或相同声音的技术,涵盖语音中的语境、语调、语速等。
- 自动语音识别:一种能将人类语音中的词汇内容转换为计算机可读输入,也就是转换为文本格式的技术,让计算机能够 “听懂” 人们说的话。
- 计算机视觉技术:用于视频合成中的视觉处理,包括面部识别、口型分析等,确保虚拟形象的口型与声音和文字内容相匹配。
## 依赖
1. Nodejs 18
2. Docker Image
- docker pull guiji2025/fun-asr
- docker pull guiji2025/fish-speech-ziming
- docker pull guiji2025/duix.avatar
## Windows 安装
### 前置条件
1. 必须有 D 盘:主要用于后续数字人、作品等数据存储
- 空闲空间要求:大于30G
2. C 盘:用于存储服务镜像文件
- 空闲空间要求:大于 100G
- 如果不足 100G,可以在安装完成docker后,在下图的位置重新选一个剩余空间大于 100G 的磁盘文件夹。

3. 系统要求:
- 目前支持 Windows 10 19042.1526 或更高版本
4. 推荐配置:
- CPU:第13代英特尔酷睿 i5-13400F
- 内存:32G及以上(必要)
- 显卡:rtx-4070
5. 确保有英伟达显卡,并正确安装显卡驱动(必要)
英伟达驱动下载地址 https://www.nvidia.cn/drivers/lookup/

### 安装 Windows Docker
1. 用wsl --list --verbose命令可以查看本机有没有安装过wsl,如下图就是已经安装过,无需再安装

> - 安装wsl的命令:`wsl --install`
> - 由于网络原因,可能失败,多试几次
> - 安装过程中需要设置新的用户名和密码,设置并记住
2. 用wsl --update更新wsl。

3. [下载 Docker Windows 版](https://www.docker.com/),根据机器 CPU 架构选择不同的安装包。
4. 出现这个界面表示安装成功。

5. 运行 Docker

6. 首次运行接受协议和跳过登录



### 安装服务端
采用Docker方式安装,docker-compose如下:
1. `docker-compose.yml`文件在`/deploy`目录下。
2. 在`/deploy`目录执行`docker-compose up -d`,<u>如果您想使用lite版本,请执行`docker-compose -f docker-compose-lite.yml up -d`</u>
3. 耐心等待一段时间(半小时左右,速度取决于网速),下载会消耗70G左右流量,注意连WIFI
4. 看到Dokcer 中出现三个服务,表示成功了(lite版本只有一个服务`Duix.Avatar-gen-video`)

### Nvidia 50系列显卡服务端部署方案
> 针对50系列显卡(经测试30,40系列cuda12.8用户也可以采用这个方案)
> 使用了torch官方的预览版本
```bash
cd /deploy
docker-compose -f docker-compose-5090.yml up -d
```
### 客户端
1. 直接下载[官方构建的安装包](https://github.com/duixcom/Duix.Avatar/releases)
2. 双击`Duix.Avatar-x.x.x-setup.exe`即可安装
## Ubuntu22.04 安装
### 推荐配置
- CPU:第13代英特尔酷睿 i5-13400F
- 内存:32G及以上(必要)
- 显卡:rtx-4070(确保有英伟达显卡,并正确安装显卡驱动)
- 硬盘:空闲空间大于 100G
### 安装 Docker
> 先用`docker --version`检查是否安装了docker,如果安装了,则跳过以下步骤
```bash
sudo apt update
sudo apt install docker.io
sudo apt install docker-compose
```
### 安装显卡驱动
1. 参考官方文档安装显卡驱动[https://www.nvidia.cn/drivers/lookup/](https://www.nvidia.cn/drivers/lookup/)
> 安装后执行`nvidia-smi`命令,如果显示显卡信息,则安装成功
2. 安装 NVIDIA Container Toolkit
NVIDIA Container Toolkit 是 Docker 使用 NVIDIA GPU 的必要工具。安装步骤如下:
- 添加 NVIDIA 包仓库:
```bash
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
```
- 更新包列表并安装工具包:
```bash
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
```
- 配置 Docker 使用 NVIDIA 运行时:
```bash
sudo nvidia-ctk runtime configure --runtime=docker
```
- 重启 Docker 服务:
```bash
sudo systemctl restart docker
```
### 安装服务端
```bash
cd /deploy
docker-compose -f docker-compose-linux.yml up -d
```
> 与windows上拉镜像一样,如果下载太慢,需要指定国内镜像源方法是在`/etc/docker/daemon.json`文件中添加:
>
> ```json
> {
> "registry-mirrors": [
> "https://hub.fast360.xyz",
> "https://hub.littlediary.cn",
> "https://docker.kejilion.pro",
> "https://docker.1panelproxy.com"
> ]
> }
> ```
> 上面四个镜像源,随着时间推移,可能会有变化,请自行搜索最新的镜像源
### 客户端
1. 直接下载[官方构建的安装包](https://github.com/duixcom/Duix.Avatar/releases)的Linux版本
2. 双击`Duix.Avatar-x.x.x.AppImage`即可启动,无需安装
> 提醒:在Ubuntu系统中,如果您使用`root`用户进入桌面,直接双击`Duix.Avatar-x.x.x.AppImage`可能运行不了,需要在命令行终端中执行`./Duix.Avatar-x.x.x.AppImage --no-sandbox`,加上`--no-sandbox`参数即可。
## 开放 API
我们开放了模特训练和视频合成的API,Docker 启动后会在本地暴露几个端口,通过`http://127.0.0.1`可以调用。
具体代码可以参考
- src/main/service/model.js
- src/main/service/video.js
- src/main/service/voice.js
### 模特训练
1. 将视频分离为静音视频 + 音频
2. 音频放到`D:\duix_avatar_data\voice\data`下
> `D:\duix_avatar_data\voice\data`是与`guiji2025/fish-speech-ziming`服务约定的,可以在docker-compose中修改
3. 调用`http://127.0.0.1:18180/v1/preprocess_and_tran`接口
> 参数示例:
>
> ```json
> {
> "format": ".wav",
> "reference_audio": "xxxxxx/xxxxx.wav",
> "lang": "zh"
> }
> ```
>
> 返回示例:
>
> ```json
> {
> "asr_format_audio_url": "xxxx/x/xxx/xxx.wav",
> "reference_audio_text": "xxxxxxxxxxxx"
> }
> ```
>
> **记录下返回结果后续音频合成需要用到**
### 音频合成
接口:`http://127.0.0.1:18180/v1/invoke`
```json
// 请求参数
{
"speaker": "{uuid}", // 一个UUID保持唯一即可
"text": "xxxxxxxxxx", // 需要合成的文本内容
"format": "wav", // 固定传参
"topP": 0.7, // 固定传参
"max_new_tokens": 1024, // 固定传参
"chunk_length": 100, // 固定传参
"repetition_penalty": 1.2, // 固定传
"temperature": 0.7, // 固定传参
"need_asr": false, // 固定传参
"streaming": false, // 固定传参
"is_fixed_seed": 0, // 固定传参
"is_norm": 0, // 固定传参
"reference_audio": "{voice.asr_format_audio_url}", // 上一步“模特训练”的返回值
"reference_text": "{voice.reference_audio_text}" // 上一步“模特训练”的返回值
}
```
### 视频合成
- 合成接口:`http://127.0.0.1:8383/easy/submit`
```json
// 请求参数
{
"audio_url": "{audioPath}", // 音频路径
"video_url": "{videoPath}", // 视频路径
"code": "{uuid}", // 唯一key
"chaofen": 0, // 固定值
"watermark_switch": 0, // 固定值
"pn": 1 // 固定值
}
```
- 进度查询:`http://127.0.0.1:8383/easy/query?code=${taskCode}`
> get 请求,参数`taskCode`是上面合成接口入参中的`code`
## 常见问题
- [常见问题](./doc/常见问题.md)
- [Duix.Avatar 开源数字人常见问题及解决办法](https://jexopm4t2a.feishu.cn/wiki/EjRPwux9DiNUtakOd1BcLQWEn3f))
## 提问前自查步骤
1. 三个服务是否都是Running状态

2. 确认机器上是有英伟达显卡且正确安装了驱动程序。
本项目所有算力都在本地,没有英伟达显卡或没有驱动程序,以上三个服务是启动不了的。
3. 确保服务端和客户端都更新到了最新版本,项目刚开源,社区很活跃,更新也比较频繁,说不定你的问题已经在新版中解决了。
- 服务端:到`/deploy`目录下重新执行`docker-compose up -d`
- 客户端:`pull`代码后重新`build`
4. [GitHub Issuse](https://github.com/duixcom/Duix.Avatar/issues)持续更新,每天都在解决和关闭问题单,经常看看,也许你的问题已经解决了。
## 提问模板
1. 问题描述
详细描述一下复现步骤,如有截图最好。
2. 提供报错日志
- 客户端日志获取方式

- 服务端日志
找到关键位置,或点开我们的三个Docker服务,如下图操作“复制”。

## 联系我们
```
技术交流 & 商务合作联系邮箱: james@duix.com
```
## 协议
[LICENSE](./LICENSE)
## 致谢
- ASR 基于 [fun-asr](https://github.com/modelscope/FunASR)
- TTS 基于 [fish-speech-ziming](https://github.com/fishaudio/fish-speech)
## Star History
[](https://www.star-history.com/#duixcom/Duix.Avatar&Date)
================================================
FILE: build/entitlements.mac.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
================================================
FILE: deploy/docker-compose-5090.yml
================================================
networks:
ai_network:
driver: bridge
services:
duix-avatar-tts:
image: guiji2025/fish-speech-5090
container_name: duix-avatar-tts
restart: always
runtime: nvidia
working_dir: /code
environment:
- NVIDIA_VISIBLE_DEVICES=0
- NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility,video,display
ports:
- '18180:8080'
volumes:
- d:/duix_avatar_data/voice/data:/code/data
command: /bin/bash -c "python tools/api_server.py --listen 0.0.0.0:8080"
networks:
- ai_network
duix-avatar-gen-video:
image: guiji2025/duix.avatar-5090
container_name: duix-avatar-gen-video
restart: always
runtime: nvidia
privileged: true
volumes:
- d:/duix_avatar_data/face2face:/code/data
environment:
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
shm_size: '8g'
ports:
- '8383:8383'
command: python /code/app_local.py
networks:
- ai_network
================================================
FILE: deploy/docker-compose-linux.yml
================================================
networks:
ai_network:
driver: bridge
services:
duix-avatar-tts:
image: guiji2025/fish-speech-ziming
container_name: duix-avatar-tts
restart: always
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=0
- NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility,video,display
ports:
- '18180:8080'
volumes:
- ~/duix_avatar_data/voice/data:/code/data
command: /bin/bash -c "/opt/conda/envs/python310/bin/python3 tools/api_server.py --listen 0.0.0.0:8080"
networks:
- ai_network
duix-avatar-asr:
image: guiji2025/fun-asr
container_name: duix-avatar-asr
restart: always
runtime: nvidia
privileged: true
working_dir: /workspace/FunASR/runtime
ports:
- '10095:10095'
command: sh /run.sh
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- ai_network
duix-avatar-gen-video:
image: guiji2025/duix.avatar
container_name: duix-avatar-gen-video
restart: always
runtime: nvidia
privileged: true
volumes:
- ~/duix_avatar_data/face2face:/code/data
environment:
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
shm_size: '8g'
ports:
- '8383:8383'
command: python /code/app_local.py
networks:
- ai_network
================================================
FILE: deploy/docker-compose-lite.yml
================================================
networks:
ai_network:
driver: bridge
services:
duix-avatar-gen-video:
image: guiji2025/duix.avatar
container_name: duix-avatar-gen-video
restart: always
runtime: nvidia
privileged: true
volumes:
- d:/duix_avatar_data/face2face:/code/data
environment:
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
shm_size: '8g'
ports:
- '8383:8383'
command: python /code/app_local.py
networks:
- ai_network
================================================
FILE: deploy/docker-compose.yml
================================================
networks:
ai_network:
driver: bridge
services:
duix-avatar-tts:
image: guiji2025/fish-speech-ziming
container_name: duix-avatar-tts
restart: always
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=0
- NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility,video,display
ports:
- '18180:8080'
volumes:
- d:/duix_avatar_data/voice/data:/code/data
command: /bin/bash -c "/opt/conda/envs/python310/bin/python3 tools/api_server.py --listen 0.0.0.0:8080"
networks:
- ai_network
duix-avatar-asr:
image: guiji2025/fun-asr
container_name: duix-avatar-asr
restart: always
runtime: nvidia
privileged: true
working_dir: /workspace/FunASR/runtime
ports:
- '10095:10095'
command: sh /run.sh
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- ai_network
duix-avatar-gen-video:
image: guiji2025/duix.avatar
container_name: duix-avatar-gen-video
restart: always
runtime: nvidia
privileged: true
volumes:
- d:/duix_avatar_data/face2face:/code/data
environment:
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
shm_size: '8g'
ports:
- '8383:8383'
command: python /code/app_local.py
networks:
- ai_network
================================================
FILE: dev-app-update.yml
================================================
provider: generic
url: https://example.com/auto-updates
updaterCacheDirName: Duix.Avatar-updater
================================================
FILE: doc/常见问题.md
================================================
# Duix.Avatar
## 自查步骤
1. 三个服务是否都是Running状态

2. 确认机器上是有英伟达显卡且正确安装了驱动程序。
本项目所有算力都在本地,没有英伟达显卡或没有驱动程序,以上三个服务是启动不了的。
3. 确保服务端和客户端都更新到了最新版本,项目刚开源,社区很活跃,更新也比较频繁,说不定你的问题已经在新版中解决了。
- 服务端:到`/deploy`目录下重新执行`docker-compose up -d`
- 客户端:`pull`代码后重新`build`
4. [GitHub Issuse](https://github.com/duixcom/Duix.Avatar/issues)持续更新,每天都在解决和关闭问题单,经常看看,也许你的问题已经解决了。
## 提问模板
1. 问题描述
详细描述一下复现步骤,如有截图最好。
2. 提供报错日志
- 客户端日志获取方式

- 服务端日志
找到关键位置,或点开我们的三个Docker服务,如下图操作“复制”。

## 常见问题
1. 执行`docker-compose up -d`连接失败,报错如下:
```shell
docker-compose up -d
[+] Running 3/3
✘ Duix.Avatar-asr Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while ... 15.1s
✘ Duix.Avatar-gen-video Error context canceled 15.1s
✘ Duix.Avatar-tts Error context canceled 15.1s
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
```

- Docker Hub 官方源连接不稳定,您需要打开VPN的全局模式
- 或者使用国内镜像源,如下图设置

```json
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.zhai.cm",
"https://a.ussh.net",
"https://hub.littlediary.cn",
"https://hub.rat.dev",
"https://atomhub.openatom.cn",
"https://docker.m.daocloud.io",
"https://docker.1ms.run"
]
}
```
2. 新增模特时报错如下图:

- 用于创建模特的视频必须有声音,且是人在说话,程序需要用这个声音来做声音克隆
3. heygen-tts 一直重启
https://github.com/duixcom/Duix.Avatar/issues/69
4. 定制模特报错 Connection refused
日志报错如下:
```shell
2025-03-13 14:38:34.476 | INFO | util.wav_util:format_wav:128 - wav标准格式化成功,/code/data/origin_audio/denoise_20250313223834179.wav -> /code/data/origin_audio/format_denoise_20250313223834179.wav
2025-03-13 14:38:34.478 | INFO | util.wav_util:clean_wav:156 - 音频清理完成,新文件路径:/code/data/origin_audio/denoise_20250313223834179.wav
2025-03-13 14:38:34.484 | INFO | util.wav_util:split_audio:95 - 原始音频小于20s,不在分割,直接返回, 时长为:10.587, 文件:/code/data/origin_audio/format_denoise_20250313223834179.wav
2025-03-13 14:38:34.484 | INFO | asr_fun:asr:102 - fun asr start, wav_path:/code/data/origin_audio/format_denoise_20250313223834179.wav
2025-03-13 14:38:34.487 | INFO | asr_fun:init_conn:40 - connect to url
2025-03-13 14:38:34.487 | WARNING | asr_fun:init_conn:53 - 建立funasr连接异常:[Errno 111] Connection refused
Traceback (most recent call last):
File "/code/asr_fun.py", line 41, in init_conn
self.websocket = create_connection(uri, ssl=ssl_context, sslopt=ssl_opt)
File "/opt/conda/envs/python310/lib/python3.10/site-packages/websocket/_core.py", line 646, in create_connection
websock.connect(url, **options)
File "/opt/conda/envs/python310/lib/python3.10/site-packages/websocket/_core.py", line 256, in connect
self.sock, addrs = connect(
File "/opt/conda/envs/python310/lib/python3.10/site-packages/websocket/_http.py", line 145, in connect
sock = _open_socket(addrinfo_list, options.sockopt, options.timeout)
File "/opt/conda/envs/python310/lib/python3.10/site-packages/websocket/_http.py", line 232, in _open_socket
raise err
File "/opt/conda/envs/python310/lib/python3.10/site-packages/websocket/_http.py", line 209, in _open_socket
sock.connect(address)
ConnectionRefusedError: [Errno 111] Connection refused
2025-03-13 14:38:43.357 | ERROR | tools.server.views_guiji:api_do_preprocess:118 - An error occurred: 'NoneType' object has no attribute 'send'
Stack trace:
Traceback (most recent call last):
File "/code/tools/server/views_guiji.py", line 105, in api_do_preprocess
rt = generate_reference_info(tts_item)
File "/code/tools/server/views_guiji.py", line 76, in generate_reference_info
text = asr_fun.asr(a_file)
File "/code/asr_fun.py", line 120, in asr
result: dict = rcg.close(timeout=3)
File "/code/asr_fun.py", line 86, in close
self.websocket.send(message)
AttributeError: 'NoneType' object has no attribute 'send'
2025-03-13 14:38:43.357 | INFO | tools.server.views_guiji:api_do_preprocess:121 - 训练返回结果:{'code': -1, 'msg': "'NoneType' object has no attribute 'send'"}
```
是因为Duix.Avatar-asr启动比较慢,服务端启动后等几分钟在进行克隆形象操作。如果机器内存太小(比如16G),可能启动不了。
================================================
FILE: electron-builder.yml
================================================
appId: com.Duix.Avatar.app
productName: Duix.Avatar
directories:
buildResources: build
files:
- '!**/.vscode/*'
- '!src/*'
- '!electron.vite.config.{js,ts,mjs,cjs}'
- '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'
asarUnpack:
- resources/**
win:
executableName: Duix.Avatar
nsis:
oneClick: false
allowElevation: true
perMachine: true
allowToChangeInstallationDirectory: true
artifactName: ${productName}-${version}-setup.${ext}
shortcutName: ${productName}
uninstallDisplayName: ${productName}
createDesktopShortcut: always
installerIcon: build/icon.ico
uninstallerIcon: build/icon.ico
mac:
entitlementsInherit: build/entitlements.mac.plist
extendInfo:
- NSCameraUsageDescription: Application requests access to the device's camera.
- NSMicrophoneUsageDescription: Application requests access to the device's microphone.
- NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder.
- NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.
notarize: false
dmg:
artifactName: ${productName}-${version}.${ext}
linux:
target:
- AppImage
# - snap
# - deb
maintainer: electronjs.org
category: Utility
icon: build/icon.png
desktop:
Name: ${productName}
Comment: ${productName}
GenericName: ${productName}
executableName: ${productName}
Icon: build/icon.png
Terminal: false
Type: Application
Categories: Utility
Keywords:
- ${productName}
- 数字人
- 视频生成
appImage:
artifactName: ${productName}-${version}.${ext}
npmRebuild: false
publish:
provider: generic
url: https://example.com/auto-updates
electronDownload:
mirror: https://npmmirror.com/mirrors/electron/
================================================
FILE: electron.vite.config.mjs
================================================
import { resolve } from 'path'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
main: {
plugins: [externalizeDepsPlugin()]
},
preload: {
plugins: [externalizeDepsPlugin()]
},
renderer: {
resolve: {
alias: {
'@renderer': resolve('src/renderer/src')
}
},
plugins: [vue()]
}
})
================================================
FILE: jsconfig.json
================================================
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@renderer/*": ["src/renderer/src/*"]
}
}
}
================================================
FILE: package.json
================================================
{
"name": "Duix.Avatar",
"version": "1.0.6",
"description": "Duix.Avatar is a free and open-source AI avatar project developed by Duix.com",
"main": "./out/main/index.js",
"author": "duix.com",
"homepage": "https://duix.com",
"scripts": {
"dev": "electron-vite dev --watch",
"start": "electron-vite preview",
"build": "electron-vite build",
"postinstall": "electron-builder install-app-deps",
"build:unpack": "npm run build && electron-builder --dir --config=electron-builder.yml",
"build:win": "npm run build && electron-builder --win --config=electron-builder.yml",
"build:linux": "npm run build && electron-builder --linux --config=electron-builder.yml",
"format": "prettier --write .",
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
},
"dependencies": {
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^3.0.0",
"axios": "^1.7.7",
"better-sqlite3": "^11.5.0",
"dayjs": "^1.11.13",
"electron-log": "^5.2.2",
"electron-updater": "^6.1.7",
"fluent-ffmpeg": "^2.1.3",
"lodash-es": "^4.17.21",
"pinia": "^2.2.6",
"tdesign-icons-vue-next": "^0.3.3",
"tdesign-vue-next": "^1.10.3",
"vue-i18n": "^10.0.5",
"vue-router": "^4.4.5"
},
"devDependencies": {
"@electron-toolkit/eslint-config": "^1.0.2",
"@rushstack/eslint-patch": "^1.10.3",
"@vitejs/plugin-vue": "^5.0.5",
"@vue/eslint-config-prettier": "^9.0.0",
"electron": "^33.0.0",
"electron-builder": "^24.13.3",
"electron-vite": "^2.3.0",
"eslint": "^8.57.0",
"eslint-plugin-vue": "^9.26.0",
"less": "^4.2.0",
"prettier": "^3.3.2",
"raw-loader": "^4.0.2",
"vite": "^5.3.5",
"vue": "^3.5.13"
}
}
================================================
FILE: resources/ffmpeg/linux-amd64/GPLv3.txt
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: resources/ffmpeg/linux-amd64/ffmpeg
================================================
[File too large to display: 76.1 MB]
================================================
FILE: resources/ffmpeg/linux-amd64/ffprobe
================================================
[File too large to display: 76.0 MB]
================================================
FILE: resources/ffmpeg/linux-amd64/manpages/ffmpeg-all.txt
================================================
FFMPEG-ALL(1) FFMPEG-ALL(1)
NAME
ffmpeg - ffmpeg media converter
SYNOPSIS
ffmpeg [global_options] {[input_file_options] -i input_url} ...
{[output_file_options] output_url} ...
DESCRIPTION
ffmpeg is a universal media converter. It can read a wide variety of
inputs - including live grabbing/recording devices - filter, and
transcode them into a plethora of output formats.
ffmpeg reads from an arbitrary number of input "files" (which can be
regular files, pipes, network streams, grabbing devices, etc.),
specified by the "-i" option, and writes to an arbitrary number of
output "files", which are specified by a plain output url. Anything
found on the command line which cannot be interpreted as an option is
considered to be an output url.
Each input or output url can, in principle, contain any number of
streams of different types (video/audio/subtitle/attachment/data). The
allowed number and/or types of streams may be limited by the container
format. Selecting which streams from which inputs will go into which
output is either done automatically or with the "-map" option (see the
Stream selection chapter).
To refer to input files in options, you must use their indices
(0-based). E.g. the first input file is 0, the second is 1, etc.
Similarly, streams within a file are referred to by their indices. E.g.
"2:3" refers to the fourth stream in the third input file. Also see the
Stream specifiers chapter.
As a general rule, options are applied to the next specified file.
Therefore, order is important, and you can have the same option on the
command line multiple times. Each occurrence is then applied to the
next input or output file. Exceptions from this rule are the global
options (e.g. verbosity level), which should be specified first.
Do not mix input and output files -- first specify all input files,
then all output files. Also do not mix options which belong to
different files. All options apply ONLY to the next input or output
file and are reset between files.
Some simple examples follow.
o Convert an input media file to a different format, by re-encoding
media streams:
ffmpeg -i input.avi output.mp4
o Set the video bitrate of the output file to 64 kbit/s:
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.mp4
o Force the frame rate of the output file to 24 fps:
ffmpeg -i input.avi -r 24 output.mp4
o Force the frame rate of the input file (valid for raw formats only)
to 1 fps and the frame rate of the output file to 24 fps:
ffmpeg -r 1 -i input.m2v -r 24 output.mp4
The format option may be needed for raw input files.
DETAILED DESCRIPTION
The transcoding process in ffmpeg for each output can be described by
the following diagram:
_______ ______________
| | | |
| input | demuxer | encoded data | decoder
| file | ---------> | packets | -----+
|_______| |______________| |
v
_________
| |
| decoded |
| frames |
|_________|
________ ______________ |
| | | | |
| output | <-------- | encoded data | <----+
| file | muxer | packets | encoder
|________| |______________|
ffmpeg calls the libavformat library (containing demuxers) to read
input files and get packets containing encoded data from them. When
there are multiple input files, ffmpeg tries to keep them synchronized
by tracking lowest timestamp on any active input stream.
Encoded packets are then passed to the decoder (unless streamcopy is
selected for the stream, see further for a description). The decoder
produces uncompressed frames (raw video/PCM audio/...) which can be
processed further by filtering (see next section). After filtering, the
frames are passed to the encoder, which encodes them and outputs
encoded packets. Finally, those are passed to the muxer, which writes
the encoded packets to the output file.
Filtering
Before encoding, ffmpeg can process raw audio and video frames using
filters from the libavfilter library. Several chained filters form a
filter graph. ffmpeg distinguishes between two types of filtergraphs:
simple and complex.
Simple filtergraphs
Simple filtergraphs are those that have exactly one input and output,
both of the same type. In the above diagram they can be represented by
simply inserting an additional step between decoding and encoding:
_________ ______________
| | | |
| decoded | | encoded data |
| frames |\ _ | packets |
|_________| \ /||______________|
\ __________ /
simple _\|| | / encoder
filtergraph | filtered |/
| frames |
|__________|
Simple filtergraphs are configured with the per-stream -filter option
(with -vf and -af aliases for video and audio respectively). A simple
filtergraph for video can look for example like this:
_______ _____________ _______ ________
| | | | | | | |
| input | ---> | deinterlace | ---> | scale | ---> | output |
|_______| |_____________| |_______| |________|
Note that some filters change frame properties but not frame contents.
E.g. the "fps" filter in the example above changes number of frames,
but does not touch the frame contents. Another example is the "setpts"
filter, which only sets timestamps and otherwise passes the frames
unchanged.
Complex filtergraphs
Complex filtergraphs are those which cannot be described as simply a
linear processing chain applied to one stream. This is the case, for
example, when the graph has more than one input and/or output, or when
output stream type is different from input. They can be represented
with the following diagram:
_________
| |
| input 0 |\ __________
|_________| \ | |
\ _________ /| output 0 |
\ | | / |__________|
_________ \| complex | /
| | | |/
| input 1 |---->| filter |\
|_________| | | \ __________
/| graph | \ | |
/ | | \| output 1 |
_________ / |_________| |__________|
| | /
| input 2 |/
|_________|
Complex filtergraphs are configured with the -filter_complex option.
Note that this option is global, since a complex filtergraph, by its
nature, cannot be unambiguously associated with a single stream or
file.
The -lavfi option is equivalent to -filter_complex.
A trivial example of a complex filtergraph is the "overlay" filter,
which has two video inputs and one video output, containing one video
overlaid on top of the other. Its audio counterpart is the "amix"
filter.
Stream copy
Stream copy is a mode selected by supplying the "copy" parameter to the
-codec option. It makes ffmpeg omit the decoding and encoding step for
the specified stream, so it does only demuxing and muxing. It is useful
for changing the container format or modifying container-level
metadata. The diagram above will, in this case, simplify to this:
_______ ______________ ________
| | | | | |
| input | demuxer | encoded data | muxer | output |
| file | ---------> | packets | -------> | file |
|_______| |______________| |________|
Since there is no decoding or encoding, it is very fast and there is no
quality loss. However, it might not work in some cases because of many
factors. Applying filters is obviously also impossible, since filters
work on uncompressed data.
Loopback decoders
While decoders are normally associated with demuxer streams, it is also
possible to create "loopback" decoders that decode the output from some
encoder and allow it to be fed back to complex filtergraphs. This is
done with the "-dec" directive, which takes as a parameter the index of
the output stream that should be decoded. Every such directive creates
a new loopback decoder, indexed with successive integers starting at
zero. These indices should then be used to refer to loopback decoders
in complex filtergraph link labels, as described in the documentation
for -filter_complex.
E.g. the following example:
ffmpeg -i INPUT \
-map 0:v:0 -c:v libx264 -crf 45 -f null - \
-dec 0:0 -filter_complex '[0:v][dec:0]hstack[stack]' \
-map '[stack]' -c:v ffv1 OUTPUT
reads an input video and
o (line 2) encodes it with "libx264" at low quality;
o (line 3) decodes this encoded stream and places it side by side
with the original input video;
o (line 4) combined video is then losslessly encoded and written into
OUTPUT.
STREAM SELECTION
ffmpeg provides the "-map" option for manual control of stream
selection in each output file. Users can skip "-map" and let ffmpeg
perform automatic stream selection as described below. The "-vn / -an /
-sn / -dn" options can be used to skip inclusion of video, audio,
subtitle and data streams respectively, whether manually mapped or
automatically selected, except for those streams which are outputs of
complex filtergraphs.
Description
The sub-sections that follow describe the various rules that are
involved in stream selection. The examples that follow next show how
these rules are applied in practice.
While every effort is made to accurately reflect the behavior of the
program, FFmpeg is under continuous development and the code may have
changed since the time of this writing.
Automatic stream selection
In the absence of any map options for a particular output file, ffmpeg
inspects the output format to check which type of streams can be
included in it, viz. video, audio and/or subtitles. For each acceptable
stream type, ffmpeg will pick one stream, when available, from among
all the inputs.
It will select that stream based upon the following criteria:
o for video, it is the stream with the highest resolution,
o for audio, it is the stream with the most channels,
o for subtitles, it is the first subtitle stream found but there's a
caveat. The output format's default subtitle encoder can be either
text-based or image-based, and only a subtitle stream of the same
type will be chosen.
In the case where several streams of the same type rate equally, the
stream with the lowest index is chosen.
Data or attachment streams are not automatically selected and can only
be included using "-map".
Manual stream selection
When "-map" is used, only user-mapped streams are included in that
output file, with one possible exception for filtergraph outputs
described below.
Complex filtergraphs
If there are any complex filtergraph output streams with unlabeled
pads, they will be added to the first output file. This will lead to a
fatal error if the stream type is not supported by the output format.
In the absence of the map option, the inclusion of these streams leads
to the automatic stream selection of their types being skipped. If map
options are present, these filtergraph streams are included in addition
to the mapped streams.
Complex filtergraph output streams with labeled pads must be mapped
once and exactly once.
Stream handling
Stream handling is independent of stream selection, with an exception
for subtitles described below. Stream handling is set via the "-codec"
option addressed to streams within a specific output file. In
particular, codec options are applied by ffmpeg after the stream
selection process and thus do not influence the latter. If no "-codec"
option is specified for a stream type, ffmpeg will select the default
encoder registered by the output file muxer.
An exception exists for subtitles. If a subtitle encoder is specified
for an output file, the first subtitle stream found of any type, text
or image, will be included. ffmpeg does not validate if the specified
encoder can convert the selected stream or if the converted stream is
acceptable within the output format. This applies generally as well:
when the user sets an encoder manually, the stream selection process
cannot check if the encoded stream can be muxed into the output file.
If it cannot, ffmpeg will abort and all output files will fail to be
processed.
Examples
The following examples illustrate the behavior, quirks and limitations
of ffmpeg's stream selection methods.
They assume the following three input files.
input file 'A.avi'
stream 0: video 640x360
stream 1: audio 2 channels
input file 'B.mp4'
stream 0: video 1920x1080
stream 1: audio 2 channels
stream 2: subtitles (text)
stream 3: audio 5.1 channels
stream 4: subtitles (text)
input file 'C.mkv'
stream 0: video 1280x720
stream 1: audio 2 channels
stream 2: subtitles (image)
Example: automatic stream selection
ffmpeg -i A.avi -i B.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov
There are three output files specified, and for the first two, no
"-map" options are set, so ffmpeg will select streams for these two
files automatically.
out1.mkv is a Matroska container file and accepts video, audio and
subtitle streams, so ffmpeg will try to select one of each type.For
video, it will select "stream 0" from B.mp4, which has the highest
resolution among all the input video streams.For audio, it will select
"stream 3" from B.mp4, since it has the greatest number of channels.For
subtitles, it will select "stream 2" from B.mp4, which is the first
subtitle stream from among A.avi and B.mp4.
out2.wav accepts only audio streams, so only "stream 3" from B.mp4 is
selected.
For out3.mov, since a "-map" option is set, no automatic stream
selection will occur. The "-map 1:a" option will select all audio
streams from the second input B.mp4. No other streams will be included
in this output file.
For the first two outputs, all included streams will be transcoded. The
encoders chosen will be the default ones registered by each output
format, which may not match the codec of the selected input streams.
For the third output, codec option for audio streams has been set to
"copy", so no decoding-filtering-encoding operations will occur, or can
occur. Packets of selected streams shall be conveyed from the input
file and muxed within the output file.
Example: automatic subtitles selection
ffmpeg -i C.mkv out1.mkv -c:s dvdsub -an out2.mkv
Although out1.mkv is a Matroska container file which accepts subtitle
streams, only a video and audio stream shall be selected. The subtitle
stream of C.mkv is image-based and the default subtitle encoder of the
Matroska muxer is text-based, so a transcode operation for the
subtitles is expected to fail and hence the stream isn't selected.
However, in out2.mkv, a subtitle encoder is specified in the command
and so, the subtitle stream is selected, in addition to the video
stream. The presence of "-an" disables audio stream selection for
out2.mkv.
Example: unlabeled filtergraph outputs
ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt
A filtergraph is setup here using the "-filter_complex" option and
consists of a single video filter. The "overlay" filter requires
exactly two video inputs, but none are specified, so the first two
available video streams are used, those of A.avi and C.mkv. The output
pad of the filter has no label and so is sent to the first output file
out1.mp4. Due to this, automatic selection of the video stream is
skipped, which would have selected the stream in B.mp4. The audio
stream with most channels viz. "stream 3" in B.mp4, is chosen
automatically. No subtitle stream is chosen however, since the MP4
format has no default subtitle encoder registered, and the user hasn't
specified a subtitle encoder.
The 2nd output file, out2.srt, only accepts text-based subtitle
streams. So, even though the first subtitle stream available belongs to
C.mkv, it is image-based and hence skipped. The selected stream,
"stream 2" in B.mp4, is the first text-based subtitle stream.
Example: labeled filtergraph outputs
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
-map '[outv]' -an out1.mp4 \
out2.mkv \
-map '[outv]' -map 1:a:0 out3.mkv
The above command will fail, as the output pad labelled "[outv]" has
been mapped twice. None of the output files shall be processed.
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
-an out1.mp4 \
out2.mkv \
-map 1:a:0 out3.mkv
This command above will also fail as the hue filter output has a label,
"[outv]", and hasn't been mapped anywhere.
The command should be modified as follows,
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \
-map '[outv1]' -an out1.mp4 \
out2.mkv \
-map '[outv2]' -map 1:a:0 out3.mkv
The video stream from B.mp4 is sent to the hue filter, whose output is
cloned once using the split filter, and both outputs labelled. Then a
copy each is mapped to the first and third output files.
The overlay filter, requiring two video inputs, uses the first two
unused video streams. Those are the streams from A.avi and C.mkv. The
overlay output isn't labelled, so it is sent to the first output file
out1.mp4, regardless of the presence of the "-map" option.
The aresample filter is sent the first unused audio stream, that of
A.avi. Since this filter output is also unlabelled, it too is mapped to
the first output file. The presence of "-an" only suppresses automatic
or manual stream selection of audio streams, not outputs sent from
filtergraphs. Both these mapped streams shall be ordered before the
mapped stream in out1.mp4.
The video, audio and subtitle streams mapped to "out2.mkv" are entirely
determined by automatic stream selection.
out3.mkv consists of the cloned video output from the hue filter and
the first audio stream from B.mp4.
OPTIONS
All the numerical options, if not specified otherwise, accept a string
representing a number as input, which may be followed by one of the SI
unit prefixes, for example: 'K', 'M', or 'G'.
If 'i' is appended to the SI unit prefix, the complete prefix will be
interpreted as a unit prefix for binary multiples, which are based on
powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit
prefix multiplies the value by 8. This allows using, for example: 'KB',
'MiB', 'G' and 'B' as number suffixes.
Options which do not take arguments are boolean options, and set the
corresponding value to true. They can be set to false by prefixing the
option name with "no". For example using "-nofoo" will set the boolean
option with name "foo" to false.
Options that take arguments support a special syntax where the argument
given on the command line is interpreted as a path to the file from
which the actual argument value is loaded. To use this feature, add a
forward slash '/' immediately before the option name (after the leading
dash). E.g.
ffmpeg -i INPUT -/filter:v filter.script OUTPUT
will load a filtergraph description from the file named filter.script.
Stream specifiers
Some options are applied per-stream, e.g. bitrate or codec. Stream
specifiers are used to precisely specify which stream(s) a given option
belongs to.
A stream specifier is a string generally appended to the option name
and separated from it by a colon. E.g. "-codec:a:1 ac3" contains the
"a:1" stream specifier, which matches the second audio stream.
Therefore, it would select the ac3 codec for the second audio stream.
A stream specifier can match several streams, so that the option is
applied to all of them. E.g. the stream specifier in "-b:a 128k"
matches all audio streams.
An empty stream specifier matches all streams. For example, "-codec
copy" or "-codec: copy" would copy all the streams without reencoding.
Possible forms of stream specifiers are:
stream_index
Matches the stream with this index. E.g. "-threads:1 4" would set
the thread count for the second stream to 4. If stream_index is
used as an additional stream specifier (see below), then it selects
stream number stream_index from the matching streams. Stream
numbering is based on the order of the streams as detected by
libavformat except when a stream group specifier or program ID is
also specified. In this case it is based on the ordering of the
streams in the group or program.
stream_type[:additional_stream_specifier]
stream_type is one of following: 'v' or 'V' for video, 'a' for
audio, 's' for subtitle, 'd' for data, and 't' for attachments. 'v'
matches all video streams, 'V' only matches video streams which are
not attached pictures, video thumbnails or cover arts. If
additional_stream_specifier is used, then it matches streams which
both have this type and match the additional_stream_specifier.
Otherwise, it matches all streams of the specified type.
g:group_specifier[:additional_stream_specifier]
Matches streams which are in the group with the specifier
group_specifier. if additional_stream_specifier is used, then it
matches streams which both are part of the group and match the
additional_stream_specifier. group_specifier may be one of the
following:
group_index
Match the stream with this group index.
#group_id or i:group_id
Match the stream with this group id.
p:program_id[:additional_stream_specifier]
Matches streams which are in the program with the id program_id. If
additional_stream_specifier is used, then it matches streams which
both are part of the program and match the
additional_stream_specifier.
#stream_id or i:stream_id
Match the stream by stream id (e.g. PID in MPEG-TS container).
m:key[:value]
Matches streams with the metadata tag key having the specified
value. If value is not given, matches streams that contain the
given tag with any value.
u Matches streams with usable configuration, the codec must be
defined and the essential information such as video dimension or
audio sample rate must be present.
Note that in ffmpeg, matching by metadata will only work properly
for input files.
Generic options
These options are shared amongst the ff* tools.
-L Show license.
-h, -?, -help, --help [arg]
Show help. An optional parameter may be specified to print help
about a specific item. If no argument is specified, only basic (non
advanced) tool options are shown.
Possible values of arg are:
long
Print advanced tool options in addition to the basic tool
options.
full
Print complete list of options, including shared and private
options for encoders, decoders, demuxers, muxers, filters, etc.
decoder=decoder_name
Print detailed information about the decoder named
decoder_name. Use the -decoders option to get a list of all
decoders.
encoder=encoder_name
Print detailed information about the encoder named
encoder_name. Use the -encoders option to get a list of all
encoders.
demuxer=demuxer_name
Print detailed information about the demuxer named
demuxer_name. Use the -formats option to get a list of all
demuxers and muxers.
muxer=muxer_name
Print detailed information about the muxer named muxer_name.
Use the -formats option to get a list of all muxers and
demuxers.
filter=filter_name
Print detailed information about the filter named filter_name.
Use the -filters option to get a list of all filters.
bsf=bitstream_filter_name
Print detailed information about the bitstream filter named
bitstream_filter_name. Use the -bsfs option to get a list of
all bitstream filters.
protocol=protocol_name
Print detailed information about the protocol named
protocol_name. Use the -protocols option to get a list of all
protocols.
-version
Show version.
-buildconf
Show the build configuration, one option per line.
-formats
Show available formats (including devices).
-demuxers
Show available demuxers.
-muxers
Show available muxers.
-devices
Show available devices.
-codecs
Show all codecs known to libavcodec.
Note that the term 'codec' is used throughout this documentation as
a shortcut for what is more correctly called a media bitstream
format.
-decoders
Show available decoders.
-encoders
Show all available encoders.
-bsfs
Show available bitstream filters.
-protocols
Show available protocols.
-filters
Show available libavfilter filters.
-pix_fmts
Show available pixel formats.
-sample_fmts
Show available sample formats.
-layouts
Show channel names and standard channel layouts.
-dispositions
Show stream dispositions.
-colors
Show recognized color names.
-sources device[,opt1=val1[,opt2=val2]...]
Show autodetected sources of the input device. Some devices may
provide system-dependent source names that cannot be autodetected.
The returned list cannot be assumed to be always complete.
ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]
Show autodetected sinks of the output device. Some devices may
provide system-dependent sink names that cannot be autodetected.
The returned list cannot be assumed to be always complete.
ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [flags+]loglevel | -v [flags+]loglevel
Set logging level and flags used by the library.
The optional flags prefix can consist of the following values:
repeat
Indicates that repeated log output should not be compressed to
the first line and the "Last message repeated n times" line
will be omitted.
level
Indicates that log output should add a "[level]" prefix to each
message line. This can be used as an alternative to log
coloring, e.g. when dumping the log to file.
Flags can also be used alone by adding a '+'/'-' prefix to
set/reset a single flag without affecting other flags or changing
loglevel. When setting both flags and loglevel, a '+' separator is
expected between the last flags value and before loglevel.
loglevel is a string or a number containing one of the following
values:
quiet, -8
Show nothing at all; be silent.
panic, 0
Only show fatal errors which could lead the process to crash,
such as an assertion failure. This is not currently used for
anything.
fatal, 8
Only show fatal errors. These are errors after which the
process absolutely cannot continue.
error, 16
Show all errors, including ones which can be recovered from.
warning, 24
Show all warnings and errors. Any message related to possibly
incorrect or unexpected events will be shown.
info, 32
Show informative messages during processing. This is in
addition to warnings and errors. This is the default value.
verbose, 40
Same as "info", except more verbose.
debug, 48
Show everything, including debugging information.
trace, 56
For example to enable repeated log output, add the "level" prefix,
and set loglevel to "verbose":
ffmpeg -loglevel repeat+level+verbose -i input output
Another example that enables repeated log output without affecting
current state of "level" prefix flag or loglevel:
ffmpeg [...] -loglevel +repeat
By default the program logs to stderr. If coloring is supported by
the terminal, colors are used to mark errors and warnings. Log
coloring can be disabled setting the environment variable
AV_LOG_FORCE_NOCOLOR, or can be forced setting the environment
variable AV_LOG_FORCE_COLOR.
-report
Dump full command line and log output to a file named
"program-YYYYMMDD-HHMMSS.log" in the current directory. This file
can be useful for bug reports. It also implies "-loglevel debug".
Setting the environment variable FFREPORT to any value has the same
effect. If the value is a ':'-separated key=value sequence, these
options will affect the report; option values must be escaped if
they contain special characters or the options delimiter ':' (see
the ``Quoting and escaping'' section in the ffmpeg-utils manual).
The following options are recognized:
file
set the file name to use for the report; %p is expanded to the
name of the program, %t is expanded to a timestamp, "%%" is
expanded to a plain "%"
level
set the log verbosity level using a numerical value (see
"-loglevel").
For example, to output a report to a file named ffreport.log using
a log level of 32 (alias for log level "info"):
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
Errors in parsing the environment variable are not fatal, and will
not appear in the report.
-hide_banner
Suppress printing banner.
All FFmpeg tools will normally show a copyright notice, build
options and library versions. This option can be used to suppress
printing this information.
-cpuflags flags (global)
Allows setting and clearing cpu flags. This option is intended for
testing. Do not use it unless you know what you're doing.
ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...
Possible flags for this option are:
x86
mmx
mmxext
sse
sse2
sse2slow
sse3
sse3slow
ssse3
atom
sse4.1
sse4.2
avx
avx2
xop
fma3
fma4
3dnow
3dnowext
bmi1
bmi2
cmov
ARM
armv5te
armv6
armv6t2
vfp
vfpv3
neon
setend
AArch64
armv8
vfp
neon
PowerPC
altivec
Specific Processors
pentium2
pentium3
pentium4
k6
k62
athlon
athlonxp
k8
-cpucount count (global)
Override detection of CPU count. This option is intended for
testing. Do not use it unless you know what you're doing.
ffmpeg -cpucount 2
-max_alloc bytes
Set the maximum size limit for allocating a block on the heap by
ffmpeg's family of malloc functions. Exercise extreme caution when
using this option. Don't use if you do not understand the full
consequence of doing so. Default is INT_MAX.
AVOptions
These options are provided directly by the libavformat, libavdevice and
libavcodec libraries. To see the list of available AVOptions, use the
-help option. They are separated into two categories:
generic
These options can be set for any container, codec or device.
Generic options are listed under AVFormatContext options for
containers/devices and under AVCodecContext options for codecs.
private
These options are specific to the given container, device or codec.
Private options are listed under their corresponding
containers/devices/codecs.
For example to write an ID3v2.3 header instead of a default ID3v2.4 to
an MP3 file, use the id3v2_version private option of the MP3 muxer:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
All codec AVOptions are per-stream, and thus a stream specifier should
be attached to them:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
In the above example, a multichannel audio stream is mapped twice for
output. The first instance is encoded with codec ac3 and bitrate 640k.
The second instance is downmixed to 2 channels and encoded with codec
aac. A bitrate of 128k is specified for it using absolute index of the
output stream.
Note: the -nooption syntax cannot be used for boolean AVOptions, use
-option 0/-option 1.
Note: the old undocumented way of specifying per-stream AVOptions by
prepending v/a/s to the options name is now obsolete and will be
removed soon.
Main options
-f fmt (input/output)
Force input or output file format. The format is normally auto
detected for input files and guessed from the file extension for
output files, so this option is not needed in most cases.
-i url (input)
input file url
-y (global)
Overwrite output files without asking.
-n (global)
Do not overwrite output files, and exit immediately if a specified
output file already exists.
-stream_loop number (input)
Set number of times input stream shall be looped. Loop 0 means no
loop, loop -1 means infinite loop.
-recast_media (global)
Allow forcing a decoder of a different media type than the one
detected or designated by the demuxer. Useful for decoding media
data muxed as data streams.
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
Select an encoder (when used before an output file) or a decoder
(when used before an input file) for one or more streams. codec is
the name of a decoder/encoder or a special value "copy" (output
only) to indicate that the stream is not to be re-encoded.
For example
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
encodes all video streams with libx264 and copies all audio
streams.
For each stream, the last matching "c" option is applied, so
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
will copy all the streams except the second video, which will be
encoded with libx264, and the 138th audio, which will be encoded
with libvorbis.
-t duration (input/output)
When used as an input option (before "-i"), limit the duration of
data read from the input file.
When used as an output option (before an output url), stop writing
the output after its duration reaches duration.
duration must be a time duration specification, see the Time
duration section in the ffmpeg-utils(1) manual.
-to and -t are mutually exclusive and -t has priority.
-to position (input/output)
Stop writing the output or reading the input at position. position
must be a time duration specification, see the Time duration
section in the ffmpeg-utils(1) manual.
-to and -t are mutually exclusive and -t has priority.
-fs limit_size (output)
Set the file size limit, expressed in bytes. No further chunk of
bytes is written after the limit is exceeded. The size of the
output file is slightly more than the requested file size.
-ss position (input/output)
When used as an input option (before "-i"), seeks in this input
file to position. Note that in most formats it is not possible to
seek exactly, so ffmpeg will seek to the closest seek point before
position. When transcoding and -accurate_seek is enabled (the
default), this extra segment between the seek point and position
will be decoded and discarded. When doing stream copy or when
-noaccurate_seek is used, it will be preserved.
When used as an output option (before an output url), decodes but
discards input until the timestamps reach position.
position must be a time duration specification, see the Time
duration section in the ffmpeg-utils(1) manual.
-sseof position (input)
Like the "-ss" option but relative to the "end of file". That is
negative values are earlier in the file, 0 is at EOF.
-isync input_index (input)
Assign an input as a sync source.
This will take the difference between the start times of the target
and reference inputs and offset the timestamps of the target file
by that difference. The source timestamps of the two inputs should
derive from the same clock source for expected results. If "copyts"
is set then "start_at_zero" must also be set. If either of the
inputs has no starting timestamp then no sync adjustment is made.
Acceptable values are those that refer to a valid ffmpeg input
index. If the sync reference is the target index itself or -1, then
no adjustment is made to target timestamps. A sync reference may
not itself be synced to any other input.
Default value is -1.
-itsoffset offset (input)
Set the input time offset.
offset must be a time duration specification, see the Time duration
section in the ffmpeg-utils(1) manual.
The offset is added to the timestamps of the input files.
Specifying a positive offset means that the corresponding streams
are delayed by the time duration specified in offset.
-itsscale scale (input,per-stream)
Rescale input timestamps. scale should be a floating point number.
-timestamp date (output)
Set the recording timestamp in the container.
date must be a date specification, see the Date section in the
ffmpeg-utils(1) manual.
-metadata[:metadata_specifier] key=value (output,per-metadata)
Set a metadata key/value pair.
An optional metadata_specifier may be given to set metadata on
streams, chapters or programs. See "-map_metadata" documentation
for details.
This option overrides metadata set with "-map_metadata". It is also
possible to delete metadata by using an empty value.
For example, for setting the title in the output file:
ffmpeg -i in.avi -metadata title="my title" out.flv
To set the language of the first audio stream:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
-disposition[:stream_specifier] value (output,per-stream)
Sets the disposition for a stream.
By default, the disposition is copied from the input stream, unless
the output stream this option applies to is fed by a complex
filtergraph - in that case the disposition is unset by default.
value is a sequence of items separated by '+' or '-'. The first
item may also be prefixed with '+' or '-', in which case this
option modifies the default value. Otherwise (the first item is not
prefixed) this options overrides the default value. A '+' prefix
adds the given disposition, '-' removes it. It is also possible to
clear the disposition by setting it to 0.
If no "-disposition" options were specified for an output file,
ffmpeg will automatically set the 'default' disposition on the
first stream of each type, when there are multiple streams of this
type in the output file and no stream of that type is already
marked as default.
The "-dispositions" option lists the known dispositions.
For example, to make the second audio stream the default stream:
ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv
To make the second subtitle stream the default stream and remove
the default disposition from the first subtitle stream:
ffmpeg -i in.mkv -c copy -disposition:s:0 0 -disposition:s:1 default out.mkv
To add an embedded cover/thumbnail:
ffmpeg -i in.mp4 -i IMAGE -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4
Not all muxers support embedded thumbnails, and those who do, only
support a few formats, like JPEG or PNG.
-program
[title=title:][program_num=program_num:]st=stream[:st=stream...]
(output)
Creates a program with the specified title, program_num and adds
the specified stream(s) to it.
-stream_group
type=type:st=stream[:st=stream][:stg=stream_group][:id=stream_group_id...]
(output)
Creates a stream group of the specified type, stream_group_id and
adds the specified stream(s) and/or previously defined
stream_group(s) to it.
type can be one of the following:
iamf_audio_element
Groups streams that belong to the same IAMF Audio Element
For this group type, the following options are available
audio_element_type
The Audio Element type. The following values are supported:
channel
Scalable channel audio representation
scene
Ambisonics representation
demixing
Demixing information used to reconstruct a scalable channel
audio representation. This option must be separated from
the rest with a ',', and takes the following key=value
options
parameter_id
An identifier parameters blocks in frames may refer to
dmixp_mode
A pre-defined combination of demixing parameters
recon_gain
Recon gain information used to reconstruct a scalable
channel audio representation. This option must be
separated from the rest with a ',', and takes the following
key=value options
parameter_id
An identifier parameters blocks in frames may refer to
layer
A layer defining a Channel Layout in the Audio Element.
This option must be separated from the rest with a ','.
Several ',' separated entries can be defined, and at least
one must be set.
It takes the following ":"-separated key=value options
ch_layout
The layer's channel layout
flags
The following flags are available:
recon_gain
Wether to signal if recon_gain is present as
metadata in parameter blocks within frames
output_gain
output_gain_flags
Which channels output_gain applies to. The following
flags are available:
FL
FR
BL
BR
TFL
TFR
ambisonics_mode
The ambisonics mode. This has no effect if
audio_element_type is set to channel.
The following values are supported:
mono
Each ambisonics channel is coded as an individual
mono stream in the group
default_w
Default weight value
iamf_mix_presentation
Groups streams that belong to all IAMF Audio Element the same
IAMF Mix Presentation references
For this group type, the following options are available
submix
A sub-mix within the Mix Presentation. This option must be
separated from the rest with a ','. Several ',' separated
entries can be defined, and at least one must be set.
It takes the following ":"-separated key=value options
parameter_id
An identifier parameters blocks in frames may refer to,
for post-processing the mixed audio signal to generate
the audio signal for playback
parameter_rate
The sample rate duration fields in parameters blocks in
frames that refer to this parameter_id are expressed as
default_mix_gain
Default mix gain value to apply when there are no
parameter blocks sharing the same parameter_id for a
given frame
element
References an Audio Element used in this Mix
Presentation to generate the final output audio signal
for playback. This option must be separated from the
rest with a '|'. Several '|' separated entries can be
defined, and at least one must be set.
It takes the following ":"-separated key=value options:
stg The stream_group_id for an Audio Element which this
sub-mix refers to
parameter_id
An identifier parameters blocks in frames may refer
to, for applying any processing to the referenced
and rendered Audio Element before being summed with
other processed Audio Elements
parameter_rate
The sample rate duration fields in parameters
blocks in frames that refer to this parameter_id
are expressed as
default_mix_gain
Default mix gain value to apply when there are no
parameter blocks sharing the same parameter_id for
a given frame
annotations
A key=value string describing the sub-mix element
where "key" is a string conforming to BCP-47 that
specifies the language for the "value" string.
"key" must be the same as the one in the mix's
annotations
headphones_rendering_mode
Indicates whether the input channel-based Audio
Element is rendered to stereo loudspeakers or
spatialized with a binaural renderer when played
back on headphones. This has no effect if the
referenced Audio Element's audio_element_type is
set to channel.
The following values are supported:
stereo
binaural
layout
Specifies the layouts for this sub-mix on which the
loudness information was measured. This option must be
separated from the rest with a '|'. Several '|'
separated entries can be defined, and at least one must
be set.
It takes the following ":"-separated key=value options:
layout_type
loudspeakers
The layout follows the loudspeaker sound system
convention of ITU-2051-3.
binaural
The layout is binaural.
sound_system
Channel layout matching one of Sound Systems A to J
of ITU-2051-3, plus 7.1.2 and 3.1.2 This has no
effect if layout_type is set to binaural.
integrated_loudness
The program integrated loudness information, as
defined in ITU-1770-4.
digital_peak
The digital (sampled) peak value of the audio
signal, as defined in ITU-1770-4.
true_peak
The true peak of the audio signal, as defined in
ITU-1770-4.
dialog_anchored_loudness
The Dialogue loudness information, as defined in
ITU-1770-4.
album_anchored_loudness
The Album loudness information, as defined in
ITU-1770-4.
annotations
A key=value string string describing the mix where "key" is
a string conforming to BCP-47 that specifies the language
for the "value" string. "key" must be the same as the ones
in all sub-mix element's annotationss
-target type (output)
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50"). type
may be prefixed with "pal-", "ntsc-" or "film-" to use the
corresponding standard. All the format options (bitrate, codecs,
buffer sizes) are then set automatically. You can just type:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
Nevertheless you can specify additional options as long as you know
they do not conflict with the standard, as in:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
The parameters set for each target are as follows.
VCD
<pal>:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x288 -r 25
-codec:v mpeg1video -g 15 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k
<ntsc>:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x240 -r 30000/1001
-codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k
<film>:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x240 -r 24000/1001
-codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k
SVCD
<pal>:
-f svcd -packetsize 2324
-s 480x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k
<ntsc>:
-f svcd -packetsize 2324
-s 480x480 -pix_fmt yuv420p -r 30000/1001
-codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k
<film>:
-f svcd -packetsize 2324
-s 480x480 -pix_fmt yuv420p -r 24000/1001
-codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k
DVD
<pal>:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k
<ntsc>:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x480 -pix_fmt yuv420p -r 30000/1001
-codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k
<film>:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x480 -pix_fmt yuv420p -r 24000/1001
-codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k
DV
<pal>:
-f dv
-s 720x576 -pix_fmt yuv420p -r 25
-ar 48000 -ac 2
<ntsc>:
-f dv
-s 720x480 -pix_fmt yuv411p -r 30000/1001
-ar 48000 -ac 2
<film>:
-f dv
-s 720x480 -pix_fmt yuv411p -r 24000/1001
-ar 48000 -ac 2
The "dv50" target is identical to the "dv" target except that the
pixel format set is "yuv422p" for all three standards.
Any user-set value for a parameter above will override the target
preset value. In that case, the output may not comply with the
target standard.
-dn (input/output)
As an input option, blocks all data streams of a file from being
filtered or being automatically selected or mapped for any output.
See "-discard" option to disable streams individually.
As an output option, disables data recording i.e. automatic
selection or mapping of any data stream. For full manual control
see the "-map" option.
-dframes number (output)
Set the number of data frames to output. This is an obsolete alias
for "-frames:d", which you should use instead.
-frames[:stream_specifier] framecount (output,per-stream)
Stop writing to the stream after framecount frames.
-q[:stream_specifier] q (output,per-stream)
-qscale[:stream_specifier] q (output,per-stream)
Use fixed quality scale (VBR). The meaning of q/qscale is codec-
dependent. If qscale is used without a stream_specifier then it
applies only to the video stream, this is to maintain compatibility
with previous behavior and as specifying the same codec specific
value to 2 different codecs that is audio and video generally is
not what is intended when no stream_specifier is used.
-filter[:stream_specifier] filtergraph (output,per-stream)
Create the filtergraph specified by filtergraph and use it to
filter the stream.
filtergraph is a description of the filtergraph to apply to the
stream, and must have a single input and a single output of the
same type of the stream. In the filtergraph, the input is
associated to the label "in", and the output to the label "out".
See the ffmpeg-filters manual for more information about the
filtergraph syntax.
See the -filter_complex option if you want to create filtergraphs
with multiple inputs and/or outputs.
-reinit_filter[:stream_specifier] integer (input,per-stream)
This boolean option determines if the filtergraph(s) to which this
stream is fed gets reinitialized when input frame parameters change
mid-stream. This option is enabled by default as most video and all
audio filters cannot handle deviation in input frame properties.
Upon reinitialization, existing filter state is lost, like e.g. the
frame count "n" reference available in some filters. Any frames
buffered at time of reinitialization are lost. The properties
where a change triggers reinitialization are, for video, frame
resolution or pixel format; for audio, sample format, sample rate,
channel count or channel layout.
-filter_threads nb_threads (global)
Defines how many threads are used to process a filter pipeline.
Each pipeline will produce a thread pool with this many threads
available for parallel processing. The default is the number of
available CPUs.
-pre[:stream_specifier] preset_name (output,per-stream)
Specify the preset for matching stream(s).
-stats (global)
Print encoding progress/statistics. It is on by default, to
explicitly disable it you need to specify "-nostats".
-stats_period time (global)
Set period at which encoding progress/statistics are updated.
Default is 0.5 seconds.
-progress url (global)
Send program-friendly progress information to url.
Progress information is written periodically and at the end of the
encoding process. It is made of "key=value" lines. key consists of
only alphanumeric characters. The last key of a sequence of
progress information is always "progress".
The update period is set using "-stats_period".
-stdin
Enable interaction on standard input. On by default unless standard
input is used as an input. To explicitly disable interaction you
need to specify "-nostdin".
Disabling interaction on standard input is useful, for example, if
ffmpeg is in the background process group. Roughly the same result
can be achieved with "ffmpeg ... < /dev/null" but it requires a
shell.
-debug_ts (global)
Print timestamp/latency information. It is off by default. This
option is mostly useful for testing and debugging purposes, and the
output format may change from one version to another, so it should
not be employed by portable scripts.
See also the option "-fdebug ts".
-attach filename (output)
Add an attachment to the output file. This is supported by a few
formats like Matroska for e.g. fonts used in rendering subtitles.
Attachments are implemented as a specific type of stream, so this
option will add a new stream to the file. It is then possible to
use per-stream options on this stream in the usual way. Attachment
streams created with this option will be created after all the
other streams (i.e. those created with "-map" or automatic
mappings).
Note that for Matroska you also have to set the mimetype metadata
tag:
ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
(assuming that the attachment stream will be third in the output
file).
-dump_attachment[:stream_specifier] filename (input,per-stream)
Extract the matching attachment stream into a file named filename.
If filename is empty, then the value of the "filename" metadata tag
will be used.
E.g. to extract the first attachment to a file named 'out.ttf':
ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
To extract all attachments to files determined by the "filename"
tag:
ffmpeg -dump_attachment:t "" -i INPUT
Technical note -- attachments are implemented as codec extradata,
so this option can actually be used to extract extradata from any
stream, not just attachments.
Video Options
-vframes number (output)
Set the number of video frames to output. This is an obsolete alias
for "-frames:v", which you should use instead.
-r[:stream_specifier] fps (input/output,per-stream)
Set frame rate (Hz value, fraction or abbreviation).
As an input option, ignore any timestamps stored in the file and
instead generate timestamps assuming constant frame rate fps. This
is not the same as the -framerate option used for some input
formats like image2 or v4l2 (it used to be the same in older
versions of FFmpeg). If in doubt use -framerate instead of the
input option -r.
As an output option:
video encoding
Duplicate or drop frames right before encoding them to achieve
constant output frame rate fps.
video streamcopy
Indicate to the muxer that fps is the stream frame rate. No
data is dropped or duplicated in this case. This may produce
invalid files if fps does not match the actual stream frame
rate as determined by packet timestamps. See also the "setts"
bitstream filter.
-fpsmax[:stream_specifier] fps (output,per-stream)
Set maximum frame rate (Hz value, fraction or abbreviation).
Clamps output frame rate when output framerate is auto-set and is
higher than this value. Useful in batch processing or when input
framerate is wrongly detected as very high. It cannot be set
together with "-r". It is ignored during streamcopy.
-s[:stream_specifier] size (input/output,per-stream)
Set frame size.
As an input option, this is a shortcut for the video_size private
option, recognized by some demuxers for which the frame size is
either not stored in the file or is configurable -- e.g. raw video
or video grabbers.
As an output option, this inserts the "scale" video filter to the
end of the corresponding filtergraph. Please use the "scale" filter
directly to insert it at the beginning or some other place.
The format is wxh (default - same as source).
-aspect[:stream_specifier] aspect (output,per-stream)
Set the video display aspect ratio specified by aspect.
aspect can be a floating point number string, or a string of the
form num:den, where num and den are the numerator and denominator
of the aspect ratio. For example "4:3", "16:9", "1.3333", and
"1.7777" are valid argument values.
If used together with -vcodec copy, it will affect the aspect ratio
stored at container level, but not the aspect ratio stored in
encoded frames, if it exists.
-display_rotation[:stream_specifier] rotation (input,per-stream)
Set video rotation metadata.
rotation is a decimal number specifying the amount in degree by
which the video should be rotated counter-clockwise before being
displayed.
This option overrides the rotation/display transform metadata
stored in the file, if any. When the video is being transcoded
(rather than copied) and "-autorotate" is enabled, the video will
be rotated at the filtering stage. Otherwise, the metadata will be
written into the output file if the muxer supports it.
If the "-display_hflip" and/or "-display_vflip" options are given,
they are applied after the rotation specified by this option.
-display_hflip[:stream_specifier] (input,per-stream)
Set whether on display the image should be horizontally flipped.
See the "-display_rotation" option for more details.
-display_vflip[:stream_specifier] (input,per-stream)
Set whether on display the image should be vertically flipped.
See the "-display_rotation" option for more details.
-vn (input/output)
As an input option, blocks all video streams of a file from being
filtered or being automatically selected or mapped for any output.
See "-discard" option to disable streams individually.
As an output option, disables video recording i.e. automatic
selection or mapping of any video stream. For full manual control
see the "-map" option.
-vcodec codec (output)
Set the video codec. This is an alias for "-codec:v".
-pass[:stream_specifier] n (output,per-stream)
Select the pass number (1 or 2). It is used to do two-pass video
encoding. The statistics of the video are recorded in the first
pass into a log file (see also the option -passlogfile), and in the
second pass that log file is used to generate the video at the
exact requested bitrate. On pass 1, you may just deactivate audio
and set output to null, examples for Windows and Unix:
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
-passlogfile[:stream_specifier] prefix (output,per-stream)
Set two-pass log file name prefix to prefix, the default file name
prefix is ``ffmpeg2pass''. The complete file name will be
PREFIX-N.log, where N is a number specific to the output stream
-vf filtergraph (output)
Create the filtergraph specified by filtergraph and use it to
filter the stream.
This is an alias for "-filter:v", see the -filter option.
-autorotate
Automatically rotate the video according to file metadata. Enabled
by default, use -noautorotate to disable it.
-autoscale
Automatically scale the video according to the resolution of first
frame. Enabled by default, use -noautoscale to disable it. When
autoscale is disabled, all output frames of filter graph might not
be in the same resolution and may be inadequate for some
encoder/muxer. Therefore, it is not recommended to disable it
unless you really know what you are doing. Disable autoscale at
your own risk.
Advanced Video options
-pix_fmt[:stream_specifier] format (input/output,per-stream)
Set pixel format. Use "-pix_fmts" to show all the supported pixel
formats. If the selected pixel format can not be selected, ffmpeg
will print a warning and select the best pixel format supported by
the encoder. If pix_fmt is prefixed by a "+", ffmpeg will exit
with an error if the requested pixel format can not be selected,
and automatic conversions inside filtergraphs are disabled. If
pix_fmt is a single "+", ffmpeg selects the same pixel format as
the input (or graph output) and automatic conversions are disabled.
-sws_flags flags (input/output)
Set default flags for the libswscale library. These flags are used
by automatically inserted "scale" filters and those within simple
filtergraphs, if not overridden within the filtergraph definition.
See the ffmpeg-scaler manual for a list of scaler options.
-rc_override[:stream_specifier] override (output,per-stream)
Rate control override for specific intervals, formatted as
"int,int,int" list separated with slashes. Two first values are the
beginning and end frame numbers, last one is quantizer to use if
positive, or quality factor if negative.
-vstats
Dump video coding statistics to vstats_HHMMSS.log. See the vstats
file format section for the format description.
-vstats_file file
Dump video coding statistics to file. See the vstats file format
section for the format description.
-vstats_version file
Specify which version of the vstats format to use. Default is 2.
See the vstats file format section for the format description.
-vtag fourcc/tag (output)
Force video tag/fourcc. This is an alias for "-tag:v".
-force_key_frames[:stream_specifier] time[,time...] (output,per-stream)
-force_key_frames[:stream_specifier] expr:expr (output,per-stream)
-force_key_frames[:stream_specifier] source (output,per-stream)
force_key_frames can take arguments of the following form:
time[,time...]
If the argument consists of timestamps, ffmpeg will round the
specified times to the nearest output timestamp as per the
encoder time base and force a keyframe at the first frame
having timestamp equal or greater than the computed timestamp.
Note that if the encoder time base is too coarse, then the
keyframes may be forced on frames with timestamps lower than
the specified time. The default encoder time base is the
inverse of the output framerate but may be set otherwise via
"-enc_time_base".
If one of the times is ""chapters"[delta]", it is expanded into
the time of the beginning of all chapters in the file, shifted
by delta, expressed as a time in seconds. This option can be
useful to ensure that a seek point is present at a chapter mark
or any other designated place in the output file.
For example, to insert a key frame at 5 minutes, plus key
frames 0.1 second before the beginning of every chapter:
-force_key_frames 0:05:00,chapters-0.1
expr:expr
If the argument is prefixed with "expr:", the string expr is
interpreted like an expression and is evaluated for each frame.
A key frame is forced in case the evaluation is non-zero.
The expression in expr can contain the following constants:
n the number of current processed frame, starting from 0
n_forced
the number of forced frames
prev_forced_n
the number of the previous forced frame, it is "NAN" when
no keyframe was forced yet
prev_forced_t
the time of the previous forced frame, it is "NAN" when no
keyframe was forced yet
t the time of the current processed frame
For example to force a key frame every 5 seconds, you can
specify:
-force_key_frames expr:gte(t,n_forced*5)
To force a key frame 5 seconds after the time of the last
forced one, starting from second 13:
-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
source
If the argument is "source", ffmpeg will force a key frame if
the current frame being encoded is marked as a key frame in its
source. In cases where this particular source frame has to be
dropped, enforce the next available frame to become a key frame
instead.
Note that forcing too many keyframes is very harmful for the
lookahead algorithms of certain encoders: using fixed-GOP options
or similar would be more efficient.
-copyinkf[:stream_specifier] (output,per-stream)
When doing stream copy, copy also non-key frames found at the
beginning.
-init_hw_device type[=name][:device[,key=value...]]
Initialise a new hardware device of type type called name, using
the given device parameters. If no name is specified it will
receive a default name of the form "type%d".
The meaning of device and the following arguments depends on the
device type:
cuda
device is the number of the CUDA device.
The following options are recognized:
primary_ctx
If set to 1, uses the primary device context instead of
creating a new one.
Examples:
-init_hw_device cuda:1
Choose the second device on the system.
-init_hw_device cuda:0,primary_ctx=1
Choose the first device and use the primary device context.
dxva2
device is the number of the Direct3D 9 display adapter.
d3d11va
device is the number of the Direct3D 11 display adapter. If
not specified, it will attempt to use the default Direct3D 11
display adapter or the first Direct3D 11 display adapter whose
hardware VendorId is specified by vendor_id.
Examples:
-init_hw_device d3d11va
Create a d3d11va device on the default Direct3D 11 display
adapter.
-init_hw_device d3d11va:1
Create a d3d11va device on the Direct3D 11 display adapter
specified by index 1.
-init_hw_device d3d11va:,vendor_id=0x8086
Create a d3d11va device on the first Direct3D 11 display
adapter whose hardware VendorId is 0x8086.
vaapi
device is either an X11 display name, a DRM render node or a
DirectX adapter index. If not specified, it will attempt to
open the default X11 display ($DISPLAY) and then the first DRM
render node (/dev/dri/renderD128), or the default DirectX
adapter on Windows.
The following options are recognized:
kernel_driver
When device is not specified, use this option to specify
the name of the kernel driver associated with the desired
device. This option is available only when the hardware
acceleration method drm and vaapi are enabled.
Examples:
-init_hw_device vaapi
Create a vaapi device on the default device.
-init_hw_device vaapi:/dev/dri/renderD129
Create a vaapi device on DRM render node
/dev/dri/renderD129.
-init_hw_device vaapi:1
Create a vaapi device on DirectX adapter 1.
-init_hw_device vaapi:,kernel_driver=i915
Create a vaapi device on a device associated with kernel
driver i915.
vdpau
device is an X11 display name. If not specified, it will
attempt to open the default X11 display ($DISPLAY).
qsv device selects a value in MFX_IMPL_*. Allowed values are:
auto
sw
hw
auto_any
hw_any
hw2
hw3
hw4
If not specified, auto_any is used. (Note that it may be
easier to achieve the desired result for QSV by creating the
platform-appropriate subdevice (dxva2 or d3d11va or vaapi) and
then deriving a QSV device from that.)
The following options are recognized:
child_device
Specify a DRM render node on Linux or DirectX adapter on
Windows.
child_device_type
Choose platform-appropriate subdevice type. On Windows
d3d11va is used as default subdevice type when
"--enable-libvpl" is specified at configuration time, dxva2
is used as default subdevice type when "--enable-libmfx" is
specified at configuration time. On Linux user can use
vaapi only as subdevice type.
Examples:
-init_hw_device qsv:hw,child_device=/dev/dri/renderD129
Create a QSV device with MFX_IMPL_HARDWARE on DRM render
node /dev/dri/renderD129.
-init_hw_device qsv:hw,child_device=1
Create a QSV device with MFX_IMPL_HARDWARE on DirectX
adapter 1.
-init_hw_device qsv:hw,child_device_type=d3d11va
Choose the GPU subdevice with type d3d11va and create QSV
device with MFX_IMPL_HARDWARE.
-init_hw_device qsv:hw,child_device_type=dxva2
Choose the GPU subdevice with type dxva2 and create QSV
device with MFX_IMPL_HARDWARE.
-init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va
Create a QSV device with MFX_IMPL_HARDWARE on DirectX
adapter 1 with subdevice type d3d11va.
-init_hw_device vaapi=va:/dev/dri/renderD129 -init_hw_device
qsv=hw1@va
Create a VAAPI device called va on /dev/dri/renderD129,
then derive a QSV device called hw1 from device va.
opencl
device selects the platform and device as
platform_index.device_index.
The set of devices can also be filtered using the key-value
pairs to find only devices matching particular platform or
device strings.
The strings usable as filters are:
platform_profile
platform_version
platform_name
platform_vendor
platform_extensions
device_name
device_vendor
driver_version
device_version
device_profile
device_extensions
device_type
The indices and filters must together uniquely select a device.
Examples:
-init_hw_device opencl:0.1
Choose the second device on the first platform.
-init_hw_device opencl:,device_name=Foo9000
Choose the device with a name containing the string
Foo9000.
-init_hw_device
opencl:1,device_type=gpu,device_extensions=cl_khr_fp16
Choose the GPU device on the second platform supporting the
cl_khr_fp16 extension.
vulkan
If device is an integer, it selects the device by its index in
a system-dependent list of devices. If device is any other
string, it selects the first device with a name containing that
string as a substring.
The following options are recognized:
debug
If set to 1, enables the validation layer, if installed.
linear_images
If set to 1, images allocated by the hwcontext will be
linear and locally mappable.
instance_extensions
A plus separated list of additional instance extensions to
enable.
device_extensions
A plus separated list of additional device extensions to
enable.
Examples:
-init_hw_device vulkan:1
Choose the second device on the system.
-init_hw_device vulkan:RADV
Choose the first device with a name containing the string
RADV.
-init_hw_device
vulkan:0,instance_extensions=VK_KHR_wayland_surface+VK_KHR_xcb_surface
Choose the first device and enable the Wayland and XCB
instance extensions.
-init_hw_device type[=name]@source
Initialise a new hardware device of type type called name, deriving
it from the existing device with the name source.
-init_hw_device list
List all hardware device types supported in this build of ffmpeg.
-filter_hw_device name
Pass the hardware device called name to all filters in any filter
graph. This can be used to set the device to upload to with the
"hwupload" filter, or the device to map to with the "hwmap" filter.
Other filters may also make use of this parameter when they require
a hardware device. Note that this is typically only required when
the input is not already in hardware frames - when it is, filters
will derive the device they require from the context of the frames
they receive as input.
This is a global setting, so all filters will receive the same
device.
-hwaccel[:stream_specifier] hwaccel (input,per-stream)
Use hardware acceleration to decode the matching stream(s). The
allowed values of hwaccel are:
none
Do not use any hardware acceleration (the default).
auto
Automatically select the hardware acceleration method.
vdpau
Use VDPAU (Video Decode and Presentation API for Unix) hardware
acceleration.
dxva2
Use DXVA2 (DirectX Video Acceleration) hardware acceleration.
d3d11va
Use D3D11VA (DirectX Video Acceleration) hardware acceleration.
vaapi
Use VAAPI (Video Acceleration API) hardware acceleration.
qsv Use the Intel QuickSync Video acceleration for video
transcoding.
Unlike most other values, this option does not enable
accelerated decoding (that is used automatically whenever a qsv
decoder is selected), but accelerated transcoding, without
copying the frames into the system memory.
For it to work, both the decoder and the encoder must support
QSV acceleration and no filters must be used.
This option has no effect if the selected hwaccel is not available
or not supported by the chosen decoder.
Note that most acceleration methods are intended for playback and
will not be faster than software decoding on modern CPUs.
Additionally, ffmpeg will usually need to copy the decoded frames
from the GPU memory into the system memory, resulting in further
performance loss. This option is thus mainly useful for testing.
-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)
Select a device to use for hardware acceleration.
This option only makes sense when the -hwaccel option is also
specified. It can either refer to an existing device created with
-init_hw_device by name, or it can create a new device as if
-init_hw_device type:hwaccel_device were called immediately before.
-hwaccels
List all hardware acceleration components enabled in this build of
ffmpeg. Actual runtime availability depends on the hardware and
its suitable driver being installed.
-fix_sub_duration_heartbeat[:stream_specifier]
Set a specific output video stream as the heartbeat stream
according to which to split and push through currently in-progress
subtitle upon receipt of a random access packet.
This lowers the latency of subtitles for which the end packet or
the following subtitle has not yet been received. As a drawback,
this will most likely lead to duplication of subtitle events in
order to cover the full duration, so when dealing with use cases
where latency of when the subtitle event is passed on to output is
not relevant this option should not be utilized.
Requires -fix_sub_duration to be set for the relevant input
subtitle stream for this to have any effect, as well as for the
input subtitle stream having to be directly mapped to the same
output in which the heartbeat stream resides.
Audio Options
-aframes number (output)
Set the number of audio frames to output. This is an obsolete alias
for "-frames:a", which you should use instead.
-ar[:stream_specifier] freq (input/output,per-stream)
Set the audio sampling frequency. For output streams it is set by
default to the frequency of the corresponding input stream. For
input streams this option only makes sense for audio grabbing
devices and raw demuxers and is mapped to the corresponding demuxer
options.
-aq q (output)
Set the audio quality (codec-specific, VBR). This is an alias for
-q:a.
-ac[:stream_specifier] channels (input/output,per-stream)
Set the number of audio channels. For output streams it is set by
default to the number of input audio channels. For input streams
this option only makes sense for audio grabbing devices and raw
demuxers and is mapped to the corresponding demuxer options.
-an (input/output)
As an input option, blocks all audio streams of a file from being
filtered or being automatically selected or mapped for any output.
See "-discard" option to disable streams individually.
As an output option, disables audio recording i.e. automatic
selection or mapping of any audio stream. For full manual control
see the "-map" option.
-acodec codec (input/output)
Set the audio codec. This is an alias for "-codec:a".
-sample_fmt[:stream_specifier] sample_fmt (output,per-stream)
Set the audio sample format. Use "-sample_fmts" to get a list of
supported sample formats.
-af filtergraph (output)
Create the filtergraph specified by filtergraph and use it to
filter the stream.
This is an alias for "-filter:a", see the -filter option.
Advanced Audio options
-atag fourcc/tag (output)
Force audio tag/fourcc. This is an alias for "-tag:a".
-guess_layout_max channels (input,per-stream)
If some input channel layout is not known, try to guess only if it
corresponds to at most the specified number of channels. For
example, 2 tells to ffmpeg to recognize 1 channel as mono and 2
channels as stereo but not 6 channels as 5.1. The default is to
always try to guess. Use 0 to disable all guessing.
Subtitle options
-scodec codec (input/output)
Set the subtitle codec. This is an alias for "-codec:s".
-sn (input/output)
As an input option, blocks all subtitle streams of a file from
being filtered or being automatically selected or mapped for any
output. See "-discard" option to disable streams individually.
As an output option, disables subtitle recording i.e. automatic
selection or mapping of any subtitle stream. For full manual
control see the "-map" option.
Advanced Subtitle options
-fix_sub_duration
Fix subtitles durations. For each subtitle, wait for the next
packet in the same stream and adjust the duration of the first to
avoid overlap. This is necessary with some subtitles codecs,
especially DVB subtitles, because the duration in the original
packet is only a rough estimate and the end is actually marked by
an empty subtitle frame. Failing to use this option when necessary
can result in exaggerated durations or muxing failures due to non-
monotonic timestamps.
Note that this option will delay the output of all data until the
next subtitle packet is decoded: it may increase memory consumption
and latency a lot.
-canvas_size size
Set the size of the canvas used to render subtitles.
Advanced options
-map [-]input_file_id[:stream_specifier][?] | [linklabel] (output)
Create one or more streams in the output file. This option has two
forms for specifying the data source(s): the first selects one or
more streams from some input file (specified with "-i"), the second
takes an output from some complex filtergraph (specified with
"-filter_complex").
In the first form, an output stream is created for every stream
from the input file with the index input_file_id. If
stream_specifier is given, only those streams that match the
specifier are used (see the Stream specifiers section for the
stream_specifier syntax).
A "-" character before the stream identifier creates a "negative"
mapping. It disables matching streams from already created
mappings.
A trailing "?" after the stream index will allow the map to be
optional: if the map matches no streams the map will be ignored
instead of failing. Note the map will still fail if an invalid
input file index is used; such as if the map refers to a non-
existent input.
An alternative [linklabel] form will map outputs from complex
filter graphs (see the -filter_complex option) to the output file.
linklabel must correspond to a defined output link label in the
graph.
This option may be specified multiple times, each adding more
streams to the output file. Any given input stream may also be
mapped any number of times as a source for different output
streams, e.g. in order to use different encoding options and/or
filters. The streams are created in the output in the same order in
which the "-map" options are given on the commandline.
Using this option disables the default mappings for this output
file.
Examples:
map everything
To map ALL streams from the first input file to output
ffmpeg -i INPUT -map 0 output
select specific stream
If you have two audio streams in the first input file, these
streams are identified by 0:0 and 0:1. You can use "-map" to
select which streams to place in an output file. For example:
ffmpeg -i INPUT -map 0:1 out.wav
will map the second input stream in INPUT to the (single)
output stream in out.wav.
create multiple streams
To select the stream with index 2 from input file a.mov
(specified by the identifier 0:2), and stream with index 6 from
input b.mov (specified by the identifier 1:6), and copy them to
the output file out.mov:
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
create multiple streams 2
To select all video and the third audio stream from an input
file:
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
negative map
To map all the streams except the second audio, use negative
mappings
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
optional map
To map the video and audio streams from the first input, and
using the trailing "?", ignore the audio mapping if no audio
streams exist in the first input:
ffmpeg -i INPUT -map 0:v -map 0:a? OUTPUT
map by language
To pick the English audio stream:
ffmpeg -i INPUT -map 0:m:language:eng OUTPUT
-ignore_unknown
Ignore input streams with unknown type instead of failing if
copying such streams is attempted.
-copy_unknown
Allow input streams with unknown type to be copied instead of
failing if copying such streams is attempted.
-map_metadata[:metadata_spec_out] infile[:metadata_spec_in]
(output,per-metadata)
Set metadata information of the next output file from infile. Note
that those are file indices (zero-based), not filenames. Optional
metadata_spec_in/out parameters specify, which metadata to copy. A
metadata specifier can have the following forms:
g global metadata, i.e. metadata that applies to the whole file
s[:stream_spec]
per-stream metadata. stream_spec is a stream specifier as
described in the Stream specifiers chapter. In an input
metadata specifier, the first matching stream is copied from.
In an output metadata specifier, all matching streams are
copied to.
c:chapter_index
per-chapter metadata. chapter_index is the zero-based chapter
index.
p:program_index
per-program metadata. program_index is the zero-based program
index.
If metadata specifier is omitted, it defaults to global.
By default, global metadata is copied from the first input file,
per-stream and per-chapter metadata is copied along with
streams/chapters. These default mappings are disabled by creating
any mapping of the relevant type. A negative file index can be used
to create a dummy mapping that just disables automatic copying.
For example to copy metadata from the first stream of the input
file to global metadata of the output file:
ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
To do the reverse, i.e. copy global metadata to all audio streams:
ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
Note that simple 0 would work as well in this example, since global
metadata is assumed by default.
-map_chapters input_file_index (output)
Copy chapters from input file with index input_file_index to the
next output file. If no chapter mapping is specified, then chapters
are copied from the first input file with at least one chapter. Use
a negative file index to disable any chapter copying.
-benchmark (global)
Show benchmarking information at the end of an encode. Shows real,
system and user time used and maximum memory consumption. Maximum
memory consumption is not supported on all systems, it will usually
display as 0 if not supported.
-benchmark_all (global)
Show benchmarking information during the encode. Shows real,
system and user time used in various steps (audio/video
encode/decode).
-timelimit duration (global)
Exit after ffmpeg has been running for duration seconds in CPU user
time.
-dump (global)
Dump each input packet to stderr.
-hex (global)
When dumping packets, also dump the payload.
-readrate speed (input)
Limit input read speed.
Its value is a floating-point positive number which represents the
maximum duration of media, in seconds, that should be ingested in
one second of wallclock time. Default value is zero and represents
no imposed limitation on speed of ingestion. Value 1 represents
real-time speed and is equivalent to "-re".
Mainly used to simulate a capture device or live input stream (e.g.
when reading from a file). Should not be used with a low value
when input is an actual capture device or live stream as it may
cause packet loss.
It is useful for when flow speed of output packets is important,
such as live streaming.
-re (input)
Read input at native frame rate. This is equivalent to setting
"-readrate 1".
-readrate_initial_burst seconds
Set an initial read burst time, in seconds, after which
-re/-readrate will be enforced.
-vsync parameter (global)
-fps_mode[:stream_specifier] parameter (output,per-stream)
Set video sync method / framerate mode. vsync is applied to all
output video streams but can be overridden for a stream by setting
fps_mode. vsync is deprecated and will be removed in the future.
For compatibility reasons some of the values for vsync can be
specified as numbers (shown in parentheses in the following table).
passthrough (0)
Each frame is passed with its timestamp from the demuxer to the
muxer.
cfr (1)
Frames will be duplicated and dropped to achieve exactly the
requested constant frame rate.
vfr (2)
Frames are passed through with their timestamp or dropped so as
to prevent 2 frames from having the same timestamp.
auto (-1)
Chooses between cfr and vfr depending on muxer capabilities.
This is the default method.
Note that the timestamps may be further modified by the muxer,
after this. For example, in the case that the format option
avoid_negative_ts is enabled.
With -map you can select from which stream the timestamps should be
taken. You can leave either video or audio unchanged and sync the
remaining stream(s) to the unchanged one.
-frame_drop_threshold parameter
Frame drop threshold, which specifies how much behind video frames
can be before they are dropped. In frame rate units, so 1.0 is one
frame. The default is -1.1. One possible usecase is to avoid
framedrops in case of noisy timestamps or to increase frame drop
precision in case of exact timestamps.
-apad parameters (output,per-stream)
Pad the output audio stream(s). This is the same as applying "-af
apad". Argument is a string of filter parameters composed the same
as with the "apad" filter. "-shortest" must be set for this output
for the option to take effect.
-copyts
Do not process input timestamps, but keep their values without
trying to sanitize them. In particular, do not remove the initial
start time offset value.
Note that, depending on the vsync option or on specific muxer
processing (e.g. in case the format option avoid_negative_ts is
enabled) the output timestamps may mismatch with the input
timestamps even when this option is selected.
-start_at_zero
When used with copyts, shift input timestamps so they start at
zero.
This means that using e.g. "-ss 50" will make output timestamps
start at 50 seconds, regardless of what timestamp the input file
started at.
-copytb mode
Specify how to set the encoder timebase when stream copying. mode
is an integer numeric value, and can assume one of the following
values:
1 Use the demuxer timebase.
The time base is copied to the output encoder from the
corresponding input demuxer. This is sometimes required to
avoid non monotonically increasing timestamps when copying
video streams with variable frame rate.
0 Use the decoder timebase.
The time base is copied to the output encoder from the
corresponding input decoder.
-1 Try to make the choice automatically, in order to generate a
sane output.
Default value is -1.
-enc_time_base[:stream_specifier] timebase (output,per-stream)
Set the encoder timebase. timebase can assume one of the following
values:
0 Assign a default value according to the media type.
For video - use 1/framerate, for audio - use 1/samplerate.
demux
Use the timebase from the demuxer.
filter
Use the timebase from the filtergraph.
a positive number
Use the provided number as the timebase.
This field can be provided as a ratio of two integers (e.g.
1:24, 1:48000) or as a decimal number (e.g. 0.04166, 2.0833e-5)
Default value is 0.
-bitexact (input/output)
Enable bitexact mode for (de)muxer and (de/en)coder
-shortest (output)
Finish encoding when the shortest output stream ends.
Note that this option may require buffering frames, which
introduces extra latency. The maximum amount of this latency may be
controlled with the "-shortest_buf_duration" option.
-shortest_buf_duration duration (output)
The "-shortest" option may require buffering potentially large
amounts of data when at least one of the streams is "sparse" (i.e.
has large gaps between frames X this is typically the case for
subtitles).
This option controls the maximum duration of buffered frames in
seconds. Larger values may allow the "-shortest" option to produce
more accurate results, but increase memory use and latency.
The default value is 10 seconds.
-dts_delta_threshold threshold
Timestamp discontinuity delta threshold, expressed as a decimal
number of seconds.
The timestamp discontinuity correction enabled by this option is
only applied to input formats accepting timestamp discontinuity
(for which the "AVFMT_TS_DISCONT" flag is enabled), e.g. MPEG-TS
and HLS, and is automatically disabled when employing the "-copyts"
option (unless wrapping is detected).
If a timestamp discontinuity is detected whose absolute value is
greater than threshold, ffmpeg will remove the discontinuity by
decreasing/increasing the current DTS and PTS by the corresponding
delta value.
The default value is 10.
-dts_error_threshold threshold
Timestamp error delta threshold, expressed as a decimal number of
seconds.
The timestamp correction enabled by this option is only applied to
input formats not accepting timestamp discontinuity (for which the
"AVFMT_TS_DISCONT" flag is not enabled).
If a timestamp discontinuity is detected whose absolute value is
greater than threshold, ffmpeg will drop the PTS/DTS timestamp
value.
The default value is "3600*30" (30 hours), which is arbitrarily
picked and quite conservative.
-muxdelay seconds (output)
Set the maximum demux-decode delay.
-muxpreload seconds (output)
Set the initial demux-decode delay.
-streamid output-stream-index:new-value (output)
Assign a new stream-id value to an output stream. This option
should be specified prior to the output filename to which it
applies. For the situation where multiple output files exist, a
streamid may be reassigned to a different value.
For example, to set the stream 0 PID to 33 and the stream 1 PID to
36 for an output mpegts file:
ffmpeg -i inurl -streamid 0:33 -streamid 1:36 out.ts
-bsf[:stream_specifier] bitstream_filters (input/output,per-stream)
Apply bitstream filters to matching streams. The filters are
applied to each packet as it is received from the demuxer (when
used as an input option) or before it is sent to the muxer (when
used as an output option).
bitstream_filters is a comma-separated list of bitstream filter
specifications, each of the form
<filter>[=<optname0>=<optval0>:<optname1>=<optval1>:...]
Any of the ',=:' characters that are to be a part of an option
value need to be escaped with a backslash.
Use the "-bsfs" option to get the list of bitstream filters.
E.g.
ffmpeg -bsf:v h264_mp4toannexb -i h264.mp4 -c:v copy -an out.h264
applies the "h264_mp4toannexb" bitstream filter (which converts
MP4-encapsulated H.264 stream to Annex B) to the input video
stream.
On the other hand,
ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
applies the "mov2textsub" bitstream filter (which extracts text
from MOV subtitles) to the output subtitle stream. Note, however,
that since both examples use "-c copy", it matters little whether
the filters are applied on input or output - that would change if
transcoding was happening.
-tag[:stream_specifier] codec_tag (input/output,per-stream)
Force a tag/fourcc for matching streams.
-timecode hh:mm:ssSEPff
Specify Timecode for writing. SEP is ':' for non drop timecode and
';' (or '.') for drop.
ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
-filter_complex filtergraph (global)
Define a complex filtergraph, i.e. one with arbitrary number of
inputs and/or outputs. For simple graphs -- those with one input
and one output of the same type -- see the -filter options.
filtergraph is a description of the filtergraph, as described in
the ``Filtergraph syntax'' section of the ffmpeg-filters manual.
Input link labels must refer to either input streams or loopback
decoders. For input streams, use the
"[file_index:stream_specifier]" syntax (i.e. the same as -map
uses). If stream_specifier matches multiple streams, the first one
will be used.
For decoders, the link label must be [dec:dec_idx], where dec_idx
is the index of the loopback decoder to be connected to given
input.
An unlabeled input will be connected to the first unused input
stream of the matching type.
Output link labels are referred to with -map. Unlabeled outputs are
added to the first output file.
Note that with this option it is possible to use only lavfi sources
without normal input files.
For example, to overlay an image over video
ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
'[out]' out.mkv
Here "[0:v]" refers to the first video stream in the first input
file, which is linked to the first (main) input of the overlay
filter. Similarly the first video stream in the second input is
linked to the second (overlay) input of overlay.
Assuming there is only one video stream in each input file, we can
omit input labels, so the above is equivalent to
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
'[out]' out.mkv
Furthermore we can omit the output label and the single output from
the filter graph will be added to the output file automatically, so
we can simply write
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
As a special exception, you can use a bitmap subtitle stream as
input: it will be converted into a video with the same size as the
largest video in the file, or 720x576 if no video is present. Note
that this is an experimental and temporary solution. It will be
removed once libavfilter has proper support for subtitles.
For example, to hardcode subtitles on top of a DVB-T recording
stored in MPEG-TS format, delaying the subtitles by 1 second:
ffmpeg -i input.ts -filter_complex \
'[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
-sn -map '#0x2dc' output.mkv
(0x2d0, 0x2dc and 0x2ef are the MPEG-TS PIDs of respectively the
video, audio and subtitles streams; 0:0, 0:3 and 0:7 would have
worked too)
To generate 5 seconds of pure red video using lavfi "color" source:
ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
-filter_complex_threads nb_threads (global)
Defines how many threads are used to process a filter_complex
graph. Similar to filter_threads but used for "-filter_complex"
graphs only. The default is the number of available CPUs.
-lavfi filtergraph (global)
Define a complex filtergraph, i.e. one with arbitrary number of
inputs and/or outputs. Equivalent to -filter_complex.
-accurate_seek (input)
This option enables or disables accurate seeking in input files
with the -ss option. It is enabled by default, so seeking is
accurate when transcoding. Use -noaccurate_seek to disable it,
which may be useful e.g. when copying some streams and transcoding
the others.
-seek_timestamp (input)
This option enables or disables seeking by timestamp in input files
with the -ss option. It is disabled by default. If enabled, the
argument to the -ss option is considered an actual timestamp, and
is not offset by the start time of the file. This matters only for
files which do not start from timestamp 0, such as transport
streams.
-thread_queue_size size (input/output)
For input, this option sets the maximum number of queued packets
when reading from the file or device. With low latency / high rate
live streams, packets may be discarded if they are not read in a
timely manner; setting this value can force ffmpeg to use a
separate input thread and read packets as soon as they arrive. By
default ffmpeg only does this if multiple inputs are specified.
For output, this option specified the maximum number of packets
that may be queued to each muxing thread.
-sdp_file file (global)
Print sdp information for an output stream to file. This allows
dumping sdp information when at least one output isn't an rtp
stream. (Requires at least one of the output formats to be rtp).
-discard (input)
Allows discarding specific streams or frames from streams. Any
input stream can be fully discarded, using value "all" whereas
selective discarding of frames from a stream occurs at the demuxer
and is not supported by all demuxers.
none
Discard no frame.
default
Default, which discards no frames.
noref
Discard all non-reference frames.
bidir
Discard all bidirectional frames.
nokey
Discard all frames excepts keyframes.
all Discard all frames.
-abort_on flags (global)
Stop and abort on various conditions. The following flags are
available:
empty_output
No packets were passed to the muxer, the output is empty.
empty_output_stream
No packets were passed to the muxer in some of the output
streams.
-max_error_rate (global)
Set fraction of decoding frame failures across all inputs which
when crossed ffmpeg will return exit code 69. Crossing this
threshold does not terminate processing. Range is a floating-point
number between 0 to 1. Default is 2/3.
-xerror (global)
Stop and exit on error
-max_muxing_queue_size packets (output,per-stream)
When transcoding audio and/or video streams, ffmpeg will not begin
writing into the output until it has one packet for each such
stream. While waiting for that to happen, packets for other streams
are buffered. This option sets the size of this buffer, in packets,
for the matching output stream.
The default value of this option should be high enough for most
uses, so only touch this option if you are sure that you need it.
-muxing_queue_data_threshold bytes (output,per-stream)
This is a minimum threshold until which the muxing queue size is
not taken into account. Defaults to 50 megabytes per stream, and is
based on the overall size of packets passed to the muxer.
-auto_conversion_filters (global)
Enable automatically inserting format conversion filters in all
filter graphs, including those defined by -vf, -af, -filter_complex
and -lavfi. If filter format negotiation requires a conversion, the
initialization of the filters will fail. Conversions can still be
performed by inserting the relevant conversion filter (scale,
aresample) in the graph. On by default, to explicitly disable it
you need to specify "-noauto_conversion_filters".
-bits_per_raw_sample[:stream_specifier] value (output,per-stream)
Declare the number of bits per raw sample in the given output
stream to be value. Note that this option sets the information
provided to the encoder/muxer, it does not change the stream to
conform to this value. Setting values that do not match the stream
properties may result in encoding failures or invalid output files.
-stats_enc_pre[:stream_specifier] path (output,per-stream)
-stats_enc_post[:stream_specifier] path (output,per-stream)
-stats_mux_pre[:stream_specifier] path (output,per-stream)
Write per-frame encoding information about the matching streams
into the file given by path.
-stats_enc_pre writes information about raw video or audio frames
right before they are sent for encoding, while -stats_enc_post
writes information about encoded packets as they are received from
the encoder. -stats_mux_pre writes information about packets just
as they are about to be sent to the muxer. Every frame or packet
produces one line in the specified file. The format of this line is
controlled by -stats_enc_pre_fmt / -stats_enc_post_fmt /
-stats_mux_pre_fmt.
When stats for multiple streams are written into a single file, the
lines corresponding to different streams will be interleaved. The
precise order of this interleaving is not specified and not
guaranteed to remain stable between different invocations of the
program, even with the same options.
-stats_enc_pre_fmt[:stream_specifier] format_spec (output,per-stream)
-stats_enc_post_fmt[:stream_specifier] format_spec (output,per-stream)
-stats_mux_pre_fmt[:stream_specifier] format_spec (output,per-stream)
Specify the format for the lines written with -stats_enc_pre /
-stats_enc_post / -stats_mux_pre.
format_spec is a string that may contain directives of the form
{fmt}. format_spec is backslash-escaped --- use \{, \}, and \\ to
write a l
gitextract_g62g6868/
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc.yaml
├── .vscode/
│ └── settings.json
├── LICENSE
├── README.md
├── README_zh.md
├── build/
│ ├── entitlements.mac.plist
│ └── icon.icns
├── deploy/
│ ├── docker-compose-5090.yml
│ ├── docker-compose-linux.yml
│ ├── docker-compose-lite.yml
│ └── docker-compose.yml
├── dev-app-update.yml
├── doc/
│ └── 常见问题.md
├── electron-builder.yml
├── electron.vite.config.mjs
├── jsconfig.json
├── package.json
├── resources/
│ └── ffmpeg/
│ ├── linux-amd64/
│ │ ├── GPLv3.txt
│ │ ├── ffmpeg
│ │ ├── ffprobe
│ │ ├── manpages/
│ │ │ ├── ffmpeg-all.txt
│ │ │ ├── ffmpeg-bitstream-filters.txt
│ │ │ ├── ffmpeg-codecs.txt
│ │ │ ├── ffmpeg-devices.txt
│ │ │ ├── ffmpeg-filters.txt
│ │ │ ├── ffmpeg-formats.txt
│ │ │ ├── ffmpeg-protocols.txt
│ │ │ ├── ffmpeg-resampler.txt
│ │ │ ├── ffmpeg-scaler.txt
│ │ │ ├── ffmpeg-utils.txt
│ │ │ ├── ffmpeg.txt
│ │ │ └── ffprobe.txt
│ │ ├── model/
│ │ │ ├── 000-PLEASE-README.TXT
│ │ │ ├── other_models/
│ │ │ │ ├── model_V8a.model
│ │ │ │ ├── nflx_v1.json
│ │ │ │ ├── nflx_v1.pkl
│ │ │ │ ├── nflx_v1.pkl.model
│ │ │ │ ├── nflx_vmaff_rf_v1.pkl
│ │ │ │ ├── nflx_vmaff_rf_v2.pkl
│ │ │ │ ├── nflxall_libsvmnusvr_currentbest.pkl
│ │ │ │ ├── nflxall_libsvmnusvr_currentbest.pkl.model
│ │ │ │ ├── nflxall_vmafv1.pkl
│ │ │ │ ├── nflxall_vmafv1.pkl.model
│ │ │ │ ├── nflxall_vmafv2.pkl
│ │ │ │ ├── nflxall_vmafv2.pkl.model
│ │ │ │ ├── nflxall_vmafv3.pkl
│ │ │ │ ├── nflxall_vmafv3.pkl.model
│ │ │ │ ├── nflxall_vmafv3a.pkl
│ │ │ │ ├── nflxall_vmafv3a.pkl.model
│ │ │ │ ├── nflxall_vmafv4.pkl
│ │ │ │ ├── nflxall_vmafv4.pkl.model
│ │ │ │ ├── nflxtrain_libsvmnusvr_currentbest.pkl
│ │ │ │ ├── nflxtrain_libsvmnusvr_currentbest.pkl.model
│ │ │ │ ├── nflxtrain_norm_type_none.json
│ │ │ │ ├── nflxtrain_norm_type_none.pkl
│ │ │ │ ├── nflxtrain_norm_type_none.pkl.model
│ │ │ │ ├── nflxtrain_vmafv1.pkl
│ │ │ │ ├── nflxtrain_vmafv1.pkl.model
│ │ │ │ ├── nflxtrain_vmafv2.pkl
│ │ │ │ ├── nflxtrain_vmafv2.pkl.model
│ │ │ │ ├── nflxtrain_vmafv3.pkl
│ │ │ │ ├── nflxtrain_vmafv3.pkl.model
│ │ │ │ ├── nflxtrain_vmafv3a.pkl
│ │ │ │ ├── nflxtrain_vmafv3a.pkl.model
│ │ │ │ ├── niqe_v0.1.pkl
│ │ │ │ ├── vmaf_4k_v0.6.1rc.pkl
│ │ │ │ ├── vmaf_4k_v0.6.1rc.pkl.model
│ │ │ │ ├── vmaf_v0.6.0.json
│ │ │ │ ├── vmaf_v0.6.0.pkl
│ │ │ │ ├── vmaf_v0.6.0.pkl.model
│ │ │ │ └── vmaf_v0.6.1mfz.json
│ │ │ ├── vmaf_4k_rb_v0.6.2/
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.json
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0001
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0001.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0002
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0002.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0003
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0003.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0004
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0004.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0005
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0005.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0006
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0006.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0007
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0007.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0008
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0008.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0009
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0009.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0010
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0010.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0011
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0011.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0012
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0012.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0013
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0013.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0014
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0014.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0015
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0015.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0016
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0016.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0017
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0017.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0018
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0018.model
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0019
│ │ │ │ ├── vmaf_4k_rb_v0.6.2.pkl.0019.model
│ │ │ │ └── vmaf_4k_rb_v0.6.2.pkl.model
│ │ │ ├── vmaf_4k_v0.6.1.json
│ │ │ ├── vmaf_b_v0.6.3.json
│ │ │ ├── vmaf_float_4k_v0.6.1.json
│ │ │ ├── vmaf_float_b_v0.6.3/
│ │ │ │ ├── vmaf_float_b_v0.6.3.json
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0001
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0001.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0002
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0002.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0003
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0003.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0004
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0004.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0005
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0005.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0006
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0006.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0007
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0007.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0008
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0008.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0009
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0009.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0010
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0010.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0011
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0011.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0012
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0012.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0013
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0013.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0014
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0014.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0015
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0015.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0016
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0016.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0017
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0017.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0018
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0018.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0019
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0019.model
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0020
│ │ │ │ ├── vmaf_float_b_v0.6.3.pkl.0020.model
│ │ │ │ └── vmaf_float_b_v0.6.3.pkl.model
│ │ │ ├── vmaf_float_b_v0.6.3.json
│ │ │ ├── vmaf_float_v0.6.1.json
│ │ │ ├── vmaf_float_v0.6.1.pkl
│ │ │ ├── vmaf_float_v0.6.1.pkl.model
│ │ │ ├── vmaf_float_v0.6.1neg.json
│ │ │ ├── vmaf_float_v0.6.1neg.pkl
│ │ │ ├── vmaf_float_v0.6.1neg.pkl.model
│ │ │ ├── vmaf_rb_v0.6.2/
│ │ │ │ ├── vmaf_rb_v0.6.2.json
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0001
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0001.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0002
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0002.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0003
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0003.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0004
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0004.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0005
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0005.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0006
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0006.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0007
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0007.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0008
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0008.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0009
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0009.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0010
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0010.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0011
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0011.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0012
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0012.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0013
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0013.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0014
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0014.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0015
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0015.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0016
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0016.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0017
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0017.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0018
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0018.model
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0019
│ │ │ │ ├── vmaf_rb_v0.6.2.pkl.0019.model
│ │ │ │ └── vmaf_rb_v0.6.2.pkl.model
│ │ │ ├── vmaf_rb_v0.6.3/
│ │ │ │ ├── vmaf_rb_v0.6.3.json
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0001
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0001.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0002
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0002.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0003
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0003.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0004
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0004.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0005
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0005.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0006
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0006.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0007
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0007.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0008
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0008.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0009
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0009.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0010
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0010.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0011
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0011.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0012
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0012.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0013
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0013.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0014
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0014.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0015
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0015.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0016
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0016.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0017
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0017.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0018
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0018.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0019
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0019.model
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0020
│ │ │ │ ├── vmaf_rb_v0.6.3.pkl.0020.model
│ │ │ │ └── vmaf_rb_v0.6.3.pkl.model
│ │ │ ├── vmaf_v0.6.1.json
│ │ │ └── vmaf_v0.6.1neg.json
│ │ ├── qt-faststart
│ │ └── readme.txt
│ └── win-amd64/
│ ├── include/
│ │ ├── libavcodec/
│ │ │ ├── ac3_parser.h
│ │ │ ├── adts_parser.h
│ │ │ ├── avcodec.h
│ │ │ ├── avdct.h
│ │ │ ├── avfft.h
│ │ │ ├── bsf.h
│ │ │ ├── codec.h
│ │ │ ├── codec_desc.h
│ │ │ ├── codec_id.h
│ │ │ ├── codec_par.h
│ │ │ ├── d3d11va.h
│ │ │ ├── dirac.h
│ │ │ ├── dv_profile.h
│ │ │ ├── dxva2.h
│ │ │ ├── jni.h
│ │ │ ├── mediacodec.h
│ │ │ ├── packet.h
│ │ │ ├── qsv.h
│ │ │ ├── vaapi.h
│ │ │ ├── vdpau.h
│ │ │ ├── version.h
│ │ │ ├── videotoolbox.h
│ │ │ ├── vorbis_parser.h
│ │ │ └── xvmc.h
│ │ ├── libavdevice/
│ │ │ ├── avdevice.h
│ │ │ └── version.h
│ │ ├── libavfilter/
│ │ │ ├── avfilter.h
│ │ │ ├── buffersink.h
│ │ │ ├── buffersrc.h
│ │ │ └── version.h
│ │ ├── libavformat/
│ │ │ ├── avformat.h
│ │ │ ├── avio.h
│ │ │ └── version.h
│ │ ├── libavutil/
│ │ │ ├── adler32.h
│ │ │ ├── aes.h
│ │ │ ├── aes_ctr.h
│ │ │ ├── attributes.h
│ │ │ ├── audio_fifo.h
│ │ │ ├── avassert.h
│ │ │ ├── avconfig.h
│ │ │ ├── avstring.h
│ │ │ ├── avutil.h
│ │ │ ├── base64.h
│ │ │ ├── blowfish.h
│ │ │ ├── bprint.h
│ │ │ ├── bswap.h
│ │ │ ├── buffer.h
│ │ │ ├── camellia.h
│ │ │ ├── cast5.h
│ │ │ ├── channel_layout.h
│ │ │ ├── common.h
│ │ │ ├── cpu.h
│ │ │ ├── crc.h
│ │ │ ├── des.h
│ │ │ ├── dict.h
│ │ │ ├── display.h
│ │ │ ├── dovi_meta.h
│ │ │ ├── downmix_info.h
│ │ │ ├── encryption_info.h
│ │ │ ├── error.h
│ │ │ ├── eval.h
│ │ │ ├── ffversion.h
│ │ │ ├── fifo.h
│ │ │ ├── file.h
│ │ │ ├── film_grain_params.h
│ │ │ ├── frame.h
│ │ │ ├── hash.h
│ │ │ ├── hdr_dynamic_metadata.h
│ │ │ ├── hmac.h
│ │ │ ├── hwcontext.h
│ │ │ ├── hwcontext_cuda.h
│ │ │ ├── hwcontext_d3d11va.h
│ │ │ ├── hwcontext_drm.h
│ │ │ ├── hwcontext_dxva2.h
│ │ │ ├── hwcontext_mediacodec.h
│ │ │ ├── hwcontext_opencl.h
│ │ │ ├── hwcontext_qsv.h
│ │ │ ├── hwcontext_vaapi.h
│ │ │ ├── hwcontext_vdpau.h
│ │ │ ├── hwcontext_videotoolbox.h
│ │ │ ├── hwcontext_vulkan.h
│ │ │ ├── imgutils.h
│ │ │ ├── intfloat.h
│ │ │ ├── intreadwrite.h
│ │ │ ├── lfg.h
│ │ │ ├── log.h
│ │ │ ├── lzo.h
│ │ │ ├── macros.h
│ │ │ ├── mastering_display_metadata.h
│ │ │ ├── mathematics.h
│ │ │ ├── md5.h
│ │ │ ├── mem.h
│ │ │ ├── motion_vector.h
│ │ │ ├── murmur3.h
│ │ │ ├── opt.h
│ │ │ ├── parseutils.h
│ │ │ ├── pixdesc.h
│ │ │ ├── pixelutils.h
│ │ │ ├── pixfmt.h
│ │ │ ├── random_seed.h
│ │ │ ├── rational.h
│ │ │ ├── rc4.h
│ │ │ ├── replaygain.h
│ │ │ ├── ripemd.h
│ │ │ ├── samplefmt.h
│ │ │ ├── sha.h
│ │ │ ├── sha512.h
│ │ │ ├── spherical.h
│ │ │ ├── stereo3d.h
│ │ │ ├── tea.h
│ │ │ ├── threadmessage.h
│ │ │ ├── time.h
│ │ │ ├── timecode.h
│ │ │ ├── timestamp.h
│ │ │ ├── tree.h
│ │ │ ├── twofish.h
│ │ │ ├── tx.h
│ │ │ ├── version.h
│ │ │ ├── video_enc_params.h
│ │ │ └── xtea.h
│ │ ├── libpostproc/
│ │ │ ├── postprocess.h
│ │ │ └── version.h
│ │ ├── libswresample/
│ │ │ ├── swresample.h
│ │ │ └── version.h
│ │ └── libswscale/
│ │ ├── swscale.h
│ │ └── version.h
│ ├── lib/
│ │ ├── avcodec-58.def
│ │ ├── avcodec.lib
│ │ ├── avdevice-58.def
│ │ ├── avdevice.lib
│ │ ├── avfilter-7.def
│ │ ├── avfilter.lib
│ │ ├── avformat-58.def
│ │ ├── avformat.lib
│ │ ├── avutil-56.def
│ │ ├── avutil.lib
│ │ ├── libavcodec.dll.a
│ │ ├── libavdevice.dll.a
│ │ ├── libavfilter.dll.a
│ │ ├── libavformat.dll.a
│ │ ├── libavutil.dll.a
│ │ ├── libpostproc.dll.a
│ │ ├── libswresample.dll.a
│ │ ├── libswscale.dll.a
│ │ ├── postproc-55.def
│ │ ├── postproc.lib
│ │ ├── swresample-3.def
│ │ ├── swresample.lib
│ │ ├── swscale-5.def
│ │ └── swscale.lib
│ └── presets/
│ ├── libvpx-1080p.ffpreset
│ ├── libvpx-1080p50_60.ffpreset
│ ├── libvpx-360p.ffpreset
│ ├── libvpx-720p.ffpreset
│ └── libvpx-720p50_60.ffpreset
└── src/
├── main/
│ ├── api/
│ │ ├── f2f.js
│ │ ├── request.js
│ │ └── tts.js
│ ├── config/
│ │ └── config.js
│ ├── dao/
│ │ ├── context.js
│ │ ├── f2f-model.js
│ │ ├── video.js
│ │ └── voice.js
│ ├── db/
│ │ ├── index.js
│ │ └── sql.js
│ ├── handlers/
│ │ ├── app.js
│ │ ├── file.js
│ │ └── index.js
│ ├── index.js
│ ├── interval/
│ │ └── interval.js
│ ├── logger.js
│ ├── service/
│ │ ├── context.js
│ │ ├── index.js
│ │ ├── model.js
│ │ ├── video.js
│ │ └── voice.js
│ └── util/
│ └── ffmpeg.js
├── preload/
│ └── index.js
└── renderer/
├── index.html
└── src/
├── App.vue
├── api/
│ └── index.js
├── assets/
│ ├── agreement.less
│ ├── base.css
│ ├── main.css
│ └── theme.css
├── client/
│ └── index.js
├── components/
│ ├── AppHeader.vue
│ ├── ModalFinished.vue
│ ├── agreement.vue
│ ├── deleteDialog.vue
│ ├── menuLIst.vue
│ └── model-create/
│ ├── ModalBox.vue
│ ├── ModalBoxGuide.vue
│ ├── ModalBoxUpload.vue
│ ├── ModelCreateView.vue
│ └── index.js
├── i18n/
│ ├── components/
│ │ └── common.js
│ ├── config/
│ │ ├── en.js
│ │ └── zh.js
│ └── index.js
├── main.js
├── router/
│ └── index.js
├── stores/
│ ├── app.js
│ ├── home.js
│ └── user.js
├── utils/
│ ├── const.js
│ └── index.js
└── views/
├── account/
│ └── index.vue
├── home/
│ ├── components/
│ │ ├── bannerList.vue
│ │ ├── myModelList.vue
│ │ ├── videoDialog.vue
│ │ └── worksList.vue
│ └── index.vue
└── video-edit/
├── VideoEditView.vue
├── edit/
│ ├── EditListener.vue
│ ├── EditText.vue
│ ├── EditTextSpeaker.vue
│ ├── EditUpload.vue
│ └── EditView.vue
├── header/
│ └── HeaderView.vue
├── preview/
│ └── PreviewView.vue
└── select/
└── SelectView.vue
SYMBOL INDEX (694 symbols across 122 files)
FILE: resources/ffmpeg/win-amd64/include/libavcodec/avcodec.h
type AVDiscard (line 227) | enum AVDiscard{
type AVAudioServiceType (line 239) | enum AVAudioServiceType {
type RcOverride (line 255) | typedef struct RcOverride{
type AVPanScan (line 424) | typedef struct AVPanScan {
type AVCPBProperties (line 453) | typedef struct AVCPBProperties {
type AVProducerReferenceTime (line 503) | typedef struct AVProducerReferenceTime {
type AVCodecInternal (line 521) | struct AVCodecInternal
type AVCodecContext (line 536) | typedef struct AVCodecContext {
type AVSubtitle (line 2421) | struct AVSubtitle
type MpegEncContext (line 2428) | struct MpegEncContext
type AVHWAccel (line 2438) | typedef struct AVHWAccel {
type AVPicture (line 2655) | typedef struct AVPicture {
type AVSubtitleType (line 2667) | enum AVSubtitleType {
type AVSubtitleRect (line 2687) | typedef struct AVSubtitleRect {
type AVSubtitle (line 2722) | typedef struct AVSubtitle {
type AVChromaLocation (line 2979) | enum AVChromaLocation
type AVChromaLocation (line 2990) | enum AVChromaLocation
type AVPixelFormat (line 3360) | enum AVPixelFormat
type AVPictureStructure (line 3370) | enum AVPictureStructure {
type AVCodecParserContext (line 3377) | typedef struct AVCodecParserContext {
type AVCodecParser (line 3544) | typedef struct AVCodecParser {
type AVPixelFormat (line 3751) | enum AVPixelFormat
type AVPixelFormat (line 3764) | enum AVPixelFormat
type AVPixelFormat (line 3770) | enum AVPixelFormat
type AVPixelFormat (line 3778) | enum AVPixelFormat
type AVPixelFormat (line 3785) | enum AVPixelFormat
type AVPixelFormat (line 3792) | enum AVPixelFormat
type AVPixelFormat (line 3798) | enum AVPixelFormat
type AVPixelFormat (line 3828) | enum AVPixelFormat
type AVPixelFormat (line 3836) | enum AVPixelFormat
type AVPixelFormat (line 3855) | enum AVPixelFormat
type AVPixelFormat (line 3855) | enum AVPixelFormat
type AVPixelFormat (line 3856) | enum AVPixelFormat
type AVPixelFormat (line 3864) | enum AVPixelFormat
type AVPixelFormat (line 3864) | enum AVPixelFormat
type AVPixelFormat (line 3870) | enum AVPixelFormat
type AVPixelFormat (line 3870) | enum AVPixelFormat
type AVPixelFormat (line 3871) | enum AVPixelFormat
type AVPixelFormat (line 3874) | enum AVPixelFormat
type AVPixelFormat (line 3874) | enum AVPixelFormat
type AVPixelFormat (line 3875) | enum AVPixelFormat
type AVPixelFormat (line 3878) | enum AVPixelFormat
type AVCodecContext (line 3878) | struct AVCodecContext
type AVPixelFormat (line 3878) | enum AVPixelFormat
type AVCodecID (line 3922) | enum AVCodecID
type AVSampleFormat (line 3952) | enum AVSampleFormat
type AVCodecID (line 3980) | enum AVCodecID
type AVCodecID (line 3988) | enum AVCodecID
type AVSampleFormat (line 3988) | enum AVSampleFormat
type AVCodecID (line 3998) | enum AVCodecID
type AVBitStreamFilterContext (line 4017) | typedef struct AVBitStreamFilterContext {
type AVLockOp (line 4126) | enum AVLockOp {
type AVLockOp (line 4160) | enum AVLockOp
FILE: resources/ffmpeg/win-amd64/include/libavcodec/avdct.h
type AVDCT (line 29) | typedef struct AVDCT {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/avfft.h
type FFTSample (line 35) | typedef float FFTSample;
type FFTComplex (line 37) | typedef struct FFTComplex {
type FFTContext (line 41) | typedef struct FFTContext FFTContext;
type RDFTransformType (line 71) | enum RDFTransformType {
type RDFTContext (line 78) | typedef struct RDFTContext RDFTContext;
type RDFTransformType (line 85) | enum RDFTransformType
type DCTContext (line 91) | typedef struct DCTContext DCTContext;
type DCTTransformType (line 93) | enum DCTTransformType {
type DCTTransformType (line 110) | enum DCTTransformType
FILE: resources/ffmpeg/win-amd64/include/libavcodec/bsf.h
type AVBSFInternal (line 37) | typedef struct AVBSFInternal AVBSFInternal;
type AVBSFContext (line 49) | typedef struct AVBSFContext {
type AVBitStreamFilter (line 98) | typedef struct AVBitStreamFilter {
type AVBSFList (line 240) | typedef struct AVBSFList AVBSFList;
FILE: resources/ffmpeg/win-amd64/include/libavcodec/codec.h
type AVProfile (line 183) | typedef struct AVProfile {
type AVCodecDefault (line 188) | typedef struct AVCodecDefault AVCodecDefault;
type AVCodecContext (line 190) | struct AVCodecContext
type AVSubtitle (line 191) | struct AVSubtitle
type AVPacket (line 192) | struct AVPacket
type AVCodec (line 197) | typedef struct AVCodec {
type AVCodecID (line 368) | enum AVCodecID
type AVCodecID (line 384) | enum AVCodecID
type AVCodecHWConfig (line 443) | typedef struct AVCodecHWConfig {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/codec_desc.h
type AVCodecDescriptor (line 38) | typedef struct AVCodecDescriptor {
type AVCodecID (line 107) | enum AVCodecID
FILE: resources/ffmpeg/win-amd64/include/libavcodec/codec_id.h
type AVCodecID (line 46) | enum AVCodecID {
type AVMediaType (line 580) | enum AVMediaType
type AVCodecID (line 580) | enum AVCodecID
type AVCodecID (line 586) | enum AVCodecID
FILE: resources/ffmpeg/win-amd64/include/libavcodec/codec_par.h
type AVFieldOrder (line 36) | enum AVFieldOrder {
type AVCodecParameters (line 52) | typedef struct AVCodecParameters {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/d3d11va.h
type AVD3D11VAContext (line 59) | typedef struct AVD3D11VAContext {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/dirac.h
type DiracParseCodes (line 57) | enum DiracParseCodes {
type DiracVersionInfo (line 76) | typedef struct DiracVersionInfo {
type AVDiracSeqHeader (line 81) | typedef struct AVDiracSeqHeader {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/dv_profile.h
type AVDVProfile (line 39) | typedef struct AVDVProfile {
type AVPixelFormat (line 75) | enum AVPixelFormat
type AVPixelFormat (line 81) | enum AVPixelFormat
FILE: resources/ffmpeg/win-amd64/include/libavcodec/dxva2.h
type dxva_context (line 57) | struct dxva_context {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/mediacodec.h
type AVMediaCodecContext (line 33) | typedef struct AVMediaCodecContext {
type AVMediaCodecBuffer (line 73) | typedef struct MediaCodecBuffer AVMediaCodecBuffer;
FILE: resources/ffmpeg/win-amd64/include/libavcodec/packet.h
type AVPacketSideDataType (line 40) | enum AVPacketSideDataType {
type AVPacketSideData (line 306) | typedef struct AVPacketSideData {
type AVPacket (line 346) | typedef struct AVPacket {
type AVPacketList (line 404) | struct AVPacketList {
type AVSideDataParamChangeFlags (line 431) | enum AVSideDataParamChangeFlags {
type AVPacketSideDataType (line 579) | enum AVPacketSideDataType
type AVPacketSideDataType (line 599) | enum AVPacketSideDataType
type AVPacketSideDataType (line 610) | enum AVPacketSideDataType
type AVPacketSideDataType (line 626) | enum AVPacketSideDataType
type AVPacketSideDataType (line 641) | enum AVPacketSideDataType
FILE: resources/ffmpeg/win-amd64/include/libavcodec/qsv.h
type AVQSVContext (line 36) | typedef struct AVQSVContext {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/vaapi.h
function vaapi_context (line 56) | struct attribute_deprecated vaapi_context {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/vdpau.h
type AVCodecContext (line 60) | struct AVCodecContext
type AVFrame (line 61) | struct AVFrame
type AVCodecContext (line 63) | struct AVCodecContext
type AVFrame (line 63) | struct AVFrame
type AVVDPAUContext (line 81) | typedef struct AVVDPAUContext {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/videotoolbox.h
type AVVideotoolboxContext (line 46) | typedef struct AVVideotoolboxContext {
FILE: resources/ffmpeg/win-amd64/include/libavcodec/vorbis_parser.h
type AVVorbisParseContext (line 31) | typedef struct AVVorbisParseContext AVVorbisParseContext;
FILE: resources/ffmpeg/win-amd64/include/libavcodec/xvmc.h
function xvmc_pix_fmt (line 46) | struct attribute_deprecated xvmc_pix_fmt {
FILE: resources/ffmpeg/win-amd64/include/libavdevice/avdevice.h
type AVDeviceRect (line 109) | typedef struct AVDeviceRect {
type AVAppToDevMessageType (line 119) | enum AVAppToDevMessageType {
type AVDevToAppMessageType (line 198) | enum AVDevToAppMessageType {
type AVFormatContext (line 306) | struct AVFormatContext
type AVAppToDevMessageType (line 307) | enum AVAppToDevMessageType
type AVFormatContext (line 320) | struct AVFormatContext
type AVDevToAppMessageType (line 321) | enum AVDevToAppMessageType
type AVDeviceCapabilitiesQuery (line 401) | typedef struct AVDeviceCapabilitiesQuery {
type AVDeviceInfo (line 457) | typedef struct AVDeviceInfo {
type AVDeviceInfoList (line 465) | typedef struct AVDeviceInfoList {
type AVFormatContext (line 484) | struct AVFormatContext
type AVInputFormat (line 510) | struct AVInputFormat
type AVOutputFormat (line 512) | struct AVOutputFormat
FILE: resources/ffmpeg/win-amd64/include/libavfilter/avfilter.h
type AVFilterContext (line 67) | typedef struct AVFilterContext AVFilterContext;
type AVFilterLink (line 68) | typedef struct AVFilterLink AVFilterLink;
type AVFilterPad (line 69) | typedef struct AVFilterPad AVFilterPad;
type AVFilterFormats (line 70) | typedef struct AVFilterFormats AVFilterFormats;
type AVFilterChannelLayouts (line 71) | typedef struct AVFilterChannelLayouts AVFilterChannelLayouts;
type AVMediaType (line 99) | enum AVMediaType
type AVFilter (line 145) | typedef struct AVFilter {
type AVFilterInternal (line 338) | typedef struct AVFilterInternal AVFilterInternal;
type AVFilterContext (line 341) | struct AVFilterContext {
type AVFilterFormatsConfig (line 440) | typedef struct AVFilterFormatsConfig {
type AVFilterLink (line 471) | struct AVFilterLink {
type AVFilterGraphInternal (line 819) | typedef struct AVFilterGraphInternal AVFilterGraphInternal;
type AVFilterGraph (line 850) | typedef struct AVFilterGraph {
type AVFilterInOut (line 1013) | typedef struct AVFilterInOut {
FILE: resources/ffmpeg/win-amd64/include/libavfilter/buffersink.h
type AVBufferSinkParams (line 102) | typedef struct AVBufferSinkParams {
type AVABufferSinkParams (line 117) | typedef struct AVABufferSinkParams {
type AVMediaType (line 149) | enum AVMediaType
FILE: resources/ffmpeg/win-amd64/include/libavfilter/buffersrc.h
type AVBufferSrcParameters (line 73) | typedef struct AVBufferSrcParameters {
FILE: resources/ffmpeg/win-amd64/include/libavformat/avformat.h
type AVFormatContext (line 319) | struct AVFormatContext
type AVDeviceInfoList (line 321) | struct AVDeviceInfoList
type AVDeviceCapabilitiesQuery (line 322) | struct AVDeviceCapabilitiesQuery
type AVCodecTag (line 436) | struct AVCodecTag
type AVProbeData (line 441) | typedef struct AVProbeData {
type AVOutputFormat (line 490) | typedef struct AVOutputFormat {
type AVInputFormat (line 640) | typedef struct AVInputFormat {
type AVStreamParseType (line 792) | enum AVStreamParseType {
type AVIndexEntry (line 803) | typedef struct AVIndexEntry {
type AVStreamInternal (line 850) | typedef struct AVStreamInternal AVStreamInternal;
type AVStream (line 875) | typedef struct AVStream {
type AVCodecParserContext (line 1135) | struct AVCodecParserContext
type AVProgram (line 1152) | typedef struct AVProgram {
type AVChapter (line 1187) | typedef struct AVChapter {
type AVFormatContext (line 1202) | struct AVFormatContext
type AVFormatContext (line 1205) | struct AVFormatContext
type AVDurationEstimationMethod (line 1212) | enum AVDurationEstimationMethod {
type AVFormatInternal (line 1218) | typedef struct AVFormatInternal AVFormatInternal;
type AVFormatContext (line 1234) | typedef struct AVFormatContext {
type AVDurationEstimationMethod (line 1919) | enum AVDurationEstimationMethod
type AVPacketSideDataType (line 2079) | enum AVPacketSideDataType
type AVPacketSideDataType (line 2094) | enum AVPacketSideDataType
type AVPacketSideDataType (line 2109) | enum AVPacketSideDataType
type AVMediaType (line 2298) | enum AVMediaType
type AVCodecID (line 2624) | enum AVCodecID
type AVMediaType (line 2626) | enum AVMediaType
type AVFormatContext (line 2643) | struct AVFormatContext
type AVCodecID (line 2719) | enum AVCodecID
type AVCodecTag (line 2719) | struct AVCodecTag
type AVCodecTag (line 2729) | struct AVCodecTag
type AVCodecID (line 2729) | enum AVCodecID
type AVCodecTag (line 2740) | struct AVCodecTag
type AVCodecID (line 2740) | enum AVCodecID
type AVCodecID (line 2878) | enum AVCodecID
type AVCodecTag (line 2896) | struct AVCodecTag
type AVCodecTag (line 2900) | struct AVCodecTag
type AVCodecTag (line 2904) | struct AVCodecTag
type AVCodecTag (line 2908) | struct AVCodecTag
type AVTimebaseSource (line 2978) | enum AVTimebaseSource {
type AVTimebaseSource (line 2999) | enum AVTimebaseSource
FILE: resources/ffmpeg/win-amd64/include/libavformat/avio.h
type AVIOInterruptCB (line 58) | typedef struct AVIOInterruptCB {
type AVIODirEntryType (line 66) | enum AVIODirEntryType {
type AVIODirEntry (line 86) | typedef struct AVIODirEntry {
type AVIODirContext (line 103) | typedef struct AVIODirContext {
type AVIODataMarkerType (line 111) | enum AVIODataMarkerType {
type AVIOContext (line 161) | typedef struct AVIOContext {
type AVIODataMarkerType (line 524) | enum AVIODataMarkerType
function av_always_inline (line 557) | static av_always_inline int64_t avio_tell(AVIOContext *s)
type AVBPrint (line 849) | struct AVBPrint
type AVBPrint (line 857) | struct AVBPrint
FILE: resources/ffmpeg/win-amd64/include/libavutil/adler32.h
type AVAdler (line 44) | typedef unsigned long AVAdler;
type AVAdler (line 46) | typedef uint32_t AVAdler;
FILE: resources/ffmpeg/win-amd64/include/libavutil/aes.h
type AVAES (line 37) | struct AVAES
type AVAES (line 42) | struct AVAES
type AVAES (line 49) | struct AVAES
type AVAES (line 59) | struct AVAES
FILE: resources/ffmpeg/win-amd64/include/libavutil/aes_ctr.h
type AVAESCTR (line 33) | struct AVAESCTR
type AVAESCTR (line 38) | struct AVAESCTR
type AVAESCTR (line 44) | struct AVAESCTR
type AVAESCTR (line 49) | struct AVAESCTR
type AVAESCTR (line 57) | struct AVAESCTR
type AVAESCTR (line 62) | struct AVAESCTR
type AVAESCTR (line 67) | struct AVAESCTR
type AVAESCTR (line 72) | struct AVAESCTR
type AVAESCTR (line 77) | struct AVAESCTR
type AVAESCTR (line 82) | struct AVAESCTR
FILE: resources/ffmpeg/win-amd64/include/libavutil/audio_fifo.h
type AVAudioFifo (line 49) | typedef struct AVAudioFifo AVAudioFifo;
type AVSampleFormat (line 66) | enum AVSampleFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/avstring.h
function av_strnlen (line 141) | static inline size_t av_strnlen(const char *s, size_t len)
function av_const (line 211) | static inline av_const int av_isdigit(int c)
function av_const (line 219) | static inline av_const int av_isgraph(int c)
function av_const (line 227) | static inline av_const int av_isspace(int c)
function av_const (line 236) | static inline av_const int av_toupper(int c)
function av_const (line 246) | static inline av_const int av_tolower(int c)
function av_const (line 256) | static inline av_const int av_isxdigit(int c)
type AVEscapeMode (line 323) | enum AVEscapeMode {
type AVEscapeMode (line 378) | enum AVEscapeMode
FILE: resources/ffmpeg/win-amd64/include/libavutil/avutil.h
type AVMediaType (line 199) | enum AVMediaType {
type AVMediaType (line 213) | enum AVMediaType
type AVPictureType (line 272) | enum AVPictureType {
type AVPictureType (line 290) | enum AVPictureType
FILE: resources/ffmpeg/win-amd64/include/libavutil/blowfish.h
type AVBlowfish (line 35) | typedef struct AVBlowfish {
type AVBlowfish (line 52) | struct AVBlowfish
type AVBlowfish (line 62) | struct AVBlowfish
type AVBlowfish (line 75) | struct AVBlowfish
FILE: resources/ffmpeg/win-amd64/include/libavutil/bprint.h
type tm (line 148) | struct tm
type tm (line 160) | struct tm
function av_bprint_is_complete (line 185) | static inline int av_bprint_is_complete(const AVBPrint *buf)
type AVEscapeMode (line 217) | enum AVEscapeMode
FILE: resources/ffmpeg/win-amd64/include/libavutil/bswap.h
function av_bswap16 (line 58) | uint16_t av_bswap16(uint16_t x)
function av_bswap32 (line 66) | uint32_t av_bswap32(uint32_t x)
function av_bswap64 (line 73) | static inline uint64_t av_const av_bswap64(uint64_t x)
FILE: resources/ffmpeg/win-amd64/include/libavutil/buffer.h
type AVBuffer (line 76) | typedef struct AVBuffer AVBuffer;
type AVBufferRef (line 84) | typedef struct AVBufferRef {
type AVBufferPool (line 277) | typedef struct AVBufferPool AVBufferPool;
FILE: resources/ffmpeg/win-amd64/include/libavutil/camellia.h
type AVCAMELLIA (line 38) | struct AVCAMELLIA
type AVCAMELLIA (line 44) | struct AVCAMELLIA
type AVCAMELLIA (line 53) | struct AVCAMELLIA
type AVCAMELLIA (line 65) | struct AVCAMELLIA
FILE: resources/ffmpeg/win-amd64/include/libavutil/cast5.h
type AVCAST5 (line 38) | struct AVCAST5
type AVCAST5 (line 44) | struct AVCAST5
type AVCAST5 (line 53) | struct AVCAST5
type AVCAST5 (line 64) | struct AVCAST5
type AVCAST5 (line 76) | struct AVCAST5
FILE: resources/ffmpeg/win-amd64/include/libavutil/channel_layout.h
type AVMatrixEncoding (line 120) | enum AVMatrixEncoding {
type AVBPrint (line 173) | struct AVBPrint
type AVBPrint (line 177) | struct AVBPrint
FILE: resources/ffmpeg/win-amd64/include/libavutil/common.h
function av_clip_c (line 200) | int av_clip_c(int a, int amin, int amax)
function av_clip64_c (line 217) | int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax)
function av_clip_uint8_c (line 232) | uint8_t av_clip_uint8_c(int a)
function av_clip_int8_c (line 243) | int8_t av_clip_int8_c(int a)
function av_clip_uint16_c (line 254) | uint16_t av_clip_uint16_c(int a)
function av_clip_int16_c (line 265) | int16_t av_clip_int16_c(int a)
function av_clipl_int32_c (line 276) | int32_t av_clipl_int32_c(int64_t a)
function av_clip_intp2_c (line 288) | int av_clip_intp2_c(int a, int p)
function av_clip_uintp2_c (line 302) | unsigned av_clip_uintp2_c(int a, int p)
function av_mod_uintp2_c (line 314) | unsigned av_mod_uintp2_c(unsigned a, unsigned p)
function av_always_inline (line 326) | static av_always_inline int av_sat_add32_c(int a, int b)
function av_always_inline (line 338) | static av_always_inline int av_sat_dadd32_c(int a, int b)
function av_always_inline (line 350) | static av_always_inline int av_sat_sub32_c(int a, int b)
function av_always_inline (line 362) | static av_always_inline int av_sat_dsub32_c(int a, int b)
function av_always_inline (line 374) | static av_always_inline int64_t av_sat_add64_c(int64_t a, int64_t b) {
function av_always_inline (line 393) | static av_always_inline int64_t av_sat_sub64_c(int64_t a, int64_t b) {
function av_clipf_c (line 413) | float av_clipf_c(float a, float amin, float amax)
function av_clipd_c (line 430) | double av_clipd_c(double a, double amin, double amax)
function av_ceil_log2_c (line 444) | int av_ceil_log2_c(int x)
function av_popcount_c (line 454) | int av_popcount_c(uint32_t x)
function av_popcount64_c (line 468) | int av_popcount64_c(uint64_t x)
function av_parity_c (line 473) | int av_parity_c(uint32_t v)
FILE: resources/ffmpeg/win-amd64/include/libavutil/crc.h
type AVCRC (line 47) | typedef uint32_t AVCRC;
type AVCRCId (line 49) | typedef enum {
FILE: resources/ffmpeg/win-amd64/include/libavutil/des.h
type AVDES (line 33) | typedef struct AVDES {
type AVDES (line 50) | struct AVDES
type AVDES (line 62) | struct AVDES
type AVDES (line 71) | struct AVDES
FILE: resources/ffmpeg/win-amd64/include/libavutil/dict.h
type AVDictionaryEntry (line 81) | typedef struct AVDictionaryEntry {
type AVDictionary (line 86) | typedef struct AVDictionary AVDictionary;
FILE: resources/ffmpeg/win-amd64/include/libavutil/dovi_meta.h
type AVDOVIDecoderConfigurationRecord (line 51) | typedef struct AVDOVIDecoderConfigurationRecord {
FILE: resources/ffmpeg/win-amd64/include/libavutil/downmix_info.h
type AVDownmixType (line 44) | enum AVDownmixType {
type AVDownmixInfo (line 58) | typedef struct AVDownmixInfo {
FILE: resources/ffmpeg/win-amd64/include/libavutil/encryption_info.h
type AVSubsampleEncryptionInfo (line 25) | typedef struct AVSubsampleEncryptionInfo {
type AVEncryptionInfo (line 43) | typedef struct AVEncryptionInfo {
type AVEncryptionInitInfo (line 88) | typedef struct AVEncryptionInitInfo {
FILE: resources/ffmpeg/win-amd64/include/libavutil/eval.h
type AVExpr (line 31) | typedef struct AVExpr AVExpr;
FILE: resources/ffmpeg/win-amd64/include/libavutil/fifo.h
type AVFifoBuffer (line 31) | typedef struct AVFifoBuffer {
FILE: resources/ffmpeg/win-amd64/include/libavutil/film_grain_params.h
type AVFilmGrainParamsType (line 24) | enum AVFilmGrainParamsType {
type AVFilmGrainAOMParams (line 39) | typedef struct AVFilmGrainAOMParams {
type AVFilmGrainParams (line 128) | typedef struct AVFilmGrainParams {
FILE: resources/ffmpeg/win-amd64/include/libavutil/frame.h
type AVFrameSideDataType (line 48) | enum AVFrameSideDataType {
type AVActiveFormatDescription (line 203) | enum AVActiveFormatDescription {
type AVFrameSideData (line 220) | typedef struct AVFrameSideData {
type AVRegionOfInterest (line 243) | typedef struct AVRegionOfInterest {
type AVFrame (line 318) | typedef struct AVFrame {
type AVColorSpace (line 750) | enum AVColorSpace
type AVColorRange (line 754) | enum AVColorRange
type AVColorSpace (line 761) | enum AVColorSpace
type AVFrameSideDataType (line 919) | enum AVFrameSideDataType
type AVFrameSideDataType (line 939) | enum AVFrameSideDataType
type AVFrameSideDataType (line 947) | enum AVFrameSideDataType
type AVFrameSideDataType (line 952) | enum AVFrameSideDataType
type AVFrameSideDataType (line 991) | enum AVFrameSideDataType
FILE: resources/ffmpeg/win-amd64/include/libavutil/hash.h
type AVHashContext (line 117) | struct AVHashContext
type AVHashContext (line 127) | struct AVHashContext
type AVHashContext (line 142) | struct AVHashContext
type AVHashContext (line 169) | struct AVHashContext
type AVHashContext (line 176) | struct AVHashContext
type AVHashContext (line 186) | struct AVHashContext
type AVHashContext (line 188) | struct AVHashContext
type AVHashContext (line 205) | struct AVHashContext
type AVHashContext (line 220) | struct AVHashContext
type AVHashContext (line 238) | struct AVHashContext
type AVHashContext (line 256) | struct AVHashContext
type AVHashContext (line 263) | struct AVHashContext
FILE: resources/ffmpeg/win-amd64/include/libavutil/hdr_dynamic_metadata.h
type AVHDRPlusOverlapProcessOption (line 30) | enum AVHDRPlusOverlapProcessOption {
type AVHDRPlusPercentile (line 39) | typedef struct AVHDRPlusPercentile {
type AVHDRPlusColorTransformParams (line 59) | typedef struct AVHDRPlusColorTransformParams {
type AVDynamicHDRPlus (line 243) | typedef struct AVDynamicHDRPlus {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hmac.h
type AVHMACType (line 33) | enum AVHMACType {
type AVHMAC (line 42) | typedef struct AVHMAC AVHMAC;
type AVHMACType (line 48) | enum AVHMACType
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext.h
type AVHWDeviceType (line 27) | enum AVHWDeviceType {
type AVHWDeviceInternal (line 42) | typedef struct AVHWDeviceInternal AVHWDeviceInternal;
type AVHWDeviceContext (line 61) | typedef struct AVHWDeviceContext {
type AVHWFramesInternal (line 112) | typedef struct AVHWFramesInternal AVHWFramesInternal;
type AVHWFramesContext (line 124) | typedef struct AVHWFramesContext {
type AVHWDeviceType (line 239) | enum AVHWDeviceType
type AVHWDeviceType (line 247) | enum AVHWDeviceType
type AVHWDeviceType (line 257) | enum AVHWDeviceType
type AVHWDeviceType (line 257) | enum AVHWDeviceType
type AVHWDeviceType (line 266) | enum AVHWDeviceType
type AVHWDeviceType (line 303) | enum AVHWDeviceType
type AVHWDeviceType (line 328) | enum AVHWDeviceType
type AVHWDeviceType (line 348) | enum AVHWDeviceType
type AVHWFrameTransferDirection (line 415) | enum AVHWFrameTransferDirection {
type AVHWFrameTransferDirection (line 443) | enum AVHWFrameTransferDirection
type AVPixelFormat (line 444) | enum AVPixelFormat
type AVHWFramesConstraints (line 453) | typedef struct AVHWFramesConstraints {
type AVPixelFormat (line 600) | enum AVPixelFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_cuda.h
type AVCUDADeviceContextInternal (line 37) | typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal;
type AVCUDADeviceContext (line 42) | typedef struct AVCUDADeviceContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_d3d11va.h
type AVD3D11VADeviceContext (line 45) | typedef struct AVD3D11VADeviceContext {
type AVD3D11FrameDescriptor (line 109) | typedef struct AVD3D11FrameDescriptor {
type AVD3D11VAFramesContext (line 131) | typedef struct AVD3D11VAFramesContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_drm.h
type AVDRMObjectDescriptor (line 48) | typedef struct AVDRMObjectDescriptor {
type AVDRMPlaneDescriptor (line 74) | typedef struct AVDRMPlaneDescriptor {
type AVDRMLayerDescriptor (line 96) | typedef struct AVDRMLayerDescriptor {
type AVDRMFrameDescriptor (line 133) | typedef struct AVDRMFrameDescriptor {
type AVDRMDeviceContext (line 157) | typedef struct AVDRMDeviceContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_dxva2.h
type AVDXVA2DeviceContext (line 39) | typedef struct AVDXVA2DeviceContext {
type AVDXVA2FramesContext (line 46) | typedef struct AVDXVA2FramesContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_mediacodec.h
type AVMediaCodecDeviceContext (line 27) | typedef struct AVMediaCodecDeviceContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_opencl.h
type AVOpenCLFrameDescriptor (line 47) | typedef struct AVOpenCLFrameDescriptor {
type AVOpenCLDeviceContext (line 63) | typedef struct AVOpenCLDeviceContext {
type AVOpenCLFramesContext (line 89) | typedef struct AVOpenCLFramesContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_qsv.h
type AVQSVDeviceContext (line 35) | typedef struct AVQSVDeviceContext {
type AVQSVFramesContext (line 42) | typedef struct AVQSVFramesContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_vaapi.h
type AVVAAPIDeviceContext (line 68) | typedef struct AVVAAPIDeviceContext {
type AVVAAPIFramesContext (line 88) | typedef struct AVVAAPIFramesContext {
type AVVAAPIHWConfig (line 110) | typedef struct AVVAAPIHWConfig {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_vdpau.h
type AVVDPAUDeviceContext (line 35) | typedef struct AVVDPAUDeviceContext {
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_videotoolbox.h
type AVPixelFormat (line 46) | enum AVPixelFormat
type AVPixelFormat (line 52) | enum AVPixelFormat
type AVPixelFormat (line 58) | enum AVPixelFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/hwcontext_vulkan.h
type AVVulkanDeviceContext (line 39) | typedef struct AVVulkanDeviceContext {
type AVVulkanFramesContext (line 112) | typedef struct AVVulkanFramesContext {
type AVVkFrame (line 149) | typedef struct AVVkFrame {
type AVPixelFormat (line 202) | enum AVPixelFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/imgutils.h
type AVPixelFormat (line 59) | enum AVPixelFormat
type AVPixelFormat (line 68) | enum AVPixelFormat
type AVPixelFormat (line 81) | enum AVPixelFormat
type AVPixelFormat (line 95) | enum AVPixelFormat
type AVPixelFormat (line 109) | enum AVPixelFormat
type AVPixelFormat (line 135) | enum AVPixelFormat
type AVPixelFormat (line 153) | enum AVPixelFormat
type AVPixelFormat (line 183) | enum AVPixelFormat
type AVPixelFormat (line 195) | enum AVPixelFormat
type AVPixelFormat (line 216) | enum AVPixelFormat
type AVPixelFormat (line 243) | enum AVPixelFormat
type AVPixelFormat (line 283) | enum AVPixelFormat
type AVColorRange (line 283) | enum AVColorRange
FILE: resources/ffmpeg/win-amd64/include/libavutil/intfloat.h
function av_always_inline (line 40) | static av_always_inline float av_int2float(uint32_t i)
function av_always_inline (line 50) | static av_always_inline uint32_t av_float2int(float f)
function av_always_inline (line 60) | static av_always_inline double av_int2double(uint64_t i)
function av_always_inline (line 70) | static av_always_inline uint64_t av_double2int(double f)
FILE: resources/ffmpeg/win-amd64/include/libavutil/intreadwrite.h
type av_alias64 (line 27) | typedef union {
type av_alias32 (line 36) | typedef union {
type av_alias16 (line 43) | typedef union {
FILE: resources/ffmpeg/win-amd64/include/libavutil/lfg.h
type AVLFG (line 33) | typedef struct AVLFG {
function av_lfg_get (line 53) | static inline unsigned int av_lfg_get(AVLFG *c){
function av_mlfg_get (line 64) | static inline unsigned int av_mlfg_get(AVLFG *c){
FILE: resources/ffmpeg/win-amd64/include/libavutil/log.h
type AVClassCategory (line 29) | typedef enum {
type AVOptionRanges (line 60) | struct AVOptionRanges
type AVClass (line 67) | typedef struct AVClass {
FILE: resources/ffmpeg/win-amd64/include/libavutil/mastering_display_metadata.h
type AVMasteringDisplayMetadata (line 38) | typedef struct AVMasteringDisplayMetadata {
type AVContentLightMetadata (line 98) | typedef struct AVContentLightMetadata {
FILE: resources/ffmpeg/win-amd64/include/libavutil/mathematics.h
type AVRounding (line 79) | enum AVRounding {
type AVRounding (line 140) | enum AVRounding
type AVRounding (line 161) | enum AVRounding
FILE: resources/ffmpeg/win-amd64/include/libavutil/md5.h
type AVMD5 (line 46) | struct AVMD5
type AVMD5 (line 51) | struct AVMD5
type AVMD5 (line 58) | struct AVMD5
type AVMD5 (line 68) | struct AVMD5
type AVMD5 (line 70) | struct AVMD5
type AVMD5 (line 79) | struct AVMD5
FILE: resources/ffmpeg/win-amd64/include/libavutil/mem.h
function av_size_mult (line 675) | static inline int av_size_mult(size_t a, size_t b, size_t *r)
FILE: resources/ffmpeg/win-amd64/include/libavutil/motion_vector.h
type AVMotionVector (line 24) | typedef struct AVMotionVector {
FILE: resources/ffmpeg/win-amd64/include/libavutil/murmur3.h
type AVMurMur3 (line 69) | struct AVMurMur3
type AVMurMur3 (line 81) | struct AVMurMur3
type AVMurMur3 (line 94) | struct AVMurMur3
type AVMurMur3 (line 104) | struct AVMurMur3
type AVMurMur3 (line 106) | struct AVMurMur3
type AVMurMur3 (line 115) | struct AVMurMur3
FILE: resources/ffmpeg/win-amd64/include/libavutil/opt.h
type AVOptionType (line 223) | enum AVOptionType{
type AVOption (line 248) | typedef struct AVOption {
type AVOptionRange (line 310) | typedef struct AVOptionRange {
type AVOptionRanges (line 333) | typedef struct AVOptionRanges {
type AVDictionary (line 483) | struct AVDictionary
type AVDictionary (line 501) | struct AVDictionary
type AVPixelFormat (line 707) | enum AVPixelFormat
type AVSampleFormat (line 708) | enum AVSampleFormat
type AVPixelFormat (line 762) | enum AVPixelFormat
type AVSampleFormat (line 763) | enum AVSampleFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/parseutils.h
type tm (line 186) | struct tm
type tm (line 191) | struct tm
FILE: resources/ffmpeg/win-amd64/include/libavutil/pixdesc.h
type AVComponentDescriptor (line 31) | typedef struct AVComponentDescriptor {
type AVPixFmtDescriptor (line 81) | typedef struct AVPixFmtDescriptor {
type AVPixelFormat (line 213) | enum AVPixelFormat
type AVPixelFormat (line 228) | enum AVPixelFormat
type AVPixelFormat (line 240) | enum AVPixelFormat
type AVPixelFormat (line 247) | enum AVPixelFormat
type AVColorRange (line 252) | enum AVColorRange
type AVColorPrimaries (line 262) | enum AVColorPrimaries
type AVColorTransferCharacteristic (line 272) | enum AVColorTransferCharacteristic
type AVColorSpace (line 282) | enum AVColorSpace
type AVChromaLocation (line 292) | enum AVChromaLocation
type AVPixelFormat (line 310) | enum AVPixelFormat
type AVPixelFormat (line 318) | enum AVPixelFormat
type AVPixelFormat (line 331) | enum AVPixelFormat
type AVPixelFormat (line 390) | enum AVPixelFormat
type AVPixelFormat (line 390) | enum AVPixelFormat
type AVPixelFormat (line 417) | enum AVPixelFormat
type AVPixelFormat (line 418) | enum AVPixelFormat
type AVPixelFormat (line 439) | enum AVPixelFormat
type AVPixelFormat (line 439) | enum AVPixelFormat
type AVPixelFormat (line 439) | enum AVPixelFormat
type AVPixelFormat (line 440) | enum AVPixelFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/pixfmt.h
type AVPixelFormat (line 64) | enum AVPixelFormat {
type AVColorPrimaries (line 458) | enum AVColorPrimaries {
type AVColorTransferCharacteristic (line 483) | enum AVColorTransferCharacteristic {
type AVColorSpace (line 512) | enum AVColorSpace {
type AVColorRange (line 551) | enum AVColorRange {
type AVChromaLocation (line 605) | enum AVChromaLocation {
FILE: resources/ffmpeg/win-amd64/include/libavutil/rational.h
type AVRational (line 58) | typedef struct AVRational{
function AVRational (line 71) | static inline AVRational av_make_q(int num, int den)
function av_cmp_q (line 89) | static inline int av_cmp_q(AVRational a, AVRational b){
function av_q2d (line 104) | static inline double av_q2d(AVRational a){
function av_always_inline (line 159) | static av_always_inline AVRational av_inv_q(AVRational q)
FILE: resources/ffmpeg/win-amd64/include/libavutil/rc4.h
type AVRC4 (line 32) | typedef struct AVRC4 {
type AVRC4 (line 49) | struct AVRC4
type AVRC4 (line 60) | struct AVRC4
FILE: resources/ffmpeg/win-amd64/include/libavutil/replaygain.h
type AVReplayGain (line 29) | typedef struct AVReplayGain {
FILE: resources/ffmpeg/win-amd64/include/libavutil/ripemd.h
type AVRIPEMD (line 47) | struct AVRIPEMD
type AVRIPEMD (line 52) | struct AVRIPEMD
type AVRIPEMD (line 61) | struct AVRIPEMD
type AVRIPEMD (line 71) | struct AVRIPEMD
type AVRIPEMD (line 73) | struct AVRIPEMD
type AVRIPEMD (line 82) | struct AVRIPEMD
FILE: resources/ffmpeg/win-amd64/include/libavutil/samplefmt.h
type AVSampleFormat (line 58) | enum AVSampleFormat {
type AVSampleFormat (line 81) | enum AVSampleFormat
type AVSampleFormat (line 87) | enum AVSampleFormat
type AVSampleFormat (line 95) | enum AVSampleFormat
type AVSampleFormat (line 95) | enum AVSampleFormat
type AVSampleFormat (line 106) | enum AVSampleFormat
type AVSampleFormat (line 106) | enum AVSampleFormat
type AVSampleFormat (line 117) | enum AVSampleFormat
type AVSampleFormat (line 117) | enum AVSampleFormat
type AVSampleFormat (line 131) | enum AVSampleFormat
type AVSampleFormat (line 140) | enum AVSampleFormat
type AVSampleFormat (line 148) | enum AVSampleFormat
type AVSampleFormat (line 161) | enum AVSampleFormat
type AVSampleFormat (line 205) | enum AVSampleFormat
type AVSampleFormat (line 227) | enum AVSampleFormat
type AVSampleFormat (line 239) | enum AVSampleFormat
type AVSampleFormat (line 254) | enum AVSampleFormat
type AVSampleFormat (line 266) | enum AVSampleFormat
FILE: resources/ffmpeg/win-amd64/include/libavutil/sha.h
type AVSHA (line 54) | struct AVSHA
type AVSHA (line 59) | struct AVSHA
type AVSHA (line 68) | struct AVSHA
type AVSHA (line 78) | struct AVSHA
type AVSHA (line 80) | struct AVSHA
type AVSHA (line 89) | struct AVSHA
FILE: resources/ffmpeg/win-amd64/include/libavutil/sha512.h
type AVSHA512 (line 56) | struct AVSHA512
type AVSHA512 (line 61) | struct AVSHA512
type AVSHA512 (line 70) | struct AVSHA512
type AVSHA512 (line 80) | struct AVSHA512
type AVSHA512 (line 82) | struct AVSHA512
type AVSHA512 (line 91) | struct AVSHA512
FILE: resources/ffmpeg/win-amd64/include/libavutil/spherical.h
type AVSphericalProjection (line 51) | enum AVSphericalProjection {
type AVSphericalMapping (line 82) | typedef struct AVSphericalMapping {
type AVSphericalProjection (line 217) | enum AVSphericalProjection
FILE: resources/ffmpeg/win-amd64/include/libavutil/stereo3d.h
type AVStereo3DType (line 51) | enum AVStereo3DType {
type AVStereo3DView (line 147) | enum AVStereo3DView {
type AVStereo3D (line 176) | typedef struct AVStereo3D {
FILE: resources/ffmpeg/win-amd64/include/libavutil/tea.h
type AVTEA (line 37) | struct AVTEA
type AVTEA (line 43) | struct AVTEA
type AVTEA (line 52) | struct AVTEA
type AVTEA (line 64) | struct AVTEA
FILE: resources/ffmpeg/win-amd64/include/libavutil/threadmessage.h
type AVThreadMessageQueue (line 22) | typedef struct AVThreadMessageQueue AVThreadMessageQueue;
type AVThreadMessageFlags (line 24) | typedef enum AVThreadMessageFlags {
FILE: resources/ffmpeg/win-amd64/include/libavutil/timecode.h
type AVTimecodeFlag (line 35) | enum AVTimecodeFlag {
type AVTimecode (line 41) | typedef struct {
FILE: resources/ffmpeg/win-amd64/include/libavutil/tree.h
type AVTreeNode (line 45) | struct AVTreeNode
type AVTreeNode (line 51) | struct AVTreeNode
type AVTreeNode (line 67) | struct AVTreeNode
type AVTreeNode (line 114) | struct AVTreeNode
type AVTreeNode (line 116) | struct AVTreeNode
type AVTreeNode (line 118) | struct AVTreeNode
type AVTreeNode (line 130) | struct AVTreeNode
FILE: resources/ffmpeg/win-amd64/include/libavutil/twofish.h
type AVTWOFISH (line 38) | struct AVTWOFISH
type AVTWOFISH (line 44) | struct AVTWOFISH
type AVTWOFISH (line 53) | struct AVTWOFISH
type AVTWOFISH (line 65) | struct AVTWOFISH
FILE: resources/ffmpeg/win-amd64/include/libavutil/tx.h
type AVTXContext (line 25) | typedef struct AVTXContext AVTXContext;
type AVComplexFloat (line 27) | typedef struct AVComplexFloat {
type AVComplexDouble (line 31) | typedef struct AVComplexDouble {
type AVComplexInt32 (line 35) | typedef struct AVComplexInt32 {
type AVTXType (line 39) | enum AVTXType {
type AVTXFlags (line 104) | enum AVTXFlags {
type AVTXType (line 127) | enum AVTXType
FILE: resources/ffmpeg/win-amd64/include/libavutil/video_enc_params.h
type AVVideoEncParamsType (line 28) | enum AVVideoEncParamsType {
type AVVideoEncParams (line 73) | typedef struct AVVideoEncParams {
type AVVideoBlockParams (line 120) | typedef struct AVVideoBlockParams {
function av_always_inline (line 142) | static av_always_inline AVVideoBlockParams*
type AVVideoEncParamsType (line 158) | enum AVVideoEncParamsType
type AVVideoEncParamsType (line 168) | enum AVVideoEncParamsType
FILE: resources/ffmpeg/win-amd64/include/libavutil/xtea.h
type AVXTEA (line 35) | typedef struct AVXTEA {
type AVXTEA (line 51) | struct AVXTEA
type AVXTEA (line 60) | struct AVXTEA
type AVXTEA (line 73) | struct AVXTEA
type AVXTEA (line 87) | struct AVXTEA
FILE: resources/ffmpeg/win-amd64/include/libpostproc/postprocess.h
type pp_context (line 58) | typedef void pp_context;
type pp_mode (line 59) | typedef void pp_mode;
type pp_context (line 62) | typedef pp_context pp_context_t;
type pp_mode (line 63) | typedef pp_mode pp_mode_t;
FILE: resources/ffmpeg/win-amd64/include/libswresample/swresample.h
type SwrDitherType (line 141) | enum SwrDitherType {
type SwrEngine (line 159) | enum SwrEngine {
type SwrFilterType (line 166) | enum SwrFilterType {
type SwrContext (line 182) | typedef struct SwrContext SwrContext;
type SwrContext (line 207) | struct SwrContext
type SwrContext (line 219) | struct SwrContext
type SwrContext (line 228) | struct SwrContext
type SwrContext (line 250) | struct SwrContext
type SwrContext (line 250) | struct SwrContext
type AVSampleFormat (line 251) | enum AVSampleFormat
type AVSampleFormat (line 252) | enum AVSampleFormat
type SwrContext (line 267) | struct SwrContext
type SwrContext (line 279) | struct SwrContext
type SwrContext (line 306) | struct SwrContext
type SwrContext (line 326) | struct SwrContext
type SwrContext (line 353) | struct SwrContext
type SwrContext (line 363) | struct SwrContext
type AVMatrixEncoding (line 392) | enum AVMatrixEncoding
type SwrContext (line 404) | struct SwrContext
type SwrContext (line 424) | struct SwrContext
type SwrContext (line 437) | struct SwrContext
type SwrContext (line 463) | struct SwrContext
type SwrContext (line 481) | struct SwrContext
FILE: resources/ffmpeg/win-amd64/include/libswscale/swscale.h
type SwsVector (line 109) | typedef struct SwsVector {
type SwsFilter (line 115) | typedef struct SwsFilter {
type SwsContext (line 122) | struct SwsContext
type AVPixelFormat (line 128) | enum AVPixelFormat
type AVPixelFormat (line 134) | enum AVPixelFormat
type AVPixelFormat (line 141) | enum AVPixelFormat
type SwsContext (line 148) | struct SwsContext
type SwsContext (line 157) | struct SwsContext
type SwsContext (line 163) | struct SwsContext
type SwsContext (line 186) | struct SwsContext
type AVPixelFormat (line 186) | enum AVPixelFormat
type AVPixelFormat (line 187) | enum AVPixelFormat
type SwsContext (line 217) | struct SwsContext
type SwsContext (line 231) | struct SwsContext
type SwsContext (line 238) | struct SwsContext
type SwsContext (line 294) | struct SwsContext
type SwsContext (line 294) | struct SwsContext
type AVPixelFormat (line 295) | enum AVPixelFormat
type AVPixelFormat (line 296) | enum AVPixelFormat
FILE: src/main/api/f2f.js
function makeVideo (line 5) | function makeVideo(param) {
function getVideoStatus (line 10) | function getVideoStatus(taskCode) {
FILE: src/main/api/tts.js
function makeAudio (line 5) | function makeAudio(param) {
function preprocessAndTran (line 12) | function preprocessAndTran(param) {
FILE: src/main/dao/context.js
function update (line 3) | function update(key, val) {
function findByKey (line 9) | function findByKey(key) {
function selectAll (line 14) | function selectAll() {
function insert (line 19) | function insert(key, val) {
FILE: src/main/dao/f2f-model.js
function insert (line 3) | function insert({ modelName, videoPath, audioPath, voiceId }) {
function selectPage (line 12) | function selectPage({ page, pageSize, name = '' }) {
function count (line 23) | function count(name = '') {
function selectByID (line 31) | function selectByID(id) {
function remove (line 38) | function remove(id) {
FILE: src/main/dao/video.js
function selectPage (line 3) | function selectPage({ page, pageSize, name = '' }) {
function count (line 18) | function count(name = '') {
function insert (line 38) | function insert(video) {
function remove (line 54) | function remove(id) {
function update (line 59) | function update(video) {
function selectByStatus (line 75) | function selectByStatus(status) {
function findFirstByStatus (line 81) | function findFirstByStatus(status) {
function updateStatus (line 87) | function updateStatus(id, status, message, progress = 0, file_path = '') {
function selectByID (line 94) | function selectByID(id) {
FILE: src/main/dao/voice.js
function selectAll (line 3) | function selectAll() {
function insert (line 9) | function insert({ origin_audio_path, lang, asr_format_audio_url, referen...
function selectByID (line 26) | function selectByID(id) {
FILE: src/main/db/index.js
function initDB (line 15) | function initDB() {
function updateDB (line 25) | function updateDB() {
function connect (line 34) | function connect() {
FILE: src/main/handlers/app.js
method minimize (line 8) | async minimize(app) {
method maximize (line 11) | async maximize(app) {
method close (line 18) | async close(app) {
method isMaximized (line 22) | isMaximized(app) {
method openLog (line 26) | openLog() {
FILE: src/main/handlers/file.js
method selectFile (line 9) | async selectFile(app, filters = {}) {
method saveFile (line 22) | async saveFile(app, defaultPath = "") {
method getVideoInfo (line 30) | async getVideoInfo(app, videoPath) {
method getAudioInfo (line 45) | async getAudioInfo(app, audioPath) {
FILE: src/main/index.js
function createWindow (line 12) | function createWindow() {
FILE: src/main/interval/interval.js
function init (line 2) | function init() {
FILE: src/main/service/context.js
constant MODEL_NAME (line 4) | const MODEL_NAME = 'context'
function saveContext (line 6) | function saveContext(key, val) {
function getContext (line 14) | function getContext(key) {
function init (line 18) | function init() {
FILE: src/main/service/index.js
function registerHandler (line 5) | function registerHandler() {
FILE: src/main/service/model.js
constant MODEL_NAME (line 11) | const MODEL_NAME = 'model'
function addModel (line 19) | async function addModel(modelName, videoPath) {
function page (line 59) | function page({ page, pageSize, name = '' }) {
function findModel (line 71) | function findModel(modelId) {
function removeModel (line 80) | function removeModel(modelId) {
function countModel (line 99) | function countModel(name = '') {
function init (line 103) | function init() {
FILE: src/main/service/video.js
constant MODEL_NAME (line 21) | const MODEL_NAME = 'video'
function page (line 29) | function page({ page, pageSize, name = '' }) {
function findVideo (line 51) | function findVideo(videoId) {
function countVideo (line 59) | function countVideo(name = '') {
function saveVideo (line 63) | function saveVideo({ id, model_id, name, text_content, voice_id, audio_p...
function makeVideo (line 81) | function makeVideo(videoId) {
function synthesisVideo (line 86) | async function synthesisVideo(videoId) {
function loopPending (line 162) | async function loopPending() {
function synthesisNext (line 218) | function synthesisNext() {
function removeVideo (line 226) | function removeVideo(videoId) {
function exportVideo (line 247) | function exportVideo(videoId, outputPath) {
function makeVideoByF2F (line 259) | async function makeVideoByF2F(audioPath, videoPath) {
function modify (line 273) | function modify(video) {
function init (line 277) | function init() {
FILE: src/main/service/voice.js
constant MODEL_NAME (line 11) | const MODEL_NAME = 'voice'
function getAllTimbre (line 13) | function getAllTimbre() {
function train (line 17) | async function train(path, lang = 'zh') {
function makeAudio4Video (line 33) | function makeAudio4Video({voiceId, text}) {
function copyAudio4Video (line 37) | function copyAudio4Video(filePath) {
function makeAudio (line 46) | async function makeAudio({voiceId, text, targetDir}) {
function audition (line 87) | async function audition(voiceId, text) {
function init (line 94) | function init() {
FILE: src/main/util/ffmpeg.js
function initFFmpeg (line 5) | function initFFmpeg() {
function extractAudio (line 66) | function extractAudio(videoPath, audioPath) {
function toH264 (line 81) | async function toH264(videoPath, outputPath) {
function detectNvidia (line 98) | function detectNvidia() {
function getVideoDuration (line 111) | function getVideoDuration(videoPath) {
FILE: src/renderer/src/api/index.js
function videoPage (line 3) | function videoPage({ page = 1, pageSize = 1, name = '' }) {
function findVideo (line 7) | function findVideo(id) {
function removeVideo (line 11) | function removeVideo(id) {
function saveVideo (line 15) | function saveVideo(video) {
function makeVideo (line 19) | function makeVideo(id) {
function exportVideo (line 23) | function exportVideo(id, outputPath) {
function modifyVideo (line 27) | function modifyVideo(video) {
function countVideo (line 31) | function countVideo(name = '') {
function modelPage (line 35) | function modelPage({ page = 1, pageSize = 1, name = '' }) {
function findModel (line 40) | function findModel(id) {
function addModel (line 44) | function addModel({ name, videoPath }) {
function countModel (line 48) | function countModel(name = '') {
function removeModel (line 52) | function removeModel(id) {
function getContext (line 56) | function getContext(key) {
function saveContext (line 60) | function saveContext(key, val) {
function audition (line 64) | function audition(voiceId, text) {
FILE: src/renderer/src/components/model-create/index.js
method onClose (line 20) | onClose(result) {
FILE: src/renderer/src/stores/app.js
method setShowAppLogin (line 10) | setShowAppLogin(show) {
method loginApp (line 14) | async loginApp() {
FILE: src/renderer/src/stores/user.js
method setToken (line 13) | setToken(token) {
method setUserInfo (line 17) | setUserInfo(userInfo) {
method logout (line 20) | logout() {
method loginGuard (line 24) | async loginGuard() {
FILE: src/renderer/src/utils/index.js
method addFileProtocol (line 18) | addFileProtocol(url) {
method delFileProtocol (line 25) | delFileProtocol(url) {
Copy disabled (too large)
Download .json
Condensed preview — 481 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,022K chars).
[
{
"path": ".editorconfig",
"chars": 146,
"preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
},
{
"path": ".eslintignore",
"chars": 33,
"preview": "node_modules\ndist\nout\n.gitignore\n"
},
{
"path": ".eslintrc.cjs",
"chars": 473,
"preview": "/* eslint-env node */\nrequire('@rushstack/eslint-patch/modern-module-resolution')\n\nmodule.exports = {\n extends: [\n '"
},
{
"path": ".gitignore",
"chars": 45,
"preview": "node_modules\ndist\nout\n.idea\n.DS_Store\n*.log*\n"
},
{
"path": ".npmrc",
"chars": 317,
"preview": "electron_mirror=https://npmmirror.com/mirrors/electron/\nelectron_builder_binaries_mirror=https://npmmirror.com/mirrors/e"
},
{
"path": ".prettierignore",
"chars": 65,
"preview": "out\ndist\npnpm-lock.yaml\nLICENSE.md\ntsconfig.json\ntsconfig.*.json\n"
},
{
"path": ".prettierrc.yaml",
"chars": 66,
"preview": "singleQuote: true\nsemi: false\nprintWidth: 100\ntrailingComma: none\n"
},
{
"path": ".vscode/settings.json",
"chars": 412,
"preview": "{\n \"i18n-ally.localesPaths\": \"src/renderer/src/i18n/config\",\n \"i18n-ally.enabledParsers\": [\"js\"],\n \"i18n-ally.enabled"
},
{
"path": "LICENSE",
"chars": 7119,
"preview": "DUIX.COM COMMUNITY LICENSE AGREEMENT\n\n\"Agreement\" means the terms and conditions for use, reproduction, distribution and"
},
{
"path": "README.md",
"chars": 17814,
"preview": "# 🚀🚀🚀 Duix Avatar — Truly open-source AI avatar toolkit for offline video generation and digital human cloning\n\n🔗 **Offi"
},
{
"path": "README_zh.md",
"chars": 12690,
"preview": "# Duix.Avatar [【Switch to English】](./README.md)\n## 【项目介绍】\nDuix.Avatar数字人是由硅基智能发布的免费开源项目,支持本地部署/API调用。\n\n仅需提交一段10秒左右的视频,即"
},
{
"path": "build/entitlements.mac.plist",
"chars": 415,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "deploy/docker-compose-5090.yml",
"chars": 1064,
"preview": "networks:\n ai_network:\n driver: bridge\n\nservices:\n duix-avatar-tts:\n image: guiji2025/fish-speech-5090\n conta"
},
{
"path": "deploy/docker-compose-linux.yml",
"chars": 1503,
"preview": "networks:\n ai_network:\n driver: bridge\n\nservices:\n duix-avatar-tts:\n image: guiji2025/fish-speech-ziming\n con"
},
{
"path": "deploy/docker-compose-lite.yml",
"chars": 574,
"preview": "networks:\n ai_network:\n driver: bridge\n\nservices:\n duix-avatar-gen-video:\n image: guiji2025/duix.avatar\n cont"
},
{
"path": "deploy/docker-compose.yml",
"chars": 1505,
"preview": "networks:\n ai_network:\n driver: bridge\n\nservices:\n duix-avatar-tts:\n image: guiji2025/fish-speech-ziming\n con"
},
{
"path": "dev-app-update.yml",
"chars": 97,
"preview": "provider: generic\nurl: https://example.com/auto-updates\nupdaterCacheDirName: Duix.Avatar-updater\n"
},
{
"path": "doc/常见问题.md",
"chars": 4906,
"preview": "# Duix.Avatar\n\n## 自查步骤\n\n1. 三个服务是否都是Running状态\n\n  2007 Free "
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-all.txt",
"chars": 1630992,
"preview": "FFMPEG-ALL(1)\t\t\t\t\t\t\t FFMPEG-ALL(1)\n\nNAME\n ffmpeg - ffmpeg media converter\n\nSYNOPSIS\n ffmpeg [global_options]"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-bitstream-filters.txt",
"chars": 29288,
"preview": "FFMPEG-BITSTREAM-FILTERS(1)\t\t\t FFMPEG-BITSTREAM-FILTERS(1)\n\nNAME\n ffmpeg-bitstream-filters - FFmpeg bitstream fi"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-codecs.txt",
"chars": 169896,
"preview": "FFMPEG-CODECS(1)\t\t\t\t\t FFMPEG-CODECS(1)\n\nNAME\n ffmpeg-codecs - FFmpeg codecs\n\nDESCRIPTION\n This document"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-devices.txt",
"chars": 67137,
"preview": "FFMPEG-DEVICES(1)\t\t\t\t\t FFMPEG-DEVICES(1)\n\nNAME\n ffmpeg-devices - FFmpeg devices\n\nDESCRIPTION\n This docum"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-filters.txt",
"chars": 898954,
"preview": "FFMPEG-FILTERS(1)\t\t\t\t\t FFMPEG-FILTERS(1)\n\nNAME\n ffmpeg-filters - FFmpeg filters\n\nDESCRIPTION\n This docum"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-formats.txt",
"chars": 182929,
"preview": "FFMPEG-FORMATS(1)\t\t\t\t\t FFMPEG-FORMATS(1)\n\nNAME\n ffmpeg-formats - FFmpeg formats\n\nDESCRIPTION\n This docum"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-protocols.txt",
"chars": 68349,
"preview": "FFMPEG-PROTOCOLS(1)\t\t\t\t\t FFMPEG-PROTOCOLS(1)\n\nNAME\n ffmpeg-protocols - FFmpeg protocols\n\nDESCRIPTION\n This"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-resampler.txt",
"chars": 8590,
"preview": "FFMPEG-RESAMPLER(1)\t\t\t\t\t FFMPEG-RESAMPLER(1)\n\nNAME\n ffmpeg-resampler - FFmpeg Resampler\n\nDESCRIPTION\n The "
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-scaler.txt",
"chars": 4073,
"preview": "FFMPEG-SCALER(1)\t\t\t\t\t FFMPEG-SCALER(1)\n\nNAME\n ffmpeg-scaler - FFmpeg video scaling and pixel format converter"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg-utils.txt",
"chars": 24401,
"preview": "FFMPEG-UTILS(1) \t\t\t\t\t FFMPEG-UTILS(1)\n\nNAME\n ffmpeg-utils - FFmpeg utilities\n\nDESCRIPTION\n This docume"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffmpeg.txt",
"chars": 121735,
"preview": "FFMPEG(1)\t\t\t\t\t\t\t FFMPEG(1)\n\nNAME\n ffmpeg - ffmpeg media converter\n\nSYNOPSIS\n ffmpeg [global_options] {[i"
},
{
"path": "resources/ffmpeg/linux-amd64/manpages/ffprobe.txt",
"chars": 34737,
"preview": "FFPROBE(1)\t\t\t\t\t\t\t FFPROBE(1)\n\nNAME\n ffprobe - ffprobe media prober\n\nSYNOPSIS\n ffprobe [options] input_url"
},
{
"path": "resources/ffmpeg/linux-amd64/model/000-PLEASE-README.TXT",
"chars": 257,
"preview": "The vmaf filter expects this directory of models to be preset at /usr/local/share/model\n\nIf you wish to use this filter,"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/model_V8a.model",
"chars": 4715,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.85\nnr_class 2\ntotal_sv 80\nrho -81.9753\nSV\n69 1:0.51976033 2:0.95433448 3:0.70664"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflx_v1.json",
"chars": 6122,
"preview": "{\n \"param_dict\": {\n \"C\": 1.0,\n \"norm_type\": \"clip_0to1\",\n \"score_clip\": [\n 0.0,\n "
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflx_v1.pkl",
"chars": 705,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF1.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'cache_s"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflx_v1.pkl.model",
"chars": 4940,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.85\nnr_class 2\ntotal_sv 87\nrho -0.678599\nSV\n-1 1:0.500758 2:0.44434935 3:0.803600"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflx_vmaff_rf_v1.pkl",
"chars": 385886,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'none'\np4\nsS'n_estimators'\np5\nI10\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'ra"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_libsvmnusvr_currentbest.pkl",
"chars": 788,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF3.1\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_libsvmnusvr_currentbest.pkl.model",
"chars": 15701,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.1\nnr_class 2\ntotal_sv 279\nrho -1.07971\nSV\n-3.1 1:1 2:0.9023797 3:0.62009279 4:1 "
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv1.pkl",
"chars": 788,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF3.1\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv1.pkl.model",
"chars": 15701,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.1\nnr_class 2\ntotal_sv 279\nrho -1.07971\nSV\n-3.1 1:1 2:0.9023797 3:0.62009279 4:1 "
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv2.pkl",
"chars": 1105,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv2.pkl.model",
"chars": 25331,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 272\nrho -1.40161\nSV\n-4 1:1 2:0.9023797 3:0.62009279 4:0.9"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv3.pkl",
"chars": 1013,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv3.pkl.model",
"chars": 22118,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 274\nrho -1.45631\nSV\n-4 1:1 2:0.62009279 3:0.99999956 4:0."
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv3a.pkl",
"chars": 1015,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv3a.pkl.model",
"chars": 22250,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 276\nrho -1.44813\nSV\n-4 1:1 2:0.62009279 3:0.99999956 4:0."
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv4.pkl",
"chars": 1014,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxall_vmafv4.pkl.model",
"chars": 11707,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 146\nrho -1.32632\nSV\n-4 1:1 2:0.8030051 3:0.99999729 4:0.9"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl",
"chars": 787,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF3.1\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl.model",
"chars": 8064,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.1\nnr_class 2\ntotal_sv 145\nrho -0.518509\nSV\n-1.908779772857038 1:1 2:0.9023797 3:"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_norm_type_none.json",
"chars": 12776,
"preview": "{\n \"param_dict\": {\n \"C\": 4.0,\n \"norm_type\": \"none\",\n \"score_clip\": [\n 0.0,\n "
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_norm_type_none.pkl",
"chars": 729,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'none'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'custom_clip_"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_norm_type_none.pkl.model",
"chars": 11560,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 145\nrho -71.4237\nSV\n4 1:1 2:12.533413 3:0.9999975 4:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv1.pkl",
"chars": 787,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF3.1\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv1.pkl.model",
"chars": 8064,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.1\nnr_class 2\ntotal_sv 145\nrho -0.518509\nSV\n-1.908779772857038 1:1 2:0.9023797 3:"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv2.pkl",
"chars": 1104,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv2.pkl.model",
"chars": 13949,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 150\nrho -1.07371\nSV\n-4 1:1 2:0.9023797 3:0.80360073 4:0.9"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv3.pkl",
"chars": 1012,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv3.pkl.model",
"chars": 11658,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 146\nrho -1.28648\nSV\n-4 1:1 2:0.80360073 3:0.99999956 4:0."
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv3a.pkl",
"chars": 1011,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/nflxtrain_vmafv3a.pkl.model",
"chars": 11652,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 146\nrho -1.25374\nSV\n-4 1:1 2:0.80360073 3:0.99999956 4:0."
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_4k_v0.6.1rc.pkl",
"chars": 1127,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'p0'\np7\nF1.70674692\nsS'p1'\np"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_4k_v0.6.1rc.pkl.model",
"chars": 36306,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 445\nrho -2.09694\nSV\n4 1:0.99942012 2:0.066982086 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_v0.6.0.json",
"chars": 24002,
"preview": "{\n \"param_dict\": {\n \"norm_type\": \"clip_0to1\",\n \"score_clip\": [\n 0.0,\n 100.0\n "
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_v0.6.0.pkl",
"chars": 1016,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'norm_type'\np3\nS'clip_0to1'\np4\nsS'score_clip'\np5\n(lp6\nF0.0\naF100.0\nasS'C'\np7\nF4.0\nsS'nu'\np8\n"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_v0.6.0.pkl.model",
"chars": 22261,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.05\nnr_class 2\ntotal_sv 276\nrho -1.51734\nSV\n-1.42344309313914 1:1 2:0.59960677 3:"
},
{
"path": "resources/ffmpeg/linux-amd64/model/other_models/vmaf_v0.6.1mfz.json",
"chars": 19294,
"preview": "{\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.00705305,\n \"out_gte"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.json",
"chars": 461065,
"preview": "{\n \"0\": {\n \"param_dict\": {\n \"C\": 4.0,\n \"norm_type\": \"clip_0to1\",\n \"score_clip"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0001",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0001.model",
"chars": 20998,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.60479\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0002",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0002.model",
"chars": 21001,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.57405\nSV\n-4 1:0.99939284 2:0.050988098 3:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0003",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0003.model",
"chars": 20958,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.65319\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0004",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0004.model",
"chars": 20937,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.60079\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0005",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0005.model",
"chars": 21124,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.54645\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0006",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0006.model",
"chars": 20992,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.41442\nSV\n-4 1:0.99939284 2:0.050988098 3:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0007",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0007.model",
"chars": 21069,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.73978\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0008",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0008.model",
"chars": 21199,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 263\nrho -1.81631\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0009",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0009.model",
"chars": 21044,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.63385\nSV\n-4 1:0.99939284 2:0.050988098 3:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0010",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0010.model",
"chars": 20856,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 260\nrho -1.37531\nSV\n-4 1:0.99939284 2:0.050988098 3:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0011",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0011.model",
"chars": 21037,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.49819\nSV\n-4 1:0.99939284 2:0.050988098 3:0.999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0012",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0012.model",
"chars": 20882,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 260\nrho -1.99103\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0013",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0013.model",
"chars": 21017,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -1.81613\nSV\n-4 1:0.99939284 2:0.71982347 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0014",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0014.model",
"chars": 20987,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.55808\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0015",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0015.model",
"chars": 20991,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.64949\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0016",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0016.model",
"chars": 21329,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 265\nrho -1.83597\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0017",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0017.model",
"chars": 20916,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 261\nrho -1.46959\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0018",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0018.model",
"chars": 21212,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 264\nrho -1.49795\nSV\n-4 1:0.99939284 2:0.71982347 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0019",
"chars": 1058,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'norm_type'\np4\nS'clip_0to1'\np5\nsS'score_clip'\np6\n(lp7\nF0.0\naF100.0\nasS'num_mod"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.0019.model",
"chars": 21163,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 263\nrho -2.00887\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.pkl.model",
"chars": 21125,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 262\nrho -2.30449\nSV\n4 1:0.99939284 2:0.050988098 3:0.9999"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_4k_v0.6.1.json",
"chars": 22910,
"preview": "{\n \"param_dict\": {\n \"norm_type\": \"clip_0to1\",\n \"score_clip\": [\n 0.0,\n 100.0\n "
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_b_v0.6.3.json",
"chars": 408883,
"preview": "{\n \"0\": {\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.007"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_4k_v0.6.1.json",
"chars": 22854,
"preview": "{\n \"param_dict\": {\n \"norm_type\": \"clip_0to1\",\n \"score_clip\": [\n 0.0,\n 100.0\n "
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.json",
"chars": 407707,
"preview": "{\n \"0\": {\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.007"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0001",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0001.model",
"chars": 17303,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 214\nrho -2.01955\nSV\n-4 1:0.60311017 2:0.34681232 3:0.0675"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0002",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0002.model",
"chars": 17049,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.1262\nSV\n-3.652247087177586 1:0.85573143 2:1 3:"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0003",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0003.model",
"chars": 17165,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.07876\nSV\n4 1:0.77998422 2:0.49739676 3:0.43832"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0004",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0004.model",
"chars": 16977,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.51252\nSV\n-4 1:0.74425089 2:0.014623935 3:0.789"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0005",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0005.model",
"chars": 17167,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.02859\nSV\n4 1:0.87062235 2:0.49739676 3:0.53966"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0006",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0006.model",
"chars": 17168,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.08406\nSV\n-0.8743350082444694 1:0.91951481 2:0."
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0007",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0007.model",
"chars": 16962,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 209\nrho -1.60567\nSV\n4 1:0.75700132 2:1 3:0.28883701 4:0.6"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0008",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0008.model",
"chars": 17270,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.953329\nSV\n4 1:0.71492133 2:0.42532178 3:0.3129"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0009",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0009.model",
"chars": 17121,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.40801\nSV\n-4 1:0.84127012 2:0.014623935 3:0.812"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0010",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0010.model",
"chars": 17103,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.49832\nSV\n4 1:0.73867648 2:0.49612229 3:0.35967"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0011",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0011.model",
"chars": 17275,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.882043\nSV\n4 1:0.5898908 2:0.055921852 3:0.3179"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0012",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0012.model",
"chars": 17044,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.3827\nSV\n-4 1:0.70300609 2:0.15600331 3:0.09145"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0013",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0013.model",
"chars": 17058,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.09005\nSV\n-4 1:0.45809369 2:0.08765484 3:0.3662"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0014",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0014.model",
"chars": 17207,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.2061\nSV\n4 1:0.67569895 2:0.49739676 3:0.305998"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0015",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0015.model",
"chars": 17017,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.47693\nSV\n-4 1:0.70532989 2:0.54342577 3:0.1816"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0016",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0016.model",
"chars": 16947,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.45024\nSV\n4 1:0.89778056 2:1 3:0.43235998 4:0.8"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0017",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0017.model",
"chars": 16897,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.19178\nSV\n-4 1:0.40634904 2:0.04579546 3:0.3541"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0018",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0018.model",
"chars": 16943,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.00499\nSV\n-4 1:0.51012298 2:0.25207203 3:0.2005"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0019",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0019.model",
"chars": 17012,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.68654\nSV\n-4 1:0.66382463 2:0.93973481 3:0.2859"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0020",
"chars": 1185,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.0020.model",
"chars": 17239,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -1.53695\nSV\n4 1:0.87062235 2:0.49739676 3:0.53966"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.pkl.model",
"chars": 17004,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.38271\nSV\n-4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_b_v0.6.3.json",
"chars": 407707,
"preview": "{\n \"0\": {\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.007"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_v0.6.1.json",
"chars": 19045,
"preview": "{\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.00705305,\n \"out_gte"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_v0.6.1.pkl",
"chars": 1153,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_v0.6.1.pkl.model",
"chars": 17045,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.33133\nSV\n-4 1:0.65734273 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_v0.6.1neg.json",
"chars": 19463,
"preview": "{\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.00705305,\n \"out_gte"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_float_v0.6.1neg.pkl.model",
"chars": 17045,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.33133\nSV\n-4 1:0.65734273 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.json",
"chars": 388042,
"preview": "{\n \"0\": {\n \"param_dict\": {\n \"C\": 4.0,\n \"score_transform\": {\n \"p2\": -0.007"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0001",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0001.model",
"chars": 17041,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -0.881903\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0002",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0002.model",
"chars": 17066,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.21716\nSV\n4 1:0.69605554 2:0.34681232 3:0.09375"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0003",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0003.model",
"chars": 16968,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -1.24323\nSV\n4 1:0.69605554 2:0.34681232 3:0.09375"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0004",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0004.model",
"chars": 17139,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.633756\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0005",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0005.model",
"chars": 17076,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -1.20671\nSV\n4 1:0.69605554 2:0.34681232 3:0.09375"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0006",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0006.model",
"chars": 17260,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 213\nrho -0.904716\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0007",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0007.model",
"chars": 17009,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -0.976201\nSV\n4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0008",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0008.model",
"chars": 16947,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -0.67934\nSV\n4 1:0.69605554 2:0.34681232 3:0.09375"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0009",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0009.model",
"chars": 17209,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.426319\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0010",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0010.model",
"chars": 17128,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.512459\nSV\n4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0011",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0011.model",
"chars": 16977,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -0.943304\nSV\n4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0012",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0012.model",
"chars": 16910,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 210\nrho -0.892983\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0013",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0013.model",
"chars": 16835,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 209\nrho -1.05974\nSV\n-4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0014",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0014.model",
"chars": 17169,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 212\nrho -0.399979\nSV\n4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0015",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0015.model",
"chars": 17039,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 211\nrho -0.81337\nSV\n-4 1:0.69605554 2:0.34681232 3:0.0937"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0016",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0016.model",
"chars": 17276,
"preview": "svm_type nu_svr\nkernel_type rbf\ngamma 0.04\nnr_class 2\ntotal_sv 213\nrho -0.944745\nSV\n-4 1:0.69605554 2:0.34681232 3:0.093"
},
{
"path": "resources/ffmpeg/linux-amd64/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.pkl.0017",
"chars": 1192,
"preview": "(dp0\nS'param_dict'\np1\n(dp2\nS'C'\np3\nF4.0\nsS'score_transform'\np4\n(dp5\nS'p2'\np6\nF-0.00705305\nsS'out_gte_in'\np7\nS'true'\np8\ns"
}
]
// ... and 281 more files (download for full content)
About this extraction
This page contains the full source code of the duixcom/Duix-Avatar GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 481 files (161.3 MB), approximately 2.4M tokens, and a symbol index with 694 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.