Acabei de voltar do meu exame de programação de rede e uma das perguntas que eles nos fizeram foi "Se você fosse fazer streaming de vídeo, usaria TCP ou UDP? Dê uma explicação para os vídeos armazenados e ao vivo" . Para essa pergunta, eles simplesmente esperavam uma resposta curta de TCP para vídeo armazenado e UDP para vídeo ao vivo, mas pensei sobre isso no caminho para casa, e é necessariamente melhor usar UDP para streaming de vídeo ao vivo? Quer dizer, se você tem largura de banda para isso e diz que está transmitindo uma partida de futebol ou um show, você realmente precisa usar o UDP?
Vamos dizer que enquanto você está transmitindo este show ou qualquer outra coisa usando TCP você começa a perder pacotes (algo ruim aconteceu em alguma rede entre você e o remetente), e por um minuto inteiro você não recebe nenhum pacote. O stream de vídeo será pausado e, depois de decorrido um minuto, os pacotes começarão a passar novamente (o IP encontrou uma nova rota para você). O que aconteceria então é que o TCP retransmitiria no minuto em que você perdesse e continuaria enviando a transmissão ao vivo. Assumindo que a largura de banda é maior do que a taxa de bits no stream, e o ping não é muito alto, então, em um curto período de tempo, o minuto que você perdeu agirá como um buffer para o stream para você, dessa forma , se a perda de pacotes ocorrer novamente, você não notará.
Agora, posso pensar em alguns aparelhos onde isso não seria uma boa ideia, como, por exemplo, videoconferências, onde você precisa estar sempre no final do stream, porque atrasar um vídeo-chat é horrível, mas durante uma partida de futebol ou um show, o que importa se você está um minuto atrás do fluxo? Além disso, você tem a garantia de obter todos os dados e seria melhor salvá-los para visualização posterior, quando eles chegarem sem erros.
Então isso me leva à minha pergunta. Há alguma desvantagem que eu não conheça sobre o uso do TCP para streaming ao vivo? Ou deveria mesmo ser, se você tem largura de banda para isso, deveria optar pelo TCP, já que é "mais agradável" para a rede (controle de fluxo)?