-
Notifications
You must be signed in to change notification settings - Fork 29
Open
Labels
kind/enhancementNew feature or requestNew feature or requestneed triageWork In ProgressWork In Progress
Description
Two pass encoding allow user to have more control on the output filesize.
Use case
Let's say you want to upload a video of 10min, that is 400MiB for some reasons. That'd mean 1 min of video is 40MiB. We want each video to not be upon 20MiB per minute.
We need to use two-pass encoding to achieve this :
- 10 minutes = 600 seconds
- 20 MiB = 20 000 KiB
(20k / 600) * 60 = 2000 MiB
2M - 192k = 1 808 000 kBit/s is our target video bitrate.
That'd produce the following settings :
encoding:
strategy: crf
minute_filesize: 40000
renditions:
- name: <defined by user>
width: <defined by user>
height: <defined by user>
video_bitrate: ( (minute_filesize [kB] / duration [sec]) * 60 )
audio_bitrate: 192000
framerate: <from original or defined by user>
audio_rate: 48000
video_codec: libx265
audio_codec: aac
target_bandwidth: (video_bitrate + audio_bitrate)
preset: medium
Which would produce the following ffmpge options :
$ ffmpeg -i original -y -vf scale=w=1280:h=720:force_original_aspect_ratio=decrease -c:v libx265 -b:v 778k -c:a aac -b:a 192k -sc_threshold 0 -g 48 -keyint_min 48 -hls_time 4 -hls_playlist_type vod -hls_segment_filename output/360p_%03d.ts output/360p.m3u8
References
Metadata
Metadata
Assignees
Labels
kind/enhancementNew feature or requestNew feature or requestneed triageWork In ProgressWork In Progress