¿Cómo insertar por lotes la misma escena de clip al comienzo de varios videos?

0

Bueno, han pasado unos días investigando sobre una forma adecuada automática o semiautomática de fusión masiva de archivos de esta manera. Básicamente, lo que quiero lograr es insertar el mismo clip, antes de un montón de otros clips.

En este caso, he intentado con archivos .flv, .mp4, .avi (siempre combinando los mismos códecs), y no tuve éxito después de probar todos los programas disponibles en Windows y OSx. Créeme, los he probado todos. Los únicos que se supone que manejan bastante bien estas tareas son de Videocharge: Watermark Master y Videocharge Studio . Ninguno de ellos pudo realizar correctamente la tarea. Quizás había alguna forma de lograr esto al hacer scripts con After Effects o Sony Vegas , pero no encontré ninguno.

Ahora estoy tratando de encontrar alguna manera de lograr lo mismo, ya sea mediante shell, secuencias de comandos Unix ... No me importa. Simplemente no quiero montar Ubuntu solo para estas tareas. No soy un programador, pero soy bastante terco (lo que a veces me lleva a noches interminables), por lo que agradecería alguna ayuda u orientación de cualquier persona entusiasta y lo suficientemente buena en el procesamiento de secuencias de comandos por lotes de video.

En este momento, las únicas rutas útiles que he encontrado me llevan a usar mencode o ffmpeg a través de comandos, pero no puedo realizar la fusión por lotes. No me importa la forma de ordenar los videos. Pero teniendo en cuenta que la operación se realizaría en cientos o miles de videos, no sería adecuado tenerlos en carpetas separadas, cada una acompañada por el clip de introducción "único". Supongo que la forma más lógica sería almacenar los videos de "grupo" en una carpeta, y el clip de introducción en la misma carpeta que el codificador o el procesador.

Gracias de antemano por cualquier ayuda u orientación,

FLYqtFLY
fuente
primero debe aumentar su conocimiento de video: contenedor, pistas, códecs. codificación y muxing. mira un video foro .
Endoro
Consulte la documentación de FFmpeg en el demuxer concat y también Cómo concatenar (unir, fusionar) archivos multimedia .
llogan

Respuestas:

0

Bueno, he agregado videos, pero nunca los agregué al principio. ¡Puedes usar avidemux para agregar los videos!

No soy bueno en JavaScripting, así que discúlpeme por no escribir esto para usted. Hay un tutorial para crear scripts para Avidemux. Avidemux es un conversor de video de código abierto y gratuito. Puede agregar efectos a su audio / video en avidemux y guardarlo en múltiples formatos.

Este script es un tutorial de ejemplo en el enlace de la página que se proporciona aquí: [ ::: link ::: ] y el script simplemente escaneará el directorio orgDir y descomprimirá todos los archivos AVI. El archivo resultante se coloca en el directorio destDir (usando la nueva API de DirectorySearch).

Las funciones de Avidemux son las siguientes: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

y más funciones: cargar, agregar, guardar, guardar DVD, saveOGM, clearSegments, addSegment, goToTime, forceUnpack, setContainer

Más funciones de script aquí: http://www.avidemux.org/admWiki/doku.php?id=using:scripting#avidemux_functions

La secuencia de comandos turotial que convierte el archivo avi es la siguiente:

//AD  <-
/*
      Simple script that scans the orgDir directory
      and unpack all AVI files
      The resulting file is put in destDir directory
      Using new directorySearch API
*/
var app = new Avidemux();
var ds = new DirectorySearch();
var orgDir;
var destDir;
var reg =new RegExp(".$");
/*
      This is for Unix
      For Windows change to
      sep="\\";
      reg2=new RegExp("\\.*\\");
*/
var sep="\\";
var reg2 =new RegExp("\/.*\/");
var extension;
var target;
//
//
//
//      select files from original & target directories
//
      orgDir=fileReadSelect();
      destDir=fileWriteSelect();
      orgDir=pathOnly(orgDir);
      destDir=pathOnly(destDir);
//
//      strip last \\ or //
//
      orgDir=orgDir.replace(reg,"");
      destDir=destDir.replace(reg,"");
      print("orgDir : <"+orgDir+">");
      print("destDir : <"+destDir+">");
//
// Go
//
if(ds.Init(orgDir))
{
  while(ds.NextFile())
  {
      // Only process file we want i.e. AVI
      if(!ds.isNotFile && !ds.isDirectory && !ds.isHidden && !ds.isArchive && !ds.isSingleDot && !ds.isDoubleDot)
      {
          extension=ds.GetExtension();
          if(extension == "avi")
          {
              target=ds.GetFileName();
              target=destDir+sep+target;
              print("***"+ds.GetFileName()+"-->"+target);
              processFile(orgDir+sep+ds.GetFileName(),target);
              }
          //print("File: "+ds.GetFileName()+" is "+ds.GetFileSize()+" bytes, extension "+extension);
      }
  }
  print("We just searched in directory \"" + ds.GetFileDirectory() + "\"");
  ds.Close();
}
else
  displayError("Error initializing the directory search");
displayInfo("Finished !");
function processFile(filename, targetfile)
{
      // Load the file
      app.forceUnpack();
      app.load(filename);
      app.rebuildIndex();
      app.audio.delay=0;
      app.audio.mixer("NONE");
      app.audio.scanVBR();
      app.setContainer("AVI_UNP");
      app.save(targetfile);
      return 1;
}

Espero que esto ayude...

fuentes:

mk117
fuente
¡Bienvenido a Super User! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
terdon
Okay. lo siento por eso ...
editaré
0

Saludos mucho por su sugerencia @ user2377276. Realmente aprecio el esfuerzo. De hecho, su solución es la que me está guiando en la dirección correcta. Bueno, eso espero, ya que aún no he tenido éxito. Hasta ahora, lo más cerca que pude lograr la fusión fue a través de diferentes variaciones del siguiente código, ejecutado en el mismo directorio que los múltiples videos diferentes. El archivo único para agregar se colocó en la raíz, y creé C: / TEMP para la salida.

para% a en ("* .flv") hacer Mencoder -oac copia "c: \ INTRO.flv" "% a" -o "c: \ TEMP \% a"

Todos los videos están en FLV1, pero tienen una resolución ligeramente diferente, así que básicamente me estoy cagando.

No sé si debería probar con ffmpeg. Sugerencias?

Estoy bastante seguro de que esto se puede lograr sin la necesidad de volver a codificar, ya que he probado varios programas y ninguno de ellos está volviendo a codificar, solo están obligando a la resolución en algunos casos. De hecho, el programa que pareció comportarse mejor fue la aplicación AIR Rich Flv, pero no funciona en lote.

FLYqtFLY
fuente