Path: csiph.com!usenet.pasdenom.info!gegeweb.org!usenet-fr.net!nerim.net!novso.com!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'output': 0.05; 'dynamically': 0.07; 'referring': 0.07; 'result,': 0.07; 'filename': 0.09; 'input,': 0.09; 'inserts': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'subject:command': 0.09; 'subject:module': 0.09; 'subject:using': 0.09; 'bash,': 0.16; 'concat': 0.16; 'finney': 0.16; 'parentheses': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'subject:python': 0.16; 'wrote:': 0.18; 'file,': 0.19; 'seems': 0.21; 'command': 0.22; 'input': 0.22; 'header:User-Agent:1': 0.23; 'mon,': 0.24; 'header:X-Complaints-To:1': 0.27; 'chris': 0.29; 'dec': 0.30; 'writes:': 0.31; 'file': 0.32; 'option': 0.32; 'actual': 0.34; 'subject:with': 0.35; 'created': 0.35; 'ben': 0.38; 'to:addr :python-list': 0.38; 'pm,': 0.38; 'von': 0.38; 'does': 0.39; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'skip:u 10': 0.60; 'no.': 0.61; 'name': 0.63; 'skip:\xe2 10': 0.65; 'temporary': 0.65; '8bit%:46': 0.78; 'teil': 0.91; '2013': 0.98 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Ben Finney Subject: Re: using ffmpeg command line with python's subprocess module Date: Tue, 03 Dec 2013 08:19:21 +1100 References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Gmane-NNTP-Posting-Host: rasputin.madmonks.org X-Public-Key-ID: 0xAC128405 X-Public-Key-Fingerprint: 517C F14B B2F3 98B0 CB35 4855 B8B2 4C06 AC12 8405 X-Public-Key-URL: http://www.benfinney.id.au/contact/bfinney-gpg.asc X-Post-From: Ben Finney User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) Cancel-Lock: sha1:/as129Sj8e40zF5kG5I3rQ9UiEI= X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 24 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1386019175 news.xs4all.nl 15881 [2001:888:2000:d::a6]:56217 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:60885 Chris Angelico writes: > On Mon, Dec 2, 2013 at 10:34 PM, iMath wrote: > > ffmpeg -f concat -i <(for f in ./*.wav; do echo "file '$f'"; done) -c copy output.wav > > ffmpeg -f concat -i <(printf "file '%s'\n" ./*.wav) -c copy output.wav > > ffmpeg -f concat -i <(find . -name '*.wav' -printf "file '%p'\n") -c copy output.wav > > In bash, the <(...) notation is like piping: it executes the command > inside the parentheses and uses that as standard input to ffmpeg. Not standard input, no. What it does is create a temporary file to contain the result, and inserts that file name on the command line. This is good for programs that require an actual file, not standard input. So the above usage seems right to me: the ‘ffmpeg -i FOO’ option is provided with a filename dynamically created by Bash, referring to a temporary file that contains the output of the subshell. -- \ “Welchen Teil von ‘Gestalt’ verstehen Sie nicht? [What part of | `\ ‘gestalt’ don't you understand?]” —Karsten M. Self | _o__) | Ben Finney