1#!/bin/sh
2# example how to output video on multiple windows in sync.
3# might be even more useful in combination with vo ggi
4# to distribute the video arbitrarily
5
6dir=/tmp/$$
7count=$1
8shift
9
10if test 0"$count" -lt 1; then
11  echo "At least 1 slave instance must be used."
12  echo ""
13  echo "Usage:"
14  echo "./mplmult.sh n mplayer-opts"
15  echo "n              number of MPlayer instances that display the video"
16  echo "mplayer-opts   anything you would specify to mplayer,"
17  echo "               more than one file will usually not work"
18  exit 1
19fi
20
21mkdir -m 700 $dir
22if test $? -ne 0; then
23  echo "Could not create temp dir!"
24  exit 1
25fi
26
27mkfifo $dir/stream.yuv
28i=1
29fifo_list=""
30while test $i -le $count; do
31  fifo_list="$dir/mp$i $fifo_list"
32  i=$(($i+1))
33done
34
35mkfifo $fifo_list
36(cat $dir/stream.yuv | tee $fifo_list > /dev/null ) &
37for fifo in $fifo_list; do
38  # -benchmark is necessary so that it will not do any timing.
39  # the master instance already takes care of it and not specifying
40  # it will break A-V sync.
41  # -demuxer y4m is necessary because otherwise excessive probing
42  # (probably by # the lavf demuxer) causes a long delay.
43  mplayer -nocache -quiet -benchmark -demuxer y4m "$fifo" > /dev/null 2>&1 &
44done
45mplayer -nocache -fixed-vo -vo yuv4mpeg:file=$dir/stream.yuv "$@"
46
47rm -rf $dir
48