Até a versão v1.0.1 do antigo Redu, era utilizado o serviço do zencoder para fazer o transcode dos possíveis formatos de vídeos que eram upados. Com a mudança para o Openredu, estamos removendo as dependências de serviços externos e com isso, a partir da próxima versão (v1.1.0) com lançamento previsto para esse mês, a funcionalidade de upload de video será removida, tornando o embeed de vídeos do youtube a única opção.
Caso haja interesse em implementar uma alternativa ao upload/reprodução de vídeos, um ponto de partida é entender a lógica de gerenciamento de uploads encontrada na entidade Seminar que representa os arquivos do tipo multimídia no Openredu, onde existe a seguinte validação:
validates_attachment_size :original, :less_than => 1.gigabyte
Além do método que verifica se o curso tem espaço disponível de acordo com a quota do plano:
def can_upload_multimedia?(lecture)
...
if quota.multimedia > plan.video_storage_limit
return false
else
return true
end
...
Já a quota pode ser encontrada no model do package_plan
PLANS = {
:free => {
:video_storage_limit => 10.megabytes,
:file_storage_limit => 5.megabytes,
},
:professor_lite => {
:video_storage_limit => 30.megabytes,
:file_storage_limit => 25.megabytes,
},
:professor_standard => {
:video_storage_limit => 90.megabytes,
:file_storage_limit => 25.megabytes,
},
:professor_plus => {
:video_storage_limit => 150.megabytes,
:file_storage_limit => 25.megabytes,
}
Entendida essa lógica, o próximo passo seria implementar uma solução de transcoding, talvez com a ajuda de alguma gem do tipo streamio, carrierwave, paperclip-av ou talvez alguma solução mais simples utilizando apenas o embeed do HTML5 que aceitaria apenas os formatos MP4, WebM e Ogg.
Ainda que a dependência do youtube não seja o cenário ideal, por enquanto não temos previsão de implementar esse upload, então… Fica a dica!