Ошибка при попытке конвертировать mp3 (и изображение) в mp4 с помощью ffmpeg SPACES IN NAME

Я нашел, как конвертировать MP3 в MP4, используя код ниже в пакетном файле:

for %%f in (*.mp3) do ffmpeg -i %%f -loop 1 -i image.jpg -c:a copy -c:v libx264 -shortest %%~nf.mp4

Он работает нормально, если в FILENAME есть пробелы: FILENAME.mp3 работает нормально, но FILE NAME.mp3 выдает ошибку "Нет такого файла или каталога".

Я пытался вставить "delims=" до и после %%f, но он продолжает говорить, что это неожиданно. Есть идеи?

Благодарю.

2 ответа

Решение
for %%f in (*.mp3) do ffmpeg -i "%%f" -loop 1 -i image.jpg -c:a copy -c:v libx264 -shortest "%%~nf.mp4"

В общем "quote filenames that may contain spaces"

"delims=" может использоваться только с for /f как в

for /f "delims=" %%f in (...

Где морская свинья for в первую очередь для чтения строк из файлов.

использование 'dir /b /a-d filemask' - включая цитаты для предоставления for /f со списком имен файлов для обработки. /b означает "базовая форма" (только имена) и /a-d означает "нет каталогов".

Если ваши имена файлов содержат разделители, такие как пробелы, используйте `"delims=", в противном случае неявный"tokens=1"будет усекать значение, примененное к первому разделителю.

Спасибо всем за вашу помощь, цитаты, что сделали свое дело.

Я изменил это:

for %%f in (*.mp3) do ffmpeg -i %%f -loop 1 -i image.jpg -c:a copy -c:v libx264 -shortest %%~nf.mp4

К этому:

for %%f in ("*.mp3") do ffmpeg -i "%%f" -loop 1 -i image.jpg -c:a copy -c:v libx264 -flags global_header -pix_fmt yuv420p -shortest "%%~nf.mp4"

К вашему сведению: были добавлены дополнительные переключатели, но они не имели ничего общего с пробелами, вызывающими проблемы:

-flags global_header -pix_fmt yuv420p
Другие вопросы по тегам