I'm developing a program in Python that requires the use of FFMPEG. In one step, I need to create a video from a text file containing the list of images (path and duration) that need to be assembled to make a video. To do this, I use the following code:
cmd = [ffmpeg, "-y", "-f", "concat", "-safe", "0", "-i", tmp, "-c:v", "libx264", "-r", "25", "-pix_fmt", "yuv420p", out]
subprocess.run(cmd)
# os.system(" ".join(cmd)) # returns same error
What returns the error: The syntax of the file, directory or volume name is incorrect.
I know that paths can be problematic when they contain spaces, and as my username has one, I've taken care to quote the paths in such a way that :
ffmpeg = '"C:\Users\John Doe\Documents\ffmpeg\bin\ffmpeg.exe"'
tmp = '"C:\Users\John Doe\Desktop\path\to\file.txt"'
out = '"C:\Users\John Doe\Desktop\path\to\video.mp4"'
When I print(" ".join(cmd))
, this is what I get in my terminal:
"C:\Users\John Doe\Documentsffmpeg\binffmpeg.exe" -y -f concat -safe 0 -i "C:\Users\John Doe\Desktop\path\to\file.txt" -c:v libx264 -r 25 -pix_fmt yuv420p "C:\Users\John Doe\Desktop\path\to\video.mp4"
However, the problem persists. Has anyone ever had this problem and managed to solve it?
I've also tried the method where you have to escape the spaces (taking care to replace the \
with /
and then the
with \
) but nothing works... The error persists.
For your information, here are the contents of one of my .txt files
file C:\Users\John Doe\Desktop\path\to\image_1.png
duration 0.04
file C:\Users\John Doe\Desktop\path\to\image_2.png
duration 0.04
file C:\Users\John Doe\Desktop\path\toimage_3.png
duration 0.04
When I quote the paths in the .txt files
- subprocess gives me the error:
PermissionError: [WinError 5] Access denied
- os.system gives me the error:
C:\Users\John' is not recognized as an internal or external command, an executable program or a command file.
The syntax of the file, directory or volume name is incorrect.