Como leio a videodação de um arquivo .flv de *.NET sem usar o flash-attivex?
-
06-07-2019 - |
Pergunta
Eu tenho um programa WinForm que permite aos usuários fazer upload de filmes de ondas de choque em um servidor. Para obter a videodação, crio uma instância do "ShockwaveFlashObjects" -ActiveX, carrega o filme e, em seguida, leio a videodação até que ele mude de "0,0" para qualquer outra coisa. Entendo isso lendo o getVariable ("Videoduration").
Muitas vezes, funciona, mas às vezes trava ou mostra informações do filme Flash anterior que foi carregado.
Eu também tive problemas para distribuir o ShockwaveFlashObject-Attivex. Eu realmente gostaria de pular isso e apenas ler o arquivo de flash e descobrir o comprimento do filme.
Todos os filmes enviados são vídeos, para que tenham uma duração específica de jogo.
Esta pergunta não ajudou com respostas eather.
Eu verifiquei o formato de SWF no wotsit E pelo que posso ver, deve ser possível ler o quadros e o quadro de quadros e, com isso, calcule a duração, mas não consegui encontrar nada sobre os arquivos FLV. Talvez alguém já tenha feito isso e possa me apontar para um bom código que me economiza bastante tempo tentando entender a especificação?
Solução
Uma das possibilidades é usar o FFMPEG para ler as taxas de bits de vídeo/áudio. Depois de ter esses detalhes, você pode dividir o tamanho total do arquivo pela soma das taxas de bits de vídeo/áudio. Isso fornece um número estimado de segundos (+/- poucos SOCNDs).