1

Я разработал небольшой пакетный скрипт с использованием библиотеки ffmpeg, который может добавить видео-губу при запуске всех видео, содержащихся в папке.

Вот мой сценарий:

@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
)

он отлично работает с видео, имена которого состоят только из цифр или символов, таких как sample.mp4 и video123.mp4
но когда имя видеофайла содержит специальные символы или пробелы (например, видео 2016-17 - английский - gateway (1).mp4), в этой строке отображается ошибка:

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

где main.ts - начальный клип видео, а %% A - имя видео из текстового файла.

Может ли кто-нибудь сказать мне, как я могу выполнить операцию сцепления видео файла, когда имя видео файла содержит специальные символы или пробелы?

1 ответ1

1

Во-первых, отказ от ответственности, прошло много времени с тех пор, как я делал какие-либо сценарии CMD, и у меня нет хоста Windows, чтобы проверить это.

Тем не менее, большинство инструментов командной строки используют пробел для разделения аргументов. Вы можете избежать этого, используя двойные кавычки вокруг каждого использования %% A в вашем скрипте, которые еще не заключены в кавычки, например:

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

станет:

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

Удачи, надеюсь, это действительно поможет.

боб

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .