@ -52,7 +52,7 @@ The main feature is lossless trimming and cutting of video and audio files, whic
- MKV/MP4 embedded chapters marks editor
- View subtitles
- Customizable keyboard hotkeys
- Black scene detection and silent audio detection
- Black scene detection, silent audio detection, and scene change detection
- Divide timeline into segments with length L or into N segments or even randomized segments!
- [Basic CLI support](cli.md)
@ -77,6 +77,8 @@ The main feature is lossless trimming and cutting of video and audio files, whic
- Loop a video / audio clip X times quickly without re-encoding
- See [#284](https://github.com/mifi/lossless-cut/issues/284)
- Convert a video or parts of it into X image files (not lossless)
- Losslessly split a video into one file per scene (note you probably have to shift segments, see [#330](https://github.com/mifi/lossless-cut/issues/330).)
- Cut away silent parts of an audio/video
### Export cut times as YouTube Chapters
1. Export with Merge and "Create chapters from merged segments" enabled
awaitdetectScenes({name:'blackScenes',workingText:i18n.t('Detecting black scenes'),errorText:i18n.t('Failed to detect black scenes'),fn:async()=>blackDetect({filePath,duration,filterOptions,onProgress:setCutProgress,from:currentApparentCutSeg.start,to:currentApparentCutSeg.end})});
awaitdetectSegments({name:'blackScenes',workingText:i18n.t('Detecting black scenes'),errorText:i18n.t('Failed to detect black scenes'),fn:async()=>blackDetect({filePath,duration,filterOptions,onProgress:setCutProgress,from:currentApparentCutSeg.start,to:currentApparentCutSeg.end})});
hint:i18n.t('Set noise tolerance. Can be specified in dB (in case "dB" is appended to the specified value) or amplitude ratio. Default is -60dB, or 0.001.'),
},
duration:{
value:'2.0',
hint:i18n.t('Set silence duration until notification (default is 2 seconds).'),
awaitdetectSegments({name:'sceneChanges',workingText:i18n.t('Detecting scene changes'),errorText:i18n.t('Failed to detect scene changes'),fn:async()=>ffmpegDetectSceneChanges({filePath,duration,minChange:filterOptions.minChange,onProgress:setCutProgress,from:currentApparentCutSeg.start,to:currentApparentCutSeg.end})});
hint:i18n.t('Set the minimum detected black duration expressed in seconds. It must be a non-negative floating point number.'),
},
picture_black_ratio_th:{
value:'0.98',
hint:i18n.t('Set the threshold for considering a picture "black".'),
},
pixel_black_th:{
value:'0.10',
hint:i18n.t('Set the threshold for considering a pixel "black".'),
},
});
exportconstsilencedetect=()=>({
noise:{
value:'-60dB',
hint:i18n.t('Set noise tolerance. Can be specified in dB (in case "dB" is appended to the specified value) or amplitude ratio. Default is -60dB, or 0.001.'),
},
duration:{
value:'2.0',
hint:i18n.t('Set silence duration until notification (default is 2 seconds).'),
},
});
exportconstsceneChange=()=>({
minChange:{
value:'0.3',
hint:i18n.t('Minimum change between two frames to be considered a new scene. A value between 0.3 and 0.5 is generally a sane choice.'),