Comando Bash parando e não fazendo a terceira parte

0

Eu tenho este comando que captura qualquer vídeo em uma pasta, converte em .ts segmentos e cria uma lista de reprodução m3u8 .

Eu preciso concatenciá-los em um arquivo playlist.txt , então é isso que estou fazendo:

cd /var/myfolder && find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 2>&1 > /dev/null \; && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';

O primeiro e o segundo trabalho de comando (cd na pasta e ffmpeg conversion) então o comando && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done'; não está sendo executado.

Eu não entendo porque não está executando o terceiro comando.

    
por Mr.Web 13.08.2018 / 14:56

1 resposta

1

Você não pode usar redirecionamentos de shell em find -exec .

xargs é padronizado para echo ... mas como você já possui cd no diretório, podemos simplificar substancialmente a última linha e nos livrar de xargs e sed .

cd /var/myfolder && 
find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 \; 2>&1 > /dev/null && 
printf 'file %s\n' *.m3u8 > /var/myfolder/playlist.txt &&
echo done
    
por 13.08.2018 / 17:00