Como ativar o streaming quando o arquivo é entregue através do script PHP?

1

Estou tentando ativar o streaming mp4 no meu servidor de conteúdo. Devido a alguns fanáticos por segurança com quem eu trabalho com todos os arquivos, eles são entregues através de um script php e possuem o seguinte formato de URL:

http://server.com/cdn/3/getObject?param1=71&param2=1002&file=File1000.mp4

Assim, todas as solicitações de streaming no formato padrão, como o URL a seguir, falham devido ao parâmetro anexado

http://server.com/cdn/3/getObject?param1=71&param2=1002&file=File1000.mp4?start=10.0

Atualmente, estou executando o nginx com o módulo de streaming mp4 compilado e em execução. Estou pensando em fazer uma reescrita de URL para habilitar o streaming, mas não tive sucesso até agora. Além disso, terei que ativar o streaming seguro na próxima etapa ...

Qualquer ajuda será muito apreciada.

Atualização:

Parece que minha pergunta não está clara o suficiente.

Eu não quero transmitir meu arquivo mp4 usando um script PHP ou qualquer outra coisa. Meu problema é que um script PHP é usado para determinar o caminho do arquivo, isso é devido ao fato de que eu preciso garantir que as pessoas não consigam apenas adivinhar outras URLs. Assim, o script getObject apenas retorna o arquivo solicitado sem qualquer modificação ou algo assim, se todos os outros parâmetros se encaixarem. O problema agora é que isso torna impossível transmitir o arquivo. Qualquer tentativa de transmitir um arquivo mp4 (por exemplo, com o flowplayer) falha, mesmo com o módulo de streaming ativado.

    
por Evils 26.03.2013 / 14:21

1 resposta

2

Não existe o HTTP Steaming. Há um par de hacks para simulá-lo no entanto.

Primeiro e mais antigo está usando o cabeçalho Range: para especificar o pedaço do arquivo que o cliente deseja. Não há nada que impeça um script PHP de enviar o pedaço correto baseado nesse cabeçalho, ele apenas precisa ler o cabeçalho e retornar o cabeçalho de resposta apropriado com os dados do arquivo.

Em segundo lugar está usando um módulo de servidor de algum tipo que entende o formato do arquivo que está sendo transmitido e fornece a quantidade "correta" de dados por qualquer intervalo de tempo. É isso que o módulo mp4 do ngninx está fazendo. Pode ser possível programar um script PHP que descubra a taxa de dados do arquivo e, em seguida, envie o arquivo a essa taxa, mas eu não sei de nenhum, e a programação seria difícil.

    
por 26.03.2013 / 18:08