LINUX.ORG.RU

[не понял] mplayer


0

0

Собственно скрипт:
---------------------------------------------------------
#!/bin/bash
#
# Переменная файла записи. Файл создаётся в каталоге откуда будет вызван данный скрипт. При необходимости можно конкретно указать в переменной путь, куда должен записываться файл
file=Запись-$(date +%d-%m-%Y-%H-%A-%H:%M:%S).avi

# Запись
sleep 1 # Проверка отсутствия
if [ -s `pidof mencoder mplayer tvtime` ]; # запущенных программ, которые могут использовать тв-тюнер (а то потом его не отпустит до перезагрузки)
then
mencoder tv:// -noskip -tv driver=v4l2:norm=secam -o «$file» -ovc lavc -lavcopts vcodec=mjpeg:aspect=4/3 -vf pp=lb -oac mp3lame -lameopts cbr:preset=128:mode=1 &
fi

# Окно mplayer для просмотра записываемого файла (с указанным запаздыванием), его можно закрыть если в нём нет необходимости, запись не прекратится.
sleep 1
mplayer «$file» &

# Диалог прекращения записи mplayer
zenity --info --title «Запись ТВ» --text «Идёт запись.
Нажмите "ОК" для её окончания.»

# Переменная идентификатора процесса программы записи для его последующего завершения
mypid=`pidof -s mencoder`

# Завершение процесса
kill -9 «$mypid»
----------------------------------------------------------

Полученный файл не воспринимается avidemux (когда в нём его открываю):

Ошибка при открытии Запись-16-08-2010-11-Понедельник-11:59:38.avi!
Невозможно открыть файл.

Но, если захватить менкодером и одновременно не выводить на просмотр (к примеру закомментировать/убрать «&» в конце строки mencoder'а), то всё нормально.

Почему это?

Файлы само собой одинаковые получаются, что с «синхронным» просмотром, что без него.

★★★★★

Последнее исправление: amorpher (всего исправлений: 1)

Ответ на: комментарий от megabaks

>kill -9 «$mypid»
бл^W[censored]!!!

И чо такого?
Ви по вопросу могёте чего сказать?

amorpher ★★★★★
() автор топика
Ответ на: комментарий от xcreatepixmap

>kill -s SIGTERM «${mypid}»

Вот ведь... И точно, всё работает.
Объясните, кто знает, пожалуйста подробней почему после kill -9 нет.

amorpher ★★★★★
() автор топика
Ответ на: комментарий от madgnu

«Нормально» это как?
sigkill не гарантировано? Процессы смотрел - не было в обоих случаях менкодеров.

amorpher ★★★★★
() автор топика
Ответ на: комментарий от amorpher

нормально — это штатное завершение процесса. в случае mencoder'а, он, возможно, что-то при этом дописывает в файл. а sigkill просто прибивает процесс без разбирательств. как-то так.

madgnu ★★★★★
()
Ответ на: комментарий от amorpher

А, или авидемукс считает после -9 файл за коцанный? Хотя в тотеме показывают оба вида.

amorpher ★★★★★
() автор топика
Ответ на: комментарий от madgnu

Да, походу так и есть. Не знал, что авидемукс абышто не глотает :)

Всем спасибо!

amorpher ★★★★★
() автор топика
Ответ на: комментарий от madgnu

Скорее всего менкодер файл не успевает корректно закрыть когда его килл9 по башке. По миниатюре файла даже видно - мазня. При сигтерм на миниатюрке нормальная картинка.

amorpher ★★★★★
() автор топика
Ответ на: комментарий от amorpher

>Объясните, кто знает, пожалуйста подробней почему после kill -9 нет.

SIGKILL не обрабатывается процессом. Память, занимаемая им, принудительно освобождается, за исключением разделяемой. Контейнер, видео и аудио потоки в этом случае неконсистентны.

aidaho ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.