Creating mpd files of multiple video resolutions for a video streaming platform

688 Views Asked by At

I am creating a video streaming platform. Users can upload videos and multiple resolutions of that video are created during upload. Finally an mpd file is generated using these resolutions. I want to find the most quick and efficient way to do this. Currently, I am using ffmpeg and MP4box for the task.

After hours of research, this is what I am doing currently:

  1. Strip the audio from video using ffmpeg:
ffmpeg -i video.mp4 -c:a aac -ac 2 -ab 128k -vn video-audio.mp4
  1. Create multiple resolutions of the vide using ffmpeg:
ffmpeg -i video.mp4 -an -c:v libx264 -x264opts keyint=33:min-keyint=33:no-scenecut  -b:v 5300k -maxrate 5300k -bufsize 2650k -vf scale=trunc1080:(oh*a/2)*1 video-1080.mp4

ffmpeg -i video.mp4 -an -c:v libx264 -x264opts keyint=33:min-keyint=33:no-scenecut  -b:v 2400k -maxrate 2400k -bufsize 1200k -vf scale=trunc(oh*a/2)*1:720 video-720.mp4

ffmpeg -i video.mp4 -an -c:v libx264 -x264opts keyint=33:min-keyint=33:no-scenecut  -b:v 1060k -maxrate 1060k -bufsize 530k -vf scale=trunc(oh*a/2)*1:478 video-480.mp4

 ffmpeg -i video.mp4 -an -c:v libx264 -x264opts keyint=33:min-keyint=33:no-scenecut  -b:v 600k -maxrate 600k -bufsize 300k -vf scale=trunc(oh*a/2)*1:360 video-360.mp4

ffmpeg -i video.mp4 -an -c:v libx264 -x264opts keyint=33:min-keyint=33:no-scenecut  -b:v 260k -maxrate 260k -bufsize 130k -vf scale=trunc(oh*a/2)*1:242 video-240.mp4
  1. Finally, generate the dash manifest using MP4Box:
MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4

As you can see this is a lot of code and I am not really sure this would work well in production. So, Is there are a more quick and optimal way of doing exactly the same thing that I am doing right now without this much code? And will all this be possible just using ffmpeg and not mp4box? And If multiple users are uploading video at a given time, will these cause any overhead on the server? Regards.

0

There are 0 best solutions below