Я хочу, чтобы mplayer и VLC начинали играть в точное время. Плеер должен:
- Загрузите видеофайл, буферизуйте его, подготовьте все необходимое;
- Подождите, пока время UNIX составит N секунд M миллисекунд
- Начните играть в соответствии с частотой кадров (без долгосрочных отклонений)
Как лучше всего этого добиться?
решение1
Вы можете использовать FIFO в качестве входных данных в MPlayer и начать воспроизведение в указанное время.
Я скопировал и вставил несколько минимальных примеров кода, которые я использовал в скрипте много лет назад, и которые применялись для пропуска видео по причинам, связанным со скриптингом.
Создайте FIFO:
[ ! -p /tmp/mplayer-fifo ] && mkfifo /tmp/mplayer-fifo
Запустите MPlayer, например,
mplayer myfile.avi -input /tmp/mplayer-fifo
Отправьте команду пропуска из другого скрипта с помощью
echo "seek 10" > /tmp/mplayer-fifo
Вместо этого вы можете использовать FIFO для запуска и приостановки видео. Используйте at
для запуска команды воспроизведения в определенное время.
Если видео запускается, а затем сразу же останавливается и просто ждет директивы "play"
, то следует избегать любой буферизации.