Подбираем битрейт для стрима
Здесь мы рассмотрим как правильно подобрать битрейт для своей интернет трансляции. И так, Битрейт — это качество видео. Чем он выше, тем выше качество. Если сделать качественный стрим поток с великолепной картинкой, то нужно просто повысить битрейт и все? Как бы не так. Стрим поток то идет в режиме онлайн, соответственно, весь этот высокий битрейт занимает интернет канал и смотреть его будет невозможно. Поэтому нужно учитывать возможности своего интернета и интернета вашей аудитории. Не у всех протянуто оптоволокно. Так что выше 2 мбит/с битрейн ставить не рекомендуется.
Второе, на что стоит обратить внимание, это, так называемое, соотношение бит/пиксель. Данная Формула выглядит просто:
бит/(пиксели*кадры)
Что означает данная формула? Допустим, мы кодируем стрим поток с разрешением 100px х 100px, на 25 fps (кадров в секунду) и поставили битрейт 250 kbps (килобит в секунду). Итак, на секунду видео размером 10000 пикселей (сто умножаем на сто) выделяется 25 кадров и 250 килобит. Выходит по 10 килобит(10000 бит) на каждый кадр (250/25). Делим биты, выделяемые на кадр, на размер в пикселях — получим отношение бит/пиксель — сколько информации выделяется для «кодировки» одного пикселя.
Чем больше информации выделяется — тем выше качество.
В нашем примере отношение бит/пиксель составляет: (по 10000 бит на кадр)/(10000 пикселей) = 1. Многовато будет. Вполне отличное качество можно получить при отношении 0,1-0,15. Для нашего примера было бы достаточно битрейта ~ 32-35 kbps.
Посчитаем ориентировочные соотношения бит/пиксель для наиболее распространенных разрешений:
720p: 1280×720 точек :
- Битрейт 1500kbps — 1500000/((1280*720)*25) = 1500000/23040000 = 0,065
- Битрейт 2500kbps — 2500000/((1280*720)*25) = 2500000/23040000 = 0,109
- Битрейт 3500kbps — 3500000/((1280*720)*25) = 3500000/23040000 = 0,152
1080p: 1920×1080 точек :
- Битрейт 1500kbps — 1500000/((1920*1080)*25) = 1500000/51840000= 0,029 (как видим, качество при том же битрейте будет хуже где-то в 2,5 раза, поэтому для 1080р нужен больший битрейт, чем для 720р)
- Битрейт 5000kbps — 5000000/((1920*1080)*25) = 5000000/23040000 = 0,096
- Битрейт 7500kbps — 7500000/((1920*1080)*25) = 7500000/23040000 = 0,145
- Битрейт 10000kbps — 10000000/((1920*1080)*25) = 10000000/23040000 = 0,192
Какие же выводы можно сделать? Первое, оно же главное, не можешь снабдить разрешение необходимым битрейтом — не берись стримить. Все равно хочешь стримить? Снижай или разрешение или fps. Добей бит/пиксель хотябы до 0,075-0,1, а лучше больше.
Рекомендованные настройки варинтов трансляций
Качество | Разрешение | Видео Битрейт, kbps | Аудио Битрейт, kbps | FPS кадров/сек | Видео-кодек | h.264 профиль | Аудио-кодек | Аудио-канал |
Low | 240p (426 x 240) | 400 (300-700) | 32 | 15/30 | h.264 | Baseline | AAC или MP3 | Mono |
Low | 270p (480x270) | 400 (300-700) | 64 | 15/30 | h.264 | Baseline | AAC или MP3 | Mono |
Med | 360p (640x360) | 750 (400-1000) | 96 | 15/30 | h.264 | Baseline | AAC или MP3 | Mono |
Med | 480p (854x480) | 1000 (500-2000) | 96 | 15/30 | h.264 | Baseline | AAC или MP3 | Mono |
High | 540p (960x540) | 1000 (800 – 2000) | 96 | 30/60 | h.264 | Main | AAC или MP3 | Mono или |
High | 720p (1280x720) | 2500 (1560-4000) | 128 | 30/60 | h.264 | Main | AAC или MP3 | Mono или |
High | 720p (1280x720) | 3800 (2500-6000) | 128 | 60 | h.264 | Main | AAC или MP3 | Mono или |
High | 1080p (1920x1080) | 4500 (3000-6000) | 128 | 30 | h.264 | Main | AAC или MP3 | Mono или |
High | 1080p (1920x1080) | 6800 (4500-9000) | 128 | 60 | h.264 | Main | AAC или MP3 | Mono или |
High | 1440p) (2560x1440) | 9000 (6000-13000) | 128 | 30 | h.264 | Main | AAC или MP3 | Mono или |
High | 1440p (2560x1440) | 13000 (9000-18000) | 128 | 60 | h.264 | Main | AAC или MP3 | Mono или |
High | 4K/2160р (3840x2106) | 23000 (13000-34000) | 128 | 30 | h.264 | Main | AAC или MP3 | Mono или |
High | 4K/2160р (3840x2106) | 35000 (20000-51000) | 128 | 60 | h.264 | Main | AAC или MP3 | Mono или |
*Выделены рекомендованные значения