Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/StreamPot/StreamPot
Run ffmpeg as an API with fluent-ffmpeg compatibility, queues and S3 storage.
https://github.com/StreamPot/StreamPot
api ffmpeg ffmpeg-wrapper fluent-ffmpeg media
Last synced: about 2 months ago
JSON representation
Run ffmpeg as an API with fluent-ffmpeg compatibility, queues and S3 storage.
- Host: GitHub
- URL: https://github.com/StreamPot/StreamPot
- Owner: StreamPot
- License: mit
- Created: 2024-04-05T17:30:47.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-29T21:15:29.000Z (about 2 months ago)
- Last Synced: 2024-07-30T20:33:37.092Z (about 2 months ago)
- Topics: api, ffmpeg, ffmpeg-wrapper, fluent-ffmpeg, media
- Language: TypeScript
- Homepage: https://streampot.io
- Size: 1.26 MB
- Stars: 522
- Watchers: 4
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-github-repos - StreamPot/StreamPot - Run FFmpeg as an API with fluent-ffmpeg compatibility, queues and S3 storage. (TypeScript)
README
# StreamPot
> [!NOTE]
> **StreamPot is still in the early stages of development, we would appreciate your feedback.**StreamPot is a project that provides scaffolding for transforming media in your app (e.g. trimming a video, stripping the audio from a video, transcoding a video from mp4 to webp).
We are building this because an increasing number of projects are transforming media as part of their workflow.
If you want a no-setup way to run this, check out [StreamPot](https://www.streampot.io/).
## Running the server locally
Visit the [Installation (server)](https://docs.streampot.io/installation.html) page for self-hosting instructions.
If you'd like to use the **hosted version**, please [sign up](https://app.streampot.io/register) and give it a try.## Running a job in your app
Note: You should only run this from your server.### Install the client library
```
pnpm i @streampot/client
```### Initialise the client & submit a job.
```js
import StreamPot from '@streampot/client'
const EXAMPLE_VID = 'https://sample-videos.com/video321/mp4/240/big_buck_bunny_240p_1mb.mp4'const client = new StreamPot({
baseUrl: 'http://127.0.0.1:3000', // adjust if you are serving in production
})const clipJob = await client.input(EXAMPLE_VID)
.setStartTime(1)
.setDuration(2)
.output('output.mp4')
.run()
const jobId = clipJob.id// In production you should set up a poll.
setTimeout(async () => {
const job = await client.checkStatus(jobId)
if (job.status === 'completed'){
console.log(job.output_url)
}
},10000) // wait 10 seconds
```## Acknowledgements
This project is heavily reliant on the amazing work of the ffmpeg and fluent-ffmpeg teams
## Feedback
If you want to use StreamPot in your project, I'd be happy to help & improve it based on your feedback. Email me at [email protected] or [let's have a call](https://cal.com/jackbridger/30min).