Ошибка при попытке конвертировать 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