FFMPEG - Não é possível analisar o arquivo de várias linhas


0

Estou tentando analisar linhas FFmpeg de arquivos de saída. Estou tentando criar um var que leia a linha uma por uma, mas toda vez que faço isso me dá o seguinte "[NULL @ 0x7fa9cb000000] Não é possível encontrar um formato de saída adequado para '': argumento inválido"

#!/bin/bash
origfolderdirectory=${PWD} # This is the original folder directory path.
origfoldername=${PWD##*/} # This is the original folder name.

# This creates a temp folder where all the temporary files will stay.
mkdir -p Temp 

# This grabs a list of all .mp4 files and puts the output into files.txt
find . -name "*.mp4" >> ./Temp/files.txt 

cd Temp

# This removes the dots from the start of every line in files.txt and outputs fileswithoutdot.txt
cat files.txt | sed 's/^..//' > fileswithoutdot.txt 

# This adds the original folder name to the start of each line in fileswithoutdot.txt and outputs to prefixfiles.txt
cat fileswithoutdot.txt | sed -e "s#^#$origfolderdirectory#g" > prefixfiles.txt 

# This adds ../Encoded. to the start of every line in prefixfiles.txt and outputs to prefixedfiles.txt
cat prefixfiles.txt | sed -e "s#$origfoldername#Encoded./$origfoldername./#" > prefixedfiles.txt 

# Reads out prefixedfiles.txt for FFMPEG.
OUTPUT="$(cat prefixedfiles.txt)"

# Backs out of Temp folder
cd ../ 

# Copies folder structure of $origfoldername to ../Encoded.
find . -type d -exec mkdir -p -- ../Encoded./$origfoldername{} \; 

# Removes temp folder from ../Encoded
rm -r ../Encoded./$origfoldername./Temp

# Do Encode
find . -name *.mp4 -exec ffmpeg -i {} -vcodec libx264 -acodec copy -threads 10 -crf 18 "${OUTPUT}" \;

Exemplo para prefixedfiles.txt

Test/test.mp4
Test/More Testing/test2.mp4

Qual é a sua intenção real? O que você espera se findencontrar mais de dois arquivos? Até onde eu sei, findpoderia fornecer os resultados em ordem aleatória. Como você esperaria saber qual arquivo de origem é recodificado em qual arquivo de destino? OUTPUTdeve ser apenas o conteúdo do arquivo de texto (você provavelmente pode apenas executar cat prefixedfiles.txt). O que você espera que o ffmpeg faça com essa entrada?
Seth

Ambos estão usando o mesmo comando, parece que eles produzem o mesmo. Assim como o que eu espero com o FFmpeg, eu também esperaria que ele usasse o arquivo de texto linha por linha para cada operação.
Ninsto 19/04

Eu deixei de fora o restante do script porque achava irrelevante, mas o script repete a operação para cada arquivo.
Ninsto 19/04

Nesse caso, inclua o restante. Como é o seu script, realmente não faz sentido. Ao executar o ffmpeg dentro do loop, faria um pouco de sentido, mas você substituiria o mesmo arquivo repetidamente. se você olhar para a documentação, poderá estar na direção certa, mas espero que você não possa ter uma quebra de linha no argumento de saída.
Seth

Acabei de adicionar o script inteiro.
Ninsto 19/04
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.