
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.