An open API service indexing awesome lists of open source software.

https://github.com/mahyarkarimi/ffmpeg-ms


https://github.com/mahyarkarimi/ffmpeg-ms

converter fastapi ffmpeg microservice python

Last synced: 8 months ago
JSON representation

Awesome Lists containing this project

README

          

# FFMPEG microservice developed in python fastapi



A microservice for conversion of any sort of media using FFMPEG.

## Quick start

### Deploy using docker


[Dockerhub image link](https://hub.docker.com/r/mahyarkarimi/ffmpeg-ms)

```bash
docker run --rm -p 8000:8000 mahyarkarimi/ffmpeg-ms:0.1.1-alpine
```

### Deploy with docker-compose.yml


```yml
version: '3'

services:
api:
image: mahyarkarimi/ffmpeg-ms:0.1.1-alpine
restart: unless-stopped
ports:
- 8000:8000
volumes:
- ./.htpasswd:/app/.htpasswd
```

## Features


1. Convert any media with given ffmpeg style output format.
2. Stream output from `/convert` endpoint.
3. File based download from `/convert-file` endpoint.
4. Has rate limit for calling each endpoint based on user (default 5 requests per minute).
5. Can have basic authentication based on `/app/.htpasswd` file generated by htpasswd of apache2-utils. password must be encrypted with the bcrypt algorithm.

## Generate .htpasswd file


In order to activate authentication, generate `.htpasswd` file using `apache2-utils`.
Install `apache2-utils` on debian/ubuntu:

```bash
sudo apt-get install apache2-utils
```

To create user run the following command in terminal (replace \ and \ with your desired credentials):

```bash
htpasswd -B -cb .htpasswd
```

## API Documentation


FFMPEG file conversion microservice API documentation

## Version: 0.1.1

**Contact information:**
mahyarkarimi@rocketmail.com

**License:** [MIT](https://opensource.org/license/mit/)

### /convert

#### POST

##### Summary

Convert a media file (video or audio) and get response as stream

##### Description

Convert a media file and return as stream

##### Parameters

| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ---- |
| input_options | query | | No | string |
| output_options | query | | Yes | string |
| buffer_size | query | | No | integer |

##### Responses

| Code | Description |
| ---- | ----------- |
| 200 | Successful operation |
| 413 | file to convert is larger than upload size limit |
| 422 | Unprocessable entity when either file in body or action in query parameters is not available |

### /convert-file

#### POST

##### Summary

Convert a media file (video or audio) and get response as file

##### Description

Convert a media file and return as file

##### Parameters

| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ---- |
| input_options | query | | No | string |
| output_options | query | | Yes | string |

##### Responses

| Code | Description |
| ---- | ----------- |
| 200 | Successful operation |
| 413 | file to convert is larger than upload size limit |
| 422 | Unprocessable entity when either file in body or action in query parameters is not available |