Tengo una aplicación web escrita en Ruby on rails que carga videos del usuario al servidor utilizando un formulario (de hecho utilizo un cargador de archivos jquery que carga directamente a s3, pero No creo que esto sea relevante).
Para disminuir el tiempo de carga de un video, quiero reducirlo, p. si el tamaño del video es de 1000x2000 píxeles, quiero reducirlo a 500x1000. ¿Hay alguna manera de hacerlo mientras el video se carga en el lado del cliente? ¿Hay una biblioteca de JavaScript que pueda hacer eso?Reducción del tamaño/cambio de tamaño de un video durante la carga en un sitio web remoto
Respuesta
Puede usar una gema como Carrierwave (https://github.com/jnicklas/carrierwave). Tiene la capacidad de procesar archivos antes de almacenarlos. Incluso si los sube directamente a S3 primero con javascript, puede hacer que Carrierwave recupere el archivo, lo procese y lo almacene de nuevo.
De lo contrario, podría hacer que Carrierwave se ocupe del archivo desde el principio (a menos que esté hospedando con Heroku y necesite evitar los tiempos de espera yendo directamente a S3).
Gracias, pero eso solo ocurre después de que se carga la película. Básicamente, quiero hacerlo antes de que el archivo salga de la máquina del usuario, lo que significa que mientras se transmite al servidor o al equipo del cliente –
sospecho que no es posible. No puedo imaginar que puedas hacerlo desde el lado del cliente y también me sorprendería si puedes hacerlo sin tener todo el archivo. Ciertamente podría estar equivocado, sin duda alguien aquí nos iluminará si es el caso. –
La recompresión de un video no es un problema trivial que no va a ocurrir en un navegador en el corto plazo.
Con los cambios en HTML 5, que es teóricamente posible si se puede superar varios problemas:
- tendrá que utilizar el File API para leer el contenido de un archivo que el usuario selecciona un elemento utilizando
<input type="file">
. Sin embargo, parece queFileReader
lee el archivo completo en la memoria antes de entregárselo a su código, que es exactamente lo que no desea cuando se trata de archivos de video de gran tamaño. Desafortunadamente, este es un problema del que no puedes hacer nada. Todavía podría funcionar, pero el rendimiento probablemente sea inaceptable por algo más de 10-20 MB más o menos. - Una vez que tenga los datos del archivo, usted tiene que realmente interpretar que – algo logra generalmente con un demuxer dividir el continer (mpeg, etc) presentar en flujos de vídeo y audio, y una codec para descomprimir aquellas corrientes en crudo imagen/datos de audio. Su sistema operativo viene con varias implementaciones de códecs, ninguno de los cuales es accesible desde JavaScript. Existen algunas implementaciones de JS videoandcodec, pero son experimentales y extremadamente lentas; y solo implemente el descompresor , por lo que se quedaría atascado a la hora de crear resultados.
- Decompressing, descamación y volver a comprimir audio y vídeo es extremadamente uso intensivo del procesador, que es exacty el tipo de carga de trabajo que JavaScript (y lenguajes de scripting en general) es el peor en. Como mínimo, debe usar Web workers para ejecutar su código en un hilo separado.
- Todo este trabajo se ha realizado severaltimesover; estás reinventando la rueda.
Realista, esto es algo que tiene que hacerse en el servidor, y aun así no es una tarea trivial.
Si está desesperado, podría intentar algo como un complemento/control ActiveX que maneja la compresión, pero luego tiene que convencer a los usuarios para que instalen un complemento (yuck).
Al principio pensé que no era posible, pero YouTube parece ser capaz de hacer esto cuando cargas el video, así que imagino que hay una manera. Actualmente estoy redimensionando y convirtiendo en el lado del servidor. Solo quiero poder hacerlo antes de la carga desde el cliente. –
. Intenté subir a YouTube. Los datos enviados al servidor eran idénticos al archivo de video. mi disco duro, por lo que definitivamente no hay ninguna compresión del lado del cliente. – josh3736
- 1. Reducción del tamaño de JRE
- 2. Reducción del tiempo de carga del applet
- 3. Reducción de JPG durante la descompresión JPG
- 4. Reducción del tamaño de bitmap en C#
- 5. Reducir el tamaño del vídeo con el mismo formato y la reducción de tamaño del marco
- 6. Medición en un sitio web
- 7. Optimizaciones para reducir el tiempo de carga del sitio web
- 8. Mapa del sitio en un sitio web altamente dinámico
- 9. Optimizar la carga de un archivo XAP con un sitio web asp.net
- 10. Creación de un sitio web de transmisión en vivo
- 11. ¿Manera elegante de determinar el tamaño total del sitio web?
- 12. Reducción de la carga de ability.rb en cancan
- 13. Cómo accedo al sitio web de la Consola de administración Glassfish V3 desde un host remoto
- 14. Reducción del tamaño del archivo PNG en .NET
- 15. video como fondo del sitio? HTML 5
- 16. Reducción de una lista de arreglos a un nuevo tamaño
- 17. Carga de archivos del servidor remoto a través de PHP
- 18. Generar un mapa del sitio visual de un sitio existente
- 19. Cómo ejecutar MSDeploy un paquete de sitio web creado en un sitio web de IIS virgen
- 20. Administrar un sitio web en rápido crecimiento
- 21. Prueba de carga/rendimiento en un sitio con autenticación Kerberos
- 22. Mostrando un gif de carga durante 5 segundos automáticamente
- 23. Uso de PHP CURL para iniciar sesión en un sitio web remoto
- 24. carga de archivos remoto en griales
- 25. Repetición de la imagen de fondo del sitio web - tamaño frente a la velocidad
- 26. ¿Puedo usar WGET para generar un mapa del sitio de un sitio web dada su URL?
- 27. Global.asax falta de un sitio web del proyecto
- 28. Raspe un sitio web dinámico
- 29. ¿Cómo alojar un sitio web JSP en un servidor web?
- 30. Implementación de un sitio web desde Subversion
Ver la respuesta aquí: http: // stackoverflow.com/questions/31316791/compress-a-video-on-client-side-web –