Как синхронизировать два цикла видео с mplayer и upd?

Я пытаюсь синхронизировать два экземпляра mplayer с -upd-master и –udp-slave и заметить, что ведомое устройство занимает около секунды, когда мастер начинает цикл заново.

Я запускаю debian 7.1 с MPlayer SVN-r36545, и вот мои команды для двух видеороликов, работающих на том же SSD-устройстве i8 8GBram 240GB (действующем как сервер dhcp):

mplayer -vo xv -udp-master -udp-ip 10.42.0.255 -loop 0 Videos/HDV_0537.MP4 mplayer -vo xv -udp-slave -loop 0 Videos/HDV_0538.MP4 

  • Как создать фильм из нескольких .bmp-файлов под Linux?
  • Какой редактор файлов субтитров для файлов .srt поддерживает синхронизацию?
  • Почему в браузере Chrome ужасно опасно поведение буферизации / загрузки YouTube?
  • Как использовать эффект медленного движения в определенный интервал времени с помощью ffmpeg
  • Программное обеспечение для редактирования видео для Mac OS X
  • Соединить видео с разделенным экраном
  • В Google Chrome на Linux, где есть flv, если нет в / tmp?
  • IPhone записывает видео, которые вращаются в системах Windows
  • One Solution collect form web for “Как синхронизировать два цикла видео с mplayer и upd?”

    Это было действительно очень сложно, потому что проблема заключалась в том, что -loop 0 я использовал на подчиненном устройстве, фактически ожидал, что мастер -loop 0 свою позицию и синхронизируется. На самом деле я поговорил с одним из моих друзей, который был одним из разработчиков mplayer, и он сказал мне, что я хотел сделать, это было невозможно.

    Таким образом, взлом, который я использовал, состоял в том, чтобы постоянно проверять текущую позицию подчиненного устройства и точно так же, как он попадает в EOF, перезагружая файл после определенного бит сна – который мне приходилось настраивать вручную …

    Сначала для настройки мастера используйте это:

     mplayer -udp-master -udp-ip 10.42.0.255 masterVideo.mp4 -loop 0 

    Для подчиненного я использовал следующий скрипт:

     #!/bin/bash fifo="/tmp/fifo" rm -rf $fifo mkfifo $fifo mplayer -nocache -slave -fixed-vo -idle -udp-ip 10.42.0.255 -udp-slave -udp-seek-threshold 0.5 -osdlevel 0 -input file=$fifo >$fifo.answer "slaveVideo.mp4" & somepid=$! echo $somepid function getpos() { local newpos=none while ! [[ "$newpos" =~ ANS_TIME ]]; do echo "get_time_pos" > $fifo newpos=$(tail -n 1 $fifo.answer) [[ "$newpos" =~ "EOF code: 1" ]] && { pos=-1; echo > $fifo.answer; return; } pos=${newpos#ANS_TIME_POSITION=} done pos=${pos#0} pos2=$(echo "$pos + 0.14" | bc ) printf "%.2f" "$pos2" } function getlen() { local newlen=none while ! [[ "$newlen" =~ ANS_LENGTH ]]; do echo "get_time_length" > $fifo newlen=$(tail -n 1 $fifo.answer) len=${newlen#ANS_LENGTH=} sleep 0.1 done len=${len#0} echo ${len} } len=$(getlen) while true; do pos=$(getpos) if [[ $pos == $len ]] then # YOU MUST TWEAK THE FOLLOWING # SLEEP TIME FOR YOUR MACHINE sleep 0.5 echo "loadfile /media/media/1.mp4" > $fifo fi done 

    Кстати, я использую скомпилированный mplayer – не mplayer2. Пауза работает очень чисто, как и пропустить … Однако очень важно, чтобы оба файла имели точно такую ​​же продолжительность и использовали одни и те же кодеки …

    Давайте будем гением компьютера.