Cambiar framerate de un vídeo sin modificar número de frames
4 seguidores
Hola.
Estoy haciendo un vídeo con flash y, a la hora de exportar, se salta frames. He leído que, en estos casos, es mejor poner el framerate de flash a, por ejemplo, 5, y luego cambiarlo a 25 en el vídeo resultante.
Pero he probado mil cosas y no hay manera... Cargándolo en after, en final cut... y nada, siempre hace cosas raras.
La única manera es exportar como secuencia de imágenes desde flash y luego eso cargarlo en algún editor de vídeo. Pero es un proceso muy lento y me lo guardo para la versión final.
¿No existe ninguna manera de solo cambiar ese parámetro sin tener que volver a componer el vídeo?
belbosck
a cuántos fps lo estás trabajando y a cuántos fps lo quieres exportar? Lo lógico sería que proyecto y exportación coincidieran, es decir, que trabajes con los fps que necesitas para el resultado final.
Si trabajas a 5 y lo exportas a 25, te añadirá frames (que se inventará) y al revés no lo tengo tan claro, yo diría que si bajas el fps proporcionalmente debería aumentar el tiempo de reproducción y ya, no?
allam de gorilla
Trabajar en secuencias de PNGs no es ninguna tontería, pesan poco y tienen alpha! ;)
almostDesign
Estoy trabajando a 25, pero si exporto a 25 se salta frames, porque flash exporta video a la par que lo reproduce y en escenas complicadas mi mac no puede. Podría hacerlo frame por frame, pero no lo hace. Es por eso que exporto a 5, para luego cambiarlo. He mirado mucho por google, y es la única manera (junto a sacar una secuencia de imágenes) +info.
Trabajar con secuencia de PNGs es complicado, porque es un vídeo de 4 minutos y me salen 6000 archivos.
Pensaba que tendría que haber una herramienta para cambiar solo el valor del framerate, pero solo lo he encontrado para windows, y sólo para avi, y flash no exporta avi. Así que la solución (macarra a más no poder) que he encontrado es abrir el video (a 5fps) en un editor hexadecimal (Dumpster), y multiplicar el valor del timescale por 5. Eso si, me he tirado un día entero para encontrar la solución, y luego otro para encontrar el atom correcto y el valor timescale dentro del vídeo. Si a alguien le interesa puedo explicarlo un poco más.
Un saludo y gracias por contestar.
belbosck
Vale! tienes QuickTime Pro? la versión 7 abre flv. Yo intentaría exportar a flv y luego en QT exportar como mov. Por otra parte, con qué mac trabajas, quizá puedo aportarte algún consejo. Ah! Y prueba a reproducir la peli en un ordenador más potente, a veces sólo es un problema de reproducción, no de exportación.
almostDesign
¿Pero qué ventaja crees que tengo al exportar como flv en vez de mov? Solo cambia la compresión. La exportación es la misma.
Trabajo con un MacBook Pro 2,4GHz Inter Core 2 Duo con 4Gbs de RAM, y te aseguro que no es problema de reproducción de mi ordenador.
De todos modos, como he dicho arriba, ya he encontrado solución, aunque es bien freak.
fernandocomet
Con AS3:
stage.frameRate =18
//18 o el valor que tú quieras
Aquí un ejemplo con secuencia de imágenes:
http://www.fernandocomet.com/charlie.html
y el código:
import flash.display.*;
import flash.events.*;
import flash.text.*;
dynamic public class MainTimeline extends MovieClip
{
public var faster:SimpleButton;
public var slower:SimpleButton;
public var info:TextField;
public function MainTimeline()
{
addFrameScript(0, frame1);
return;
}// end function
public function onSlowerClick(param1:MouseEvent) : void
{
if (stage.frameRate > 5)
{
stage.frameRate = stage.frameRate - 5;
}// end if
info.text = stage.frameRate.toString();
return;
}// end function
function frame1()
{
info.text = stage.frameRate.toString();
faster.addEventListener(MouseEvent.CLICK, onFasterClick, false, 0, true);
slower.addEventListener(MouseEvent.CLICK, onSlowerClick, false, 0, true);
return;
}// end function
public function onFasterClick(param1:MouseEvent) : void
{
stage.frameRate = stage.frameRate + 5;
info.text = stage.frameRate.toString();
return;
}// end function
}
belbosck
pues la ventaja es que el formato flv QT lo reconoce y lo exporta bien a mov y el swf desconozco si es así. Por otra parte, tienes un ordenador lo suficientemente potente, si no lo estás haciendo ya te recomiendo que trabajes el vídeo en un archivo externo firewire dedicado en exclusiva a ello, si es de 7200 rpm mejor que mejor.
almostDesign
A ver, creo que no nos estamos entendiendo.
fernandocomet:
No me sirve de nada cambiar el framerate con as3. Igualmente lo puedo cambiar con el IDE de flash. El problema viene al exportar en video (.mov).
Subversion de luxe:
Es que el formato swf no lo he utilizado en ningún momento. Lo que hago es exportar directamente de flash a video (.mov)
Por otra parte, ningún ordenador es suficientemente potente para nada. Ponte a meter movieclips con alpha y texto por encima de otras fotos que se estén moviendo y verás. En el mio, trabajando en el disco duro interno, se salta frames. Si trabajo con el disco duro externo firewire 800 se saltará muchos más.
Mirad la info que puse más arriba (repito el link) y veréis que no es solo mio el problema.
http://lukesh.wordpress.com/2008/04/08/flash-export-to-video-framerate-woes/
belbosck
bueno, pues no puedo ayudarte más.
Lo de trabajar con un HD externo no es ninguna tontería, tienes el HD interno ocupado completamente con el procesamiento de las aplicaciones, el externo, nuevo, vacío, sólo graba el archivo. Yo tenía problemas para manejar After Effects con un Mac menos potente que el tuyo, Imac G5 PPC con sólo 1.5 GB de ram y mediante FW 400 (tú tienes 800) me va de perlas, pero si tú tienes un ordenador mejor y crees que funcionará peor que el mío no puedo hacer nada para que cambies de opinión.
almostDesign
Seguimos sin entendernos.
After Effects, si no puede renderizar en tiempo real, no lo hace. Y no se salta frames.
Flash si renderiza video en tiempo real, y lo que no puede hacer se lo salta. Entonces, ya sea con tu ordenador, con el mio, con un pentium, o con uno de la nasa, siempre puede haber un momento muy jodido de renderizar en el que se va a saltar frames, y entonces el vídeo ya no me vale.
Pero la cuestión de este hilo no es como optimizar el equipo para que renderice mejor, si no "como cambiar el framerate de un video sin modificar el número de frames". Y ya he encontrado una solución, aunque puede ser que haya algún programita que abra el archivo en hexadecimal por ti, y te simplifique un poco las cosas.
almostDesign
Ah, y por si alguien acaba aquí de casualidad y le interesa la solución, solo hay que multiplicar el parámetro "moov/trak/mdia/mdhd/timeScale" por 5 (para pasar de 5 a 25). Con esto te pone el framerate a 25, pero te deja la misma duración del vídeo, por lo que el último fotograma se extiene por 15 minutos (en mi vídeo de 5 minutos). Esto se puede corregir tocando los parámetros "duration" del atom, pero a mi ya me da igual, porque no lo estoy utilizando para el vídeo final.
Espero que a alguien le sirva.