Popen to get stdout and stderr for ffmpeg - No such file or directory ?


G

goldtech

Hi,

Trying to learn how to run a linux command and get the stdout and
stderr. I'm trying the following:

Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
p = Popen(cmd3, stdout=PIPE, stderr=PIPE)
File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1141, in
_execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

But:
print "exist"

exist
And just running ffmpeg alone seems as expected:
'Hyper fast Audio and Video encoder\nusage: ffmpeg [options] [[infile
options] -i infile]... {[outfile options] outfile}...\n\n'"FFmpeg version git-N-29152-g0ba8485, Copyright (c) 2000-2011 the
FFmpeg developers\n built on Apr 16 2011 16:40:56 with gcc 4.4.5\n
configuration: --enable-gpl ...snip...

Also if I run the exact command (cmd3) in the terminal it works OK.
Why is it not finding the file? Thanks, help appreciated.
 
Ad

Advertisements

C

Chris Rebert

Hi,

Trying to learn how to run a linux command and get the stdout and
stderr. I'm trying the following:

Traceback (most recent call last):
 File "<pyshell#73>", line 1, in <module>
   p = Popen(cmd3, stdout=PIPE, stderr=PIPE)
 File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
   errread, errwrite)
 File "/usr/lib/python2.6/subprocess.py", line 1141, in
_execute_child
   raise child_exception
OSError: [Errno 2] No such file or directory

But:
       print "exist"
Also if I run the exact command (cmd3) in the terminal it works OK.
Why is it not finding the file? Thanks, help appreciated.

Read The Fine Manual:
http://docs.python.org/library/subprocess.html#subprocess.Popen :
"On Unix, with shell=False (default): [...] If a string is specified
for args, it will be used as the name or path of the program to
execute; ***this will only work if the program is being given no
arguments.***" (emphasis added)

The system is interpreting the entire command string as the path to an
executable; obviously there's no directory named "ffmpeg -i ", so the
path is invalid, hence the error.

Try instead:
cmd3 = ['ffmpeg', '-i', '/home/giga/Desktop/Guitar1.flv']

Cheers,
Chris
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top