Перенаправление результата в текстовый файл [РЕШЕНО]

Автор A_STAS, 28 сентября 2012, 19:24:19

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

A_STAS

Не получается перенаправить результат вывода в терминале в файл doc.txt.
Кто сталкивался с такой проблемой, подскажите, что не так.

#!/bin/sh
gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi'; $SHELL" | tee "/home/user/doc.txt"; exit

redVi

Можете попробовать команду script.
$ script file.txt
И пишем, что душе угодно. Когда закончили, командуем:
$ exit
Смотрим свой вывод в файле file.txt
Debian Sid, Openbox || Gentoo, Openbox

Angel_ok

Попробуйте вместо tee использовать >

#!/bin/sh
gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi'; $SHELL" > "/home/user/doc.txt"; exit
Вы думаете, всё так просто? Да, всё просто. Но совсем не так...
                                                                                                          Альберт Эйнштейн

A_STAS

Цитата: Angel_ok от 29 сентября 2012, 09:52:49Попробуйте вместо tee использовать >
Пробовал. Не получается. Создается пустой файл doc.txt

вот так работает:
gnome-terminal -x bash -c "ls -la | tee '/home/user/doc.txt'; $SHELL"; exit

вот так, нет:
gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi' | tee '/home/user/doc.txt'; $SHELL"; exit
Создает пустой файл doc.txt, а в терминал все выводится как надо.

По логике должно работать!?

Alexey_F

Ой-вей... Всё просто.

Всё работает как надо, только вот перенаправление настроено неправильно: дело в том, что ffmpeg выводит информацию в stderr, а перенаправляется stdout. Т.е. нужно либо использовать конструкцию вида
$ ffmpeg -i era\ voxifera\ \(High\).flv 2>/path/to/file
или
$ ffmpeg -i era\ voxifera\ \(High\).flv &>/path/to/file
либо, если всё же нужен вывод в терминал:
$ ffmpeg -i Софт\ \(Low\).flv 2>&1 | tee /path/to/file

Гайд по теме: тык.

A_STAS

Цитата: Alexey_F от 29 сентября 2012, 23:31:23либо, если всё же нужен вывод в терминал:
Все получилось как надо!

gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi' 2>&1 | tee '/home/user/doc.txt'; $SHELL"; exit
Спасибо.

Alexey_F может знаешь как вытащить в переменную только размер видео из самого видеофайла, так как это делает ffmpeg?

Malaheenee

Все мы где-то, когда-то и в чем-то были новичками.

A_STAS

#7
Malaheenee
Цитата: Malaheenee от 01 октября 2012, 09:54:03только вывод парсить, grep, sed или awk.
Я так и делаю, но получается лажа.
Stream #0.0: Video: mpeg4, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 15 tbr, 15 tbn, 15 tbc
Вырезаю Stream #0.0: Video:  вместе с пробелом после Video:
Потом поиск до запятой. Вроде все ОК! получаю mpeg4, но бывает вот так:
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [PAR 1:1 DAR 5:4], 9000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
и попадает  (Main) вместе с пробелом!

Это я вытаскиваю кодек, а с размерами все ОК! Получилось.