Donaciones

videoedicion.org es una web sin ánimo de lucro que se mantiene gracias a las donaciones de sus usuarios. Todas las donaciones, desde 1 €, son extremadamente valiosas.
[ PINCHA AQUÍ
PARA MÁS INFORMACIÓN
]

Haz una donación para ocultar este bloque
Welcome to videoedicion.org (v9). Please login or sign up.

08 de Febrero de 2025, 04:52:43

Login with username, password and session length

Temas Recientes

292 Visitantes, 0 Usuarios

Colaboraciones

Estas empresas colaboran con videoedicion.org, bien ofreciendo algún descuento a los  usuarios que se registren usando estos banners o bien ofreciéndonos una pequeña comisión que nos ayudará con los gastos de la web.


 


Colaboración TFG

Os pido vuestra colaboración para la investigación que estoy haciendo para mi trabajo de fin de grado sobre la traducción en subtítulos de lenguaje malsonante.

Tenéis más info aquí. ¡Gracias de antemano!

Automatización de Time Stretch al 95% y 105% en clips de audio de voz

Iniciado por manellopez, 28 de Junio de 2023, 18:38:51

Tema anterior - Siguiente tema

manellopez

Dj, editor de audio y video. Lleida
Grupo en Telegram de Magix Vegas:
https://t.me/+mSN5-vIsNKJlZTY0
Mi web: https://mamomo.com

XarquS

Magia potagia, tío. Lo dicho, si te hace el juego, rien à dire ;-)

X.
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

manellopez

Pues a mi me va genial, lo tengo asignado a mi ShuttlePRO v2 y lo uso mucho, aunque me gustaría tener un atajo para acortar y otro para alargar...

Dj, editor de audio y video. Lleida
Grupo en Telegram de Magix Vegas:
https://t.me/+mSN5-vIsNKJlZTY0
Mi web: https://mamomo.com

XarquS

Sip; sería muy práctico para tí. Es una pena que no se pueda programar con el Shuttle.

X.
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

manellopez

SOLUCIÓN:
Hola chicos, por fin tengo la solución para que lo haga correctamente, tanto en el audio como en la longitud del clip, gracias a la IA:

velocidad al 95% (ralentizar)

using System;
using System.Windows.Forms;
using ScriptPortal.Vegas;

public class EntryPoint
{
    Vegas myVegas = null;
    Form dlog = new Form();

    public void FromVegas(Vegas vegas)
    {
        myVegas = vegas;
        AdjustPlaybackRate(0.95f); // Aplicar directamente el 95% al abrir la ventana
        dlog.Close(); // Cerrar la ventana automáticamente
    }

    void AdjustPlaybackRate(float rate)
    {
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    // Ajustar tanto audio como video relacionados
                    SyncAndAdjustEvent(trackEvent, rate);
                }
            }
        }
    }

    void SyncAndAdjustEvent(TrackEvent selectedEvent, float rate)
    {
        // Ajustar el evento seleccionado (audio o video)
        AdjustEvent(selectedEvent, rate);

        // Buscar el evento relacionado (audio o video)
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                // Si encontramos un evento relacionado con el seleccionado
                if (trackEvent != selectedEvent && AreEventsLinked(selectedEvent, trackEvent))
                {
                    // Ajustar el evento relacionado para que coincida
                    AdjustEvent(trackEvent, rate, selectedEvent.Length);
                }
            }
        }
    }

    bool AreEventsLinked(TrackEvent event1, TrackEvent event2)
    {
        // Consideramos que los eventos están vinculados si comparten la misma posición de inicio
        return event1.Start == event2.Start && event1.Length == event2.Length;
    }

    void AdjustEvent(TrackEvent trackEvent, float rate, Timecode syncedLength = null)
    {
        // Ajustar eventos de audio
        if (trackEvent.Track.IsAudio())
        {
            trackEvent.AdjustPlaybackRate(rate, true); // Ajustar la tasa de reproducción del audio
            if (syncedLength != null)
            {
                trackEvent.Length = syncedLength; // Sincronizar duración con el video
            }
            else
            {
                // Ajustar la duración del evento de audio
                double newLengthInSeconds = trackEvent.Length.ToMilliseconds() / 1000.0 / rate;
                trackEvent.Length = new Timecode(newLengthInSeconds * 1000);
            }
        }

        // Ajustar eventos de video
        if (trackEvent.Track.IsVideo())
        {
            VideoEvent videoEvent = trackEvent as VideoEvent;
            if (videoEvent != null)
            {
                videoEvent.PlaybackRate = rate; // Ajustar la tasa de reproducción del video
                if (syncedLength != null)
                {
                    videoEvent.Length = syncedLength; // Sincronizar duración con el audio
                }
                else
                {
                    // Ajustar la longitud del evento de video
                    double newLengthInSeconds = videoEvent.Length.ToMilliseconds() / 1000.0 / rate;
                    videoEvent.Length = new Timecode(newLengthInSeconds * 1000);
                }
            }
        }
    }
}

velocidad al 105% (acelerar)


using System;
using System.Windows.Forms;
using ScriptPortal.Vegas;

public class EntryPoint
{
    Vegas myVegas = null;
    Form dlog = new Form();

    public void FromVegas(Vegas vegas)
    {
        myVegas = vegas;
        AdjustPlaybackRate(1.05f); // Aplicar directamente el 105% al abrir la ventana
        dlog.Close(); // Cerrar la ventana automáticamente
    }

    void AdjustPlaybackRate(float rate)
    {
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    // Ajustar tanto audio como video relacionados
                    SyncAndAdjustEvent(trackEvent, rate);
                }
            }
        }
    }

    void SyncAndAdjustEvent(TrackEvent selectedEvent, float rate)
    {
        // Ajustar el evento seleccionado (audio o video)
        AdjustEvent(selectedEvent, rate);

        // Buscar el evento relacionado (audio o video)
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                // Si encontramos un evento relacionado con el seleccionado
                if (trackEvent != selectedEvent && AreEventsLinked(selectedEvent, trackEvent))
                {
                    // Ajustar el evento relacionado para que coincida
                    AdjustEvent(trackEvent, rate, selectedEvent.Length);
                }
            }
        }
    }

    bool AreEventsLinked(TrackEvent event1, TrackEvent event2)
    {
        // Consideramos que los eventos están vinculados si comparten la misma posición de inicio
        return event1.Start == event2.Start && event1.Length == event2.Length;
    }

    void AdjustEvent(TrackEvent trackEvent, float rate, Timecode syncedLength = null)
    {
        // Ajustar eventos de audio
        if (trackEvent.Track.IsAudio())
        {
            trackEvent.AdjustPlaybackRate(rate, true); // Ajustar la tasa de reproducción del audio
            if (syncedLength != null)
            {
                trackEvent.Length = syncedLength; // Sincronizar duración con el video
            }
            else
            {
                // Ajustar la duración del evento de audio
                double newLengthInSeconds = trackEvent.Length.ToMilliseconds() / 1000.0 / rate;
                trackEvent.Length = new Timecode(newLengthInSeconds * 1000);
            }
        }

        // Ajustar eventos de video
        if (trackEvent.Track.IsVideo())
        {
            VideoEvent videoEvent = trackEvent as VideoEvent;
            if (videoEvent != null)
            {
                videoEvent.PlaybackRate = rate; // Ajustar la tasa de reproducción del video
                if (syncedLength != null)
                {
                    videoEvent.Length = syncedLength; // Sincronizar duración con el audio
                }
                else
                {
                    // Ajustar la longitud del evento de video
                    double newLengthInSeconds = videoEvent.Length.ToMilliseconds() / 1000.0 / rate;
                    videoEvent.Length = new Timecode(newLengthInSeconds * 1000);
                }
            }
        }
    }
}
Dj, editor de audio y video. Lleida
Grupo en Telegram de Magix Vegas:
https://t.me/+mSN5-vIsNKJlZTY0
Mi web: https://mamomo.com

El spam de este foro está controlado por CleanTalk