PUBLICIDAD

Welcome to videoedicion.org (v8.3). Please login or sign up.

03 de Mayo de 2024, 18:11:21

Login with username, password and session length

Temas Recientes

666 Visitantes, 0 Usuarios

Compra y colabora

Si usas estos banners para hacer tus compras, recibiremos una pequeña comisión. ¡Gracias por colaborar!


 




Código VID15 para
un 15% en planes anuales


scripts, cuts, media markers

Iniciado por Startel, 26 de Febrero de 2007, 19:19:19

Tema anterior - Siguiente tema

Startel

1) ¿Existe un script para situar un marker donde quiera que empiece o termine un clip en el timeline?
2)  ¿Existe un script para hacer un split/corte dondequiera que  haya un media marker salvado en un render anterior?

Explico lo que busco. Estoy buscando una alternativa al Save As - Copy and trim media with project.

Esta opcion de Vegas tiene el inconveniente que salva separadamente los streams de video y audio y en el nuevo proyecto creado se pierde la capacidad de sincronizar automaticamente audio y video cuando se
desincronizan y lo que es peor, de darnos cuenta visualmente que están desincronizados.

El objetivo final es racionalizar el uso del espacio en disco duro. Digamos que tengo 3 horas filmadas en un evento. Después de revisar, elimino mucho material inutil o que estoy convencido que no voy
 a utilizarlo y me quedo provisionalmente con 1 o 1 1/2 hora para seguir trabajando. Con Copy and trim media with project saco del disco en este caso 13 o 20 GB de video pero tengo despues el inconveniente mencionado de la sincronizacion de audio y video.

Mi idea es un script que ponga un marker que separe cada evento en el timeline, renderizar a DV salvando los media markers y después otro script que corte donde haya un marker.

Nota:
 le veo un inconveniente cuando hay varias pistas de video pero es menor al de la sincronizacion y tiene ademas la solucion
de situar provisionalmente el
contenido cada pista en una sola y despues  moverlo a su lugar conservando los cortes independientemente
 de los que tengas las otras pistas.

saludos

Startel
 .

Startel

Bueno encontré la solucion para la primera pregunta. Me falta para la segunda que es imprescindible para lograr lo que quiero.
Encontré un script de JohnMeyer para poner marcadores cada vez que había un cambio de media en el timeline. Lo modifiqué para que insertara un marcador (marker) en el inicio de cada clip (event) independientemente de que varios o todos los clips provinieran de un mismo archivo de video.
Para compartirlo pongo a continuacion el script de JohnMeyer  y seguidamente la modificación que hice para mis propositos.
 
(Se preguntarán porque no hago el otro script que me falta y la respuesta es que no domino la creación de scripts completamente y lo que hice aqui fue "traquetear" el script ya hecho para que hiciera lo yo quería.

SCRIPT DE JOHN MEYER

/**
 * This script adds markers at media transitions on the first selected track.
 * A "media transition" happens when an event comes from a
 * different file than the preceding event.
 * The markers are labeled with the name of the media file.
 * If a marker already exists, no new marker is created.
 *
 * Written By: John Meyer (from a script by Edward Troxel)
 * 12/10/2003
 *
 **/

import System;
import System.IO;
import System.Windows.Forms;
import Microsoft.Win32;
import Sony.Vegas;

try {
  var myMarker : Marker;
  var LastFileName = " ";

  //Find the first selected track
  var track = FindSelectedTrack();
  if (null == track)
      throw "no selected track";

  var eventEnum = new Enumerator(track.Events);

  // Cycle through all events on the selected track

  while (!eventEnum.atEnd()) {
    var evnt : TrackEvent = TrackEvent(eventEnum.item());
    var MyFilePath = evnt.ActiveTake.MediaPath;
    var extFileName = Path.GetFileName(MyFilePath);
    var baseFileName = Path.GetFileNameWithoutExtension(extFileName); // Media file name for this event

    // Only add marker if this event's media is different from last event, and if no marker already exists.
    if ( (baseFileName != LastFileName) && (!MarkerExist(evnt.Start.ToMilliseconds() ) ) ) {
      myMarker = new Marker(evnt.Start);
      Vegas.Project.Markers.Add(myMarker);
      myMarker.Label = baseFileName;
    }

    // Prepare for next event
    LastFileName = baseFileName;
    eventEnum.moveNext();
  }

} catch (e) {
    MessageBox.Show(e);
}

// Function to find first selected track
function FindSelectedTrack() : Track {
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
    var track : Track = Track(trackEnum.item());
    if (track.Selected) {
        return track;
    }
    trackEnum.moveNext();
  }
  return null;
}

// Function to check if there is a marker at timecode passed to this function
// Timecode (dStart) must be in milliseconds
function MarkerExist (dStart) : boolean {

  var fmarkerEnum = new Enumerator(Vegas.Project.Markers);

  while (!fmarkerEnum.atEnd()) {
    var fMyMarker = fmarkerEnum.item();
           var fMarkerStart = fMyMarker.Position.ToMilliseconds();
    if ( dStart == fMarkerStart ) {
      return 1;
    }

  fmarkerEnum.moveNext();

  } // End while fmarkerEnum

  return 0;
}

SCRIPT MODIFICADO POR MI

/**
 * This script adds markers at event start points on the first selected track.
 * The markers are labeled with the name of the media file. Several markers could have the same name if several events
 * comes from the same file.
 * If a marker already exists, no new marker is created.
 *
 * Written (better said, modified) By: Startel (from a script by JohnMeyer from a script by Edward Troxel)
 * 02/26/2007
 *
 **/

import System;
import System.IO;
import System.Windows.Forms;
import Microsoft.Win32;
import Sony.Vegas;

try {
  var myMarker : Marker;
  var LastFileName = " ";

  //Find the first selected track
  var track = FindSelectedTrack();
  if (null == track)
      throw "no selected track";

  var eventEnum = new Enumerator(track.Events);

  // Cycle through all events on the selected track

  while (!eventEnum.atEnd()) {
    var evnt : TrackEvent = TrackEvent(eventEnum.item());
    var MyFilePath = evnt.ActiveTake.MediaPath;
    var extFileName = Path.GetFileName(MyFilePath);
    var baseFileName = Path.GetFileNameWithoutExtension(extFileName); // Media file name for this event

    // Only add marker if no marker already exists.
    if ( (!MarkerExist(evnt.Start.ToMilliseconds() ) ) ) {
      myMarker = new Marker(evnt.Start);
      Vegas.Project.Markers.Add(myMarker);
      myMarker.Label = baseFileName;
    }

    // Prepare for next event
    LastFileName = baseFileName;
    eventEnum.moveNext();
  }

} catch (e) {
    MessageBox.Show(e);
}

// Function to find first selected track
function FindSelectedTrack() : Track {
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
    var track : Track = Track(trackEnum.item());
    if (track.Selected) {
        return track;
    }
    trackEnum.moveNext();
  }
  return null;
}

---------------

Saludos

Startel

Startel

Es simpatico. En este post comienzo preguntando y después yo mismo me respondo.
Junto con la pregunta me puse yo mismo a buscar las soluciones y encontré la primera (arriba). La compartí y seguí trabajando para encontrar la segunda. Encontré un script de E. Troxel que cortaba en los marcadores, pero no me funcionaba con los marcadores salvados en el archivo renderizado (save markers in media file)
pero combinando los dos scripts puedo lograr lo que quiero.
1) Pongo marcadores al inicio de cada evento/clip con el script modificado por mi.
2) renderizo
3) pongo el video renderizado en el mismo proyecto (que tiene los marcadores)
4) corto en cada marcador con el script de E. Troxel

voilá, resuelto el problema.

saludos

Startel

PUBLICIDAD

El spam de este foro está controlado por CleanTalk