
Why Twitch builds its own in-house transcoder software stack - sysbell
https://blog.twitch.tv/live-video-transmuxing-transcoding-ffmpeg-vs-twitchtranscoder-part-i-489c1c125f28
======
sysbell
From the article:

FFmpeg is a versatile video processing software supporting various video/audio
formats for the standard ABR transcoding workflow. However, it cannot handle a
number of technical requirements that are specific to Twitch’s operation. For
example,

1) Frame rate downsampler Our typical incoming bitstreams have 60fps (frames
per second), and we transcode them to 30fps for lower bit-rate variants (e.g.,
720p30, 480p30, etc.). On the other hand, since Twitch is a global platform,
we often receive incoming streams of 50fps, most of which are from PAL
countries. In this case, the lower bit-rate variant should be downsampled to
25fps, instead of 30fps. Simply deleting every second frame is not a good
solution here. Our downsampler needs to behave differently for the two
different kinds of incoming bitstreams. One kind has constant frame rates less
than 60fps, and the other has irregular frame dropping, which makes its
average frame rates less than 60fps.

2) Metadata insertion Certain information needs to be inserted into the HLS
bitstreams to enhance the user experience on the player side. By building our
own transcoder and player, Twitch can control the full end-to-end ingest-
transcode-CDN-playback pipeline. This allows us to insert proprietary metadata
structures into the transcoder output, which are eventually parsed by our
player and utilized to produce effects unique to Twitch.

