Linus писал(а):В том то и дело, выхлоп есть.  Экспериментировал с тем же кодом: так же пусто и на mediaifo... а вот на evtest, ls, uname  - в потоке уже есть данные.... что не так с нужными мне утилитами?
Проблему подтверждаю. Правда у меня не ffmpeg, а avconv, но там та же проблема присутствует.
Такая команда:
- Код: Выделить всё
- avconv -i aaa.png
выхлоп в консоли даёт, а в мемо пусто.
На mediainfo у меня всё ок. Выдало в мемо всю информацию о файле как надо. Делал так:
- Код: Выделить всё
-   AProcess := TProcess.Create(nil);
 AProcess.Executable := 'mediainfo';
 AProcess.Parameters.Add('-f');
 AProcess.Parameters.Add(fname);
 AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
 AProcess.Execute;
 memo1.Lines.LoadFromStream(AProcess.Output);
 AProcess.Free;
 
Добавлено спустя 6 минут 24 секунды:Дошло. AProcess читает стандартный поток, а этот выхлоп, как я понял, в потоке ошибок, т.е., если ты выполнишь эту команду в терминале и сделаешь так:
- Код: Выделить всё
- avconv -i aaa.png > t.txt
то файл t.txt будет пустой.
Только так или так можно получить инфу в файл:
avconv -i aaa.png 2> t.txt
avconv -i aaa.png &> t.txt
Вот так всё работает:
- Код: Выделить всё
-   AProcess := TProcess.Create(nil);
 AProcess.Executable := 'avconv';
 AProcess.Parameters.Add('-i');
 AProcess.Parameters.Add(fname);
 AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
 AProcess.Execute;
 memo1.Lines.LoadFromStream(AProcess.Output);
 memo2.Lines.LoadFromStream(AProcess.Stderr);
 AProcess.Free;