async function video(storage, videoConverter, videoSuffix) {

  const test = entry => entry.type === 'video' && !storage.hasFile(entry, videoSuffix) && getVideoDuration(entry) > 0;

  const task = async (entry) => {
    const videoStream = getVideoStream(entry)
    const {width, height} = videoStream
    const duration = getVideoDuration(entry)
    const logData = {video: {width, height, duration, size: entry.size}}
    log.debug(logData, `Starting video conversion of ${entry} (${width}x${height}, ${humanizeDuration(duration)}, ${humanizeBytes(entry.size)})`)

    const t0 = Date.now()
    const localFile = await storage.createLocalFile(entry, videoSuffix)
    return videoConverter(entry, localFile.file)
      .then(async () => {
        await localFile.commit()
        log.debug(t0, `Video conversion of ${entry} done`)
      })
      .catch(async err => {
        await localFile.release()
        log.warn(err, `Failed to convert video of ${entry}: ${err}`)
      })
  }

  return {
    test,
    task
  }
}
@param {import('@home-gallery/types').TStorage} storage
@param {string} ffmpegPath
@param {string} ffprobePath
@param {object} options
@returns {import('stream').Transform}