История изменений
Исправление Kroz, (текущая версия) :
Ты ничего не понял
Все я понял. Я просто дал тебе направление, предоставляя конкрентую идею тебе.
Ладно, вот пару вариантов:
Вариант 1. Делаешь плейлист из двух треков: track и track-record. Скармливаешь плейлист SMplayer'у. Вместо mplayer подсовываешь свой скрипт-обертку. Скрипт-обертка парсит имя трека. Если вконце есть "-record" делает mplayer через tee (ну, и обрезает этот суффикс); если нет - прозрачно транслирует все параметры в mplayer. Переключение режимов записи - это переключение треков в SMplayer.
Вариант 2. Если ты программишь, то должен догадываться, что tee - примитивнейшая программа. И, в первом приближении, ее написать на C/C++ - минут 5. Но ты можешь добавить функционал, что она имеет 2 режима: зеркалит поток или нет. Переключение - варианты ограничены только фантазией: по сигналу процессу (с помощью kill -HUP ), слушает TCP порт (тогда нужна программа-клиент), мониторит наличие файла (можно периодически опросом или с помощью libinotify)? да хоть сделай ее GUI'шной - одно окно с кнопкой «Запись»! Все! Скармливай комбинацию | tee | mplayer SMplayer'у и будет тебе счастье. P. S. Думаю в tee есть свои ньюансы (например с размером буффера), так что можешь посмореть исходники tee - мы ведь в OpenSource мире.
Еще варианты можешь сам придумать.
В любом случае это намного проще чем писать плеер с нуля.
Исправление Kroz, :
Ты ничего не понял
Все я понял. Я просто дал тебе направление, предоставляя конкрентую идею тебе.
Ладно, вот пару вариантов:
Вариант 1. Делаешь плейлист из двух треков: track и track-record. Скармливаешь плейлист SMplayer'у. Вместо mplayer подсовываешь свой скрипт-обертку. Скрипт-обертка парсит имя трека. Если вконце есть "-record" делает mplayer через tee (ну, и обрезает этот суффикс); если нет - прозрачно транслирует все параметры в mplayer. Переключение режимов записи - это переключение треков в SMplayer.
Вариант 2. Если ты программишь, то должен догадываться, что tee - примитивнейшая программа. И, в первом приближении, ее написать на C/C++ - минут 5. Но ты можешь добавить функционал, что она имеет 2 режима: зеркалит поток или нет. Переключение - варианты ограничены только фантазией: по сигналу процессу (с помощью kill -HUP ), слушает TCP порт (тогда нужна программа-клиент), мониторит наличие файла (можно периодически опросом или с помощью libinotify)? да хоть сделай ее GUI'шной - одно окно с кнопкой «Запись»! Все! P. S. Думаю в tee есть свои ньюансы (например с размером буффера), так что можешь посмореть исходники tee - мы ведь в OpenSource мире.
Еще варианты можешь сам придумать.
В любом случае это намного проще чем писать плеер с нуля.
Исходная версия Kroz, :
Ты ничего не понял
Все я понял. Я просто дал тебе направление, предоставляя конкрентую идею тебе.
Ладно, вот пару вариантов:
Вариант 1. Делаешь плейлист из двух треков: track и track-record. Скармливаешь плейлист SMplayer'у. Вместо mplayer подсовываешь свой скрипт-обертку. Скрипт-обертка парсит имя трека. Если вконце есть "-record" делает mplayer через tee (ну, и обрезает этот суффикс); если нет - прозрачно транслирует все параметры в mplayer. Переключение режимов записи - это переключение треков в SMplayer.
Вариант 2. Если ты программишь, то должен догадываться, что tee - примитивнейшая программа. И, в первом приближении, ее написать на C/C++ - минут 5. Но ты можешь добавить функционал, что она имеет 2 режима: зеркалит поток или нет. Переключение - варианты ограничены только фантазией: по сигналу процессу (с помощью kill -HUP ), слушает TCP порт (тогда нужна программа-клиент), мониторит наличие файла (можно периодически опросом или с помощью lbinofify)? да хоть сделай ее GUI'шной - одно окно с кнопкой «Запись»! Все! P. S. Думаю в tee есть свои ньюансы (например с размером буффера), так что можешь посмореть исходники tee - мы ведь в OpenSource мире.
Еще варианты можешь сам придумать.
В любом случае это намного проще чем писать плеер с нуля.