Nome do arquivo que inclui caracteres especiais e espaço em branco não executando

1

Desenvolvi um pequeno script em lote usando a biblioteca ffmpeg, que pode adicionar um vídeo no início de todos os vídeos que contêm na pasta

Aqui está o meu script:

@echo off
mkdir append

(for %%i in (*.mp4) do @echo %%i) > append/mymp4list.txt

ffmpeg -i main.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y append/main.ts

for /F "tokens=*" %%A in (append/mymp4list.txt) do (
    echo %%A
    ffmpeg -i %%A -c copy -bsf:v h264_mp4toannexb -f mpegts -y append/%%A.ts
    ffmpeg -i "concat:append/main.ts|append/%%A.ts" -c copy -bsf:a aac_adtstoasc -y append/%%A_output.mp4
)

está funcionando bem com vídeos que possuem nomes com apenas dígitos ou caracteres como sample.mp4 e video123.mp4
mas quando o nome do arquivo de vídeo contém caracteres especiais ou espaço em branco (como 2016-17 video - English - gateway (1) .mp4) ele mostra erro nesta linha:

ffmpeg -i "concat:append/main.ts|append/%%A.ts" -c copy -bsf:a aac_adtstoasc -y append/%%A_output.mp4

onde main.ts está iniciando o clipe do vídeo e %% A é o nome do vídeo do arquivo de texto.

alguém pode me dizer como executar operação de concatenação de arquivo de vídeo quando o nome do arquivo de vídeo contém caracteres especiais ou espaço em branco?

    
por JAGGADAKU 08.05.2017 / 17:59

1 resposta

1

Primeiro, o aviso de isenção de responsabilidade, tem sido um tempo longo desde que eu fiz qualquer script CMD, e eu não tenho um host do Windows disponível para testar isso.

Dito isso, a maioria das ferramentas de linha de comando usa espaço para separar argumentos. Você pode evitar isso usando aspas duplas em torno de cada uso de %% A em seu script, que não são citados, por exemplo:

ffmpeg -i "concat:append/main.ts|append/%%A.ts" -c copy -bsf:a aac_adtstoasc -y append/%%A_output.mp4

se tornaria:

ffmpeg -i "concat:append/main.ts|append/%%A.ts" -c copy -bsf:a aac_adtstoasc -y "append/%%A_output.mp4"

Boa sorte, espero que isso realmente ajude.

Bob

    
por 08.05.2017 / 18:20