Mark, I get the impression that you are not hearing what people in this
thread are trying to tell you.
On 2025-07-28 14:05, Mark Filipak wrote:
FFmpeg is clearly entering a command mode even though I'm not submitting
any options that support command mode.
FFmpeg listens to stdin and accepts commands all. the. time., unless you
tell it not to by giving the `-nostdin` option.
Here is some more information about that behaviour.
1. In the FFmpeg transcripts you posted, FFmpeg prints, "Press [q] to
stop, [?] for help". That is FFmpeg telling you that it is accepting
commands from stdin.
2. To find out more about those commands, press [?] while FFmpeg is
running. You will probably get a printout like:
key function
? show this help
+ increase verbosity
- decrease verbosity
c Send command to first matching filter supporting it
C Send/Queue command to all matching filters
h dump packets/hex press to cycle through the 3 states
q quit
s Show QP histogram
(For those who like to read source code, the relevant function is
`check_keyboard_interaction()` at fftools/ffmpeg.c:805-867
<https://github.com/FFmpeg/FFmpeg/blob/7c5319e6924fd82772eff890df191f973767d38e/fftools/ffmpeg.c#L805C1-L867C2>.)
3. note that "c" is one of those FFmpeg commands, and that your code
includes "c":
...[elided]...
The command is:
ffmpeg -y -safe 0 -i "c:\concat.txt" "c:\concat.ac3"
echo this is foo>c:\FOO.TXT
The thing that's bothering me so much is that while it's doing the
concatenation, FFmpeg signals:
Enter command: <target>|all <time>|-1 <command>[ <argument>]
Parse error, at least 3 arguments were expected, only 1 given in string
'ho this is foo>c:\FOO.TXT'
This is consistent with something feeding "echo this is foo>c:\FOO.TXT"
to FFmpeg's stdin, FFmpeg ignoring the 'e' as unrecognised, accepting
the 'c' as "Send command to first matching filter supporting it", FFmpeg
printing an "Enter command:" prompt, then attempting and failing to
parse "ho this is foo>c:\FOO.TXT" as a command.
And, the Windows Command Prompt appears to be sloppy about how it
handles stdin.
On 2025-07-27 23:57, Ferdi Scholten wrote:
> The issue here is Windows and how it handles batch scripts, and the
issue goes back to its roots in DOS.
>
> The batch script is literally read into stdin (as a whole) and
executed from there. Just like if you are typing every single line of
the script on a command prompt. (which was exactly what batch processing
was designed for in DOS)
>
> So yes running a program like FFmpeg that accepts commands from stdin
while running will eat your remaining batch script as input.
>
> Unless... You invoke that program from the .bat with the START
command, which will cause the program to run in a new session and does
not use the stdin from the previous session where it was started from.
>
> or use something more modern for scripting on Windows like Powershell
to overcome the stdin issue.
> or use the suggestion from Jim with the -nostdin option
So, do you hear us when we tell you that FFmpeg by default accepts
commands on stdin while running?
Do you hear us when we tell you that the `-nostdin` option is the way to
tell FFmpeg not to do that?
Do you hear us when we tell you that the Windows command prompt maybe be
what feeds the Echo command to FFmpeg's stdin? And that this may just be
a limitation of how the Windows command prompt works?
Best regards,
—Jim DeLaHunt
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".