{"id":19705362,"url":"https://github.com/osintt/video-previewer","last_synced_at":"2026-01-21T04:11:46.534Z","repository":{"id":251406109,"uuid":"836591493","full_name":"OSintt/video-previewer","owner":"OSintt","description":"📹 a TypeScript package for generating custom video previews","archived":false,"fork":false,"pushed_at":"2024-08-06T00:03:32.000Z","size":37,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T22:54:18.823Z","etag":null,"topics":["previews","thumbnail-generator","thumbnails","video","video-preview","video-preview-thumbnails"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OSintt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-01T07:06:10.000Z","updated_at":"2025-08-09T18:54:36.000Z","dependencies_parsed_at":"2024-08-06T02:27:17.296Z","dependency_job_id":null,"html_url":"https://github.com/OSintt/video-previewer","commit_stats":null,"previous_names":["osintt/video-previewer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OSintt/video-previewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSintt%2Fvideo-previewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSintt%2Fvideo-previewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSintt%2Fvideo-previewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSintt%2Fvideo-previewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OSintt","download_url":"https://codeload.github.com/OSintt/video-previewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSintt%2Fvideo-previewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28625931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T02:47:06.670Z","status":"ssl_error","status_checked_at":"2026-01-21T02:45:44.886Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["previews","thumbnail-generator","thumbnails","video","video-preview","video-preview-thumbnails"],"created_at":"2024-11-11T21:27:45.866Z","updated_at":"2026-01-21T04:11:46.520Z","avatar_url":"https://github.com/OSintt.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# video-previewer\n\nGenerate .webp video previews from .mp4 files using TypeScript and ffmpeg\n\n### Installation\n\n```bash\n$ npm install video-previewer\n$ pnpm add video-previewer\n$ yarn add video-previewer\n```\n\n### Usage\n\n```javascript\nimport VideoPreviewer from \"./generator/VideoPreviewer\";\n\nconst preview = new VideoPreviewer(\n  \"video.mp4\",\n  \"output/path.webp\", //output path\n  [\n    { start: \"00:00:01\", end: \"00:00:04\" }, // clips to take from video, string with 'HH:MM:SS' format\n    { start: \"00:04:01\", end: \"00:04:04\" },\n    { start: \"00:12:01\", end: \"00:12:04\" },\n    { start: \"00:13:01\", end: \"00:13:04\" },\n  ],\n  {\n    clipCount: 5,\n    clipTime: 5,\n    clipSelectStrategy: \"max-size\", // options: 'max-size', 'min-size', 'random'\n    clipRange: [0.1, 0.9],\n    fpsRate: 10, // number, -1 (default)\n    output: {\n      type: \"buffer\", // options: 'buffer' (default), 'file', 'dir'\n      path: \"\", // Required if output type is not 'buffer' (specify file or directory path)\n    },\n    speedMulti: 2,\n    width: 320, // number, video normal dimensions (default)\n    height: -1, // number, video normal dimensions (default)\n    bitrate: 1000, // optional, video bitrate in kbps\n    videoCodec: \"libx264\", // optional, codec for video encoding\n    audioCodec: \"aac\", // optional, codec for audio encoding\n    audioBitrate: 128, // optional, audio bitrate in kbps\n    format: \"webp\", // optional, output format for the preview\n    useHardwareAcceleration: false, // optional, enable hardware acceleration for processing\n    additionalOptions: \"\", // optional, any additional command line options for ffmpeg\n  }\n);\npreview.exec();\n\n```\n\n**Available options:**\n\n| **Option**                | **Type**        | **Default**                |\n| ------------------------- | --------------- | -------------------------- |\n| `clipCount`               | `number`        | -                          |\n| `clipTime`                | `number`        | -                          |\n| `clipSelectStrategy`      | `string`        | 'max-size'                 |\n| `clipRange`               | `number[]`      | -                          |\n| `fpsRate`                 | `number`        | -1 (default: original fps) |\n| `output`                  | `OutputOptions` | `{type: 'buffer'}`         |\n| `speedMulti`              | `number`        | -                          |\n| `width`                   | `number`        | (default: original width)  |\n| `height`                  | `number`        | (default: original heigth) |\n| `bitrate`                 | `number`        | -                          |\n| `videoCodec`              | `string`        | `'libx264'`                |\n| `audioCodec`              | `string`        | `'aac'`                    |\n| `audioBitrate`            | `number`        | `128`                      |\n| `format`                  | `string`        | `'webp'`                   |\n| `useHardwareAcceleration` | `boolean`       | `false`                    |\n| `additionalOptions`       | `string`        | -                          |\n\n---\n\n### 🐼 @me\n\nYou can find me on twitter as 🐤 \u003ca href=\"https://twitter.com/osinthappyemo\"\u003e@osinthappyemo\u003c/a\u003e\nor on instagram as 🍢 \u003ca href=\"https://instagram.com/osintxv\"\u003e@osintxv\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosintt%2Fvideo-previewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosintt%2Fvideo-previewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosintt%2Fvideo-previewer/lists"}