Sign inSign up

imatefx/ffmpeg-transcoding-server

By imatefx

•Updated over 6 years ago

Image
0

255

imatefx/ffmpeg-transcoding-server repository overview

⁠Transcoding Server tool

⁠Sample Commands

brew install ffmpeg
go get github.com/imatefx/transcoding
go install github.com/imatefx/transcoding
#Assumes $GOPATH/bin is on your $PATH 
transcoding --config ./configs/prod-us-east-1.toml

⁠Server

A basic server implementation is included that offers the facility to transcode uploaded multipart files and some additional admin urls.

GET /transcode                               
POST /transcode 
#Some admin routes
GET /admin 
GET /admin/ping                                 
GET /admin/pprof/                            
GET /admin/pprof/heap                        
GET /admin/pprof/goroutine                   
GET /admin/pprof/block                       
GET /admin/pprof/threadcreate                
GET /admin/pprof/cmdline                     
GET /admin/pprof/profile                     
GET /admin/pprof/symbol                      
GET /admin/stats    
GET /admin/config

###Transcoding A useful route is the [POST|GET] /transcode one, which provided a file and conversion type will return the resulting MP4 file. A sample form is provided at the GET route, however you can also make use of CLI tools.

brew install http 
http -f POST http://localhost:8080/transcode input@~/Downloads/sample.mp4 type=480p  > output.mp4

###AWS The server has a tighter integration with performing Transcoding from files saved in S3 and writting them back out to S3. The route available is POST /api/transcode

You can specify a sample request based on the following schema:

{
	"input": {
		"bucket": "videobucket-test",
		"key": "input1.mp4"
	},
	"output": {
		"bucket": "videobucket-test",
		"key": "output1.mp4"
	},
	"type": "360p",
	"webHook": "http://data-return-server:8081",
	"AwsRegion": "ap-south-1",
	"AwsAKId": "AWS_Access_Key",
	"AwsSecretKey": "AWS_Secret_Key",
	"AwsToken": ""
}

THE SERVER MUST HAVE ACCESS TO THE INPUT & OUTPUT BUCKET - SEE AWS BUCKET POLICIES

⁠Docker

To make bootstrapping easier for variety of platforms. A Dockerfile is provided which will run the server in a docker⁠ container.

#The following commands assumes you are in the package
docker build -t ffmpeg-transcoding-server .
docker run -p 8080:8080 ffmpeg-transcoding-server   
#You can now access the server at localhost:8080
#or if you ar on mac osx `docker-machine ip default`

⁠Choosing an appriorate filter description

A common scenario is re-encoding a video for streaming over the web. In such a scenario you generally want to transcode to a lower resolution and bitrate.

⁠Resolution

Resolution is the "sharpness" of the video in question. Filesize is not determined by resolution

filesize (in MB) = (bitrate in Mbit/s * 8) * (video length in seconds) But a larger resolution will require more bitrate for it to keep the same level of "quality"

According to this post⁠ here are some general resolution/bitrate guidelines.

ResolutionBitrateApprox. File size of 10 minutes
320p (mobile)180 kbit/s~13 MB
360p300 kbit/s~22MB
480p500 kbit/s~37MB
576p (PAL)850 kbit/s~63MB
720p1000 kbit/s~75 MB

Tag summary

Content type

Image

Digest

Size

39.8 MB

Last updated

over 6 years ago

docker pull imatefx/ffmpeg-transcoding-server