-
Notifications
You must be signed in to change notification settings - Fork 628
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature para renderizar videos com o Node sem precisar do After Effects #152
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ai sim, ficou ótimo!
Só ficou faltando colocar pra retornar uma Promise na sua função renderVideoWithNode com resolve() assim que terminar a renderização, pra conseguir fazer a função ficar assíncrona, se não, vai começar a subir o vídeo antes mesmo do vídeo existir kk
assim ó:
async function renderVideoWithNode(content) {
return new Promise((resolve, reject) => {
console.log("> Renderizando vídeo com node.");
let images = [];
for (
let sentenceIndex = 0;
sentenceIndex < content.sentences.length;
sentenceIndex++
) {
images.push({
path: `./content/${sentenceIndex}-converted.png`,
caption: content.sentences[sentenceIndex].text
});
}
const videoOptions = {
fps: 25,
loop: 5, // seconds
transition: true,
transitionDuration: 1, // seconds
videoBitrate: 1024,
videoCodec: "libx264",
size: "640x?",
audioBitrate: "128k",
audioChannels: 2,
format: "mp4",
pixelFormat: "yuv420p",
useSubRipSubtitles: false, // Use ASS/SSA subtitles instead
subtitleStyle: {
Fontname: "Verdana",
Fontsize: "26",
PrimaryColour: "11861244",
SecondaryColour: "11861244",
TertiaryColour: "11861244",
BackColour: "-2147483640",
Bold: "2",
Italic: "0",
BorderStyle: "2",
Outline: "2",
Shadow: "3",
Alignment: "1", // left, middle, right
MarginL: "40",
MarginR: "60",
MarginV: "40"
}
};
videoshow(images, videoOptions)
.audio("./templates/1/newsroom.mp3")
.save("content/output.mp4")
.on("start", function(command) {
console.log("> Processo ffmpeg iniciado:", command);
})
.on("error", function(err, stdout, stderr) {
console.error("Error:", err);
console.error("> ffmpeg stderr:", stderr);
reject(err);
})
.on("end", function(output) {
console.error("> Video criado:", output);
resolve();
});
});
}
Boa! |
So mais uma dica no windows deu um erro filepath = filepath.replace(/\/g, "\\"); return filepath |
Oi @felvieira ,,, boa ideia. Porem o node tem reclamado ( no OSX ) em nao encontrar o modulo videoshow ... alguma ideia ? Ahh, so vi depois que precisa instalar o modulo: |
Sim acredito que ele ja esta como dependencia no package.json desse PR. Ai com npm i ele instala td |
Oi @felvieira fiz as mudanças mas ao tentar rodar deu esse erro: $ node index.js SyntaxError: Invalid or unexpected token Obs. Primeiro coloquei os dados exatamente como vc escreveu, mas como deu erro, decidi "trocar" o número da versão para o qual já tinha na máquina...porém como não conheço o funcionamento e instalação do ffmpeg (apenas havia baixado - 4.1.1) não sei se precisava colocar a versão que tenho ou se podia deixar aquela mesmo....de qualquer forma não deu certo. $ npm install audited 913 packages in 64.445s Esse teste estou fazendo em um note com 32 bit e como a versão que eu tenho do AF4 não permite usar o template do Felipe, estou buscando outra forma...mas será que ffmpeg ajuda nesse caso? Sabe dizer que erro é esse? |
Tem mias uma aspas no center. mude para: gravity: "center" |
@felvieira Obrigada, arrumei esse erro e outros mais que surgiram e consegui fazer rodar um pouco, só que parou nesse erro abaixo...tentei resolver mas até agora nada...sabe dizer oq tenho q alterar? Image successfully downloaded: https://lh3.googleusercont
|
|
em outras palavras, você precisa adicionar o GraphicsMagick no path do windows this most likely means the gm/convert binaries can't be found algo mais ou menos assim: set PATH=%PATH%;caminho\para\o\GraphicsMagick\bin Ps. se tiver a pasta tem duas formas de fazer isso no windows e elas são explicadas aqui |
Oi @hebertlima obrigada pela atenção em responder. No dia até tentei, mas só muda o código do erro e não vai. Somente agora pude tentar novamente...só que ao editar o "Path" e apagar um "caminho" que já consta lá - Do Node, o comando node index.js para de funcionar...aí tenho que adicionar novamente e antes de adicionar o "caminho" do Graphics adiciono ";" sem aspas e acho que o problema esta ocorrendo nessa mudança que não estou sabendo fazer. Obs. na pasta do Graphics não tem Bin, aí tentei C:\Program Files\GraphicsMagick-1.3.31-Q8 e \ algumas pastas mas também não vai. Estou bem perdida nessa, se puder me dar uma dica ou informar onde estou errando....Abaixo segue o ultimo erro:
|
@C-Miriane faz assim então, remove o image magick do projeto: npm uninstall gm talvez seja pq o gm não foi instalado de forma global, reinstala novamente assim: npm install -g gm depois vai nas variaveis de ambiente e aponta para
|
Valeu!!! @felvieira e @leleuvilela pela Feature para renderizar videos com o Node sem precisar do After Effects, no Linux se tornaria inviável continuar o projeto de modo contínuo usando After Effects mesmo com Wine, estava tentando utilizar o Kdenlive que fornece um script do template para renderização, mas dessa forma ficou mais prático e funcionou de primeira, muito grato! Quanto as dependências, instalei todas com sudo mesmo com alguns avisos funcionaram.
|
Boa, Assim nao ficamos presos a um Software pago. |
Error: Error: ffmpeg exited with code 1: Error reinitializing filters!
ffmpeg stderr: undefined |
…ar_linux Feature/rodar linux
Usar no linux
Olá felvieira! Tudo bem? |
Entao mas o tempalte pro video que ele criou é do After, e essa solucao é pra nao ser do After pq o After é pago. |
mas é possivel "converter" isso? as ferramentas que você usou tem capacidade para isso?? |
COnverter template do after pra software livre? Dificil. |
E aí pessoal, não tem um melhor que o vídeoshow? Conheço um em python (moviepy) mas seria foda ficar com duas linguagens para esse projeto... |
Como nem todos temos acesso ao After Effects procurei uma alternativa viável. Não tem todo poder de personalização do AE mas acredito que vai ser bem usável. Fiz rapidamente , melhorias e sugestões são sempre bem vindas.