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

0

Bem, foram alguns dias pesquisando uma forma automática ou semi-automática adequada de mesclar arquivos dessa maneira. Basicamente, o que eu quero alcançar é inserir o mesmo clipe, antes de um monte de outros clipes.

Neste caso, tenho tentado com arquivos .flv, .mp4, .avi (sempre mesclando os mesmos codecs) e não obtive êxito após testar todos os programas disponíveis no Windows e OSx. Acredite em mim, eu tentei todos eles. Os únicos que devem lidar bem com essa tarefa são o Videocharge: Watermark Master e Videocharge Studio . Nenhum deles poderia executar corretamente a tarefa. Talvez houvesse alguma maneira que eu poderia ter conseguido isso por scripts com o After Effects ou Sony Vegas , eu simplesmente não encontrei nenhum.

Agora eu estou tentando encontrar alguma maneira de conseguir a mesma coisa tanto por shell, unix scripting ... eu não me importo. Eu só não quero montar o Ubuntu apenas para essas tarefas. Eu não sou um programador, mas eu sou bastante stuborn (o que às vezes me leva a noites sem fim) então eu apreciaria alguma ajuda ou orientação de qualquer um que fosse strong e bom o suficiente em processamento de vídeo em lote ou scripts.

Neste momento, os únicos caminhos úteis que encontrei me levaram a usar mencode ou ffmpeg por meio 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 levando em consideração que a operação seria executada em centenas ou milhares de vídeos, não seria adequado tê-los todos em pastas separadas, cada qual acompanhada do clipe de introdução "exclusivo". Eu acho que a maneira mais lógica seria armazenar os vídeos "agrupados" em uma pasta e o clipe de introdução na mesma pasta que o codificador ou renderizador.

Agradecemos antecipadamente por qualquer ajuda ou orientação,

    
por FLYqtFLY 09.06.2013 / 13:47

2 respostas

0

Bem, eu acrescentei vídeos, mas nunca acrescentei no começo. Você pode usar o avidemux para anexar os vídeos!

Eu não sou bom em javascripting, então, por favor, desculpe-me por não escrever isso para você. Há um tutorial para scripts do 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 tutorial de exemplo no link da página dado aqui: [ ::: link: :: ] e o script simplesmente varrerá 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 do Avidemux são as seguintes: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

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

Mais funções de script aqui: link

o Script Turotial 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 isso ajude ...

fontes:

por 09.06.2013 / 14:29
0

Cheers muito pela sua sugestão @ user2377276. Eu realmente aprecio o esforço. Na verdade, sua solução é a que está me guiando na direção certa. Bem, espero que sim, como ainda não consegui. Até agora, o mais próximo que consegui realizar a mesclagem foi através da variação diferente 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 eu criei C: / TEMP para a saída.

para% a em ("* .flv") do Mencoder -oac copie "c: \ INTRO.flv" "% a" -o "c: \ TEMP \% a"

Todos os vídeos estão no formato FLV1, mas eles têm uma resolução ligeiramente diferente, por isso estou ficando meio ruim, basicamente.

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

Tenho certeza de que isso pode ser feito sem a necessidade de reencodar, já que testei vários programas e nenhum deles está sendo reencodificado, eles estão forçando a resolução em alguns casos. Na verdade, o programa que parecia se comportar melhor era o aplicativo AIR Rich Flv, mas não funciona em lote.

    
por 13.06.2013 / 00:23