Como inserir em lote a mesma cena de clipe no início de vários vídeos?

Como inserir em lote a mesma cena de clipe no início de vários vídeos?

Bem, já faz alguns dias pesquisando uma forma automática ou semiautomática adequada de mesclar arquivos em massa dessa maneira. Basicamente, o que eu quero conseguir é inserir o mesmo clipe, antes de vários outros clipes.

Neste caso tenho tentado com arquivos .flv, .mp4, .avi (sempre mesclando os mesmos codecs), e não obtive sucesso após testartodos os programas disponíveisno Windows e no OSx. Acredite, eu tentei todos eles. Os únicos que deveriam lidar muito bem com essas tarefas são do Videocharge:Mestre de marca d'águaeEstúdio de videocarga. Nenhum deles conseguiu executar corretamente a tarefa. Talvez houvesse alguma maneira de conseguir isso criando scripts comDepois dos efeitosouSony Vegas, simplesmente não encontrei nenhum.

Agora estou tentando encontrar uma maneira de conseguir a mesma coisa por meio de shell, scripts unix... Não me importo. Só não quero montar o Ubuntu apenas para essas tarefas. Não sou um programador, mas sou bastante teimoso (o que às vezes me leva a noites sem fim), então gostaria de receber ajuda ou orientação de qualquer pessoa interessada e boa o suficiente em processamento ou script de vídeo em lote.

No momento, os únicos caminhos úteis que encontrei me levam a usarmencodeouffmpegatravés de comandos, mas não consigo realizar a mesclagem em lote. Eu não me importo com a maneira de classificar os vídeos. Mas tendo em conta que a operação seria realizada em centenas ou milhares de vídeos, não seria adequado tê-los todos em pastas separadas, cada um acompanhado pelo clipe de introdução "único". Acho que a maneira mais lógica seria armazenar o "grupo" de vídeos em uma pasta e o clipe de introdução na mesma pasta do codificador ou renderizador.

Agradecemos antecipadamente por qualquer ajuda ou orientação,

Responder1

Bem, anexei vídeos, mas nunca anexei no início. Você pode usar o avidemux para anexar os vídeos!

Não sou bom em javascript, então, desculpe-me por não ter escrito isso para você. Há um tutorial de script para Avidemux. Avidemux é um conversor de vídeo gratuito e de código aberto. Você pode adicionar efeitos ao seu áudio/vídeo no avidemux e salvá-lo em vários formatos.

Este script é um exemplo de tutorial no link da página fornecido aqui: [::: link :::] e o script irá simplesmente verificar o diretório orgDir e descompactar todos os arquivos AVI. O arquivo resultante é colocado no diretório destDir (usando a nova API directorySearch).

As funções Avidemux são as seguintes: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

e mais funções: carregar, anexar, salvar, salvarDVD, salvarOGM, clearSegments, addSegment, goToTime, forceUnpack, setContainer

Mais funções de script aqui:http://www.avidemux.org/admWiki/doku.php?id=using:scripting#avidemux_functions

o Turotial Script que converte o arquivo avi é o seguinte:

//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 isto ajude...

fontes:

Responder2

Felicidades pela sua sugestão @user2377276. Eu realmente aprecio o esforço. Na verdade, sua solução alternativa é a que está me guiando na direção certa. Bem, espero que sim, pois ainda não tive sucesso. Até agora, o mais próximo que consegui da fusão foi através de diferentes variações do código a seguir, executado no mesmo diretório dos vários vídeos diferentes. O arquivo exclusivo a ser anexado foi colocado na raiz e criei C:/TEMP para a saída.

para %a in ("*.flv") faça Mencoder -oac copy "c:\INTRO.flv" "%a" -o "c:\TEMP\%a"

Todos os vídeos estão em FLV1, mas eles têm resolução um pouco diferente, então estou basicamente entendendo uma porcaria.

Não sei se devo tentar com o ffmpeg. Sugestões?

Tenho certeza que isso pode ser conseguido sem a necessidade de recodificação, pois testei vários programas e nenhum deles está recodificando, apenas estão forçando a resolução em alguns casos. Na verdade, o programa que pareceu se comportar melhor foi o aplicativo AIR Rich Flv, mas não funciona em lote.

informação relacionada