Эта проблема
Запись телепередач с HDHomerun Prime приводит либо к 30 секундам чистого видео, затем к громкому звуковому сигналу и потере примерно 1/2 секунды, либо к потоку, который выглядит так, как будто он был записан с OTA TV с действительно плохим сигналом (то есть: Я получаю, может быть, два или три хороших кадра в секунду видео, и это совершенно не видно). Пожалуйста, помогите мне с этим поработать, потому что я никогда не бываю дома, чтобы смотреть мои любимые шоу.

Настройка сети
У меня есть TP-Link TL-SG1016D (гигабитный) с кабелем Cat5E, идущим к моему HDHomerun Prime (который имеет зарезервированный IP-адрес DHCP)
Также в мой переключатель TP-link подключены:
Netgear WNDR-4500 (через Cat5E) для доступа в Интернет и DHCP-сервер
Poweredge 1950 (через два кабеля Cat5E) с ESXi 5.1u1 с виртуальной машиной arch linux для записи
Более старый настольный компьютер Intel (через Cat5E, подключенный к Netgear WNDR-4500) с высококлассным Core 2 Duo, гигабитным Ethernet, работающим под управлением Linux для записи

Настройка программного обеспечения
В обеих системах arch linux включена служба cronie и установлен curl

Вот мой crontab:

#Agents of SHIELD
0 20 * * 2 /home/user/cron/RECORD-ch-name-time.sh 707 "Marvel's Agents of SHIELD - 1x02.mpg" 3600
#House
0 21 * * 2 /home/user/cron/RECORD-ch-name-time.sh 704 "House - 4x12-13.mpg" 7200
#Person of Interest
0 22 * * 2 /home/user/cron/RECORD-ch-name-time.sh 705 "Person of Interest - 3x02.mpg" 3600
#Arrow
0 20 * * 3 /home/user/cron/RECORD-ch-name-time.sh 712 "Arrow - 2x01.mpg" 3600

Вот файл bash, который он вызывает:

#!/bin/bash

CHANNEL=707
FILENAME="output"
TIMEOUTSECS=3720

# Set channel
if [ "$1" ]
    then
        CHANNEL="$1"
fi

# Set filename
if [ "$2" ]
    then
        FILENAME="$2"
fi

# Set timeout time in minutes
if [ "$3" ]
    then
        TIMEOUTSECS="$3"
fi

# Start recording
cd /home/user/recordings
echo curl http://192.168.1.200:5004/auto/v$CHANNEL -m $TIMEOUTSECS>> "v$CHANNEL"
curl http://192.168.1.200:5004/auto/v$CHANNEL -m $TIMEOUTSECS>> "v$CHANNEL"
echo "Renaming output_file in RECORD-ch-name-time.sh"
mv "v$CHANNEL" "$FILENAME"
cd /home/user/cron
echo "End of RECORD-ch-name-time.sh"

1 ответ1

0

Проблема была в кешировании и использовании программы загрузки http и stdout для записи в файл. Если у кого-то есть идеи относительно того, почему мое решение работает, а мои первоначальные усилия - нет, пожалуйста, прокомментируйте!

Вот что я сделал:
-Мой Кронтаб выглядит так же
-Мой сценарий записи использует mplayer и кэширует носитель в память при записи в файл.
-Я проверил скорость записи на жесткий диск, который я использовал, и я постоянно получаю непрерывные непрерывные записи между 74-76 МБ / с

Вот мой сценарий:#!/ Бен / Баш

CHANNEL=707
FILENAME="output"
TIMEOUTSECS=3601

# Set channel
if [ "$1" ]
    then
        CHANNEL="$1"
fi

# Set filename
if [ "$2" ]
    then
        FILENAME="$2"
fi

# Set timeout time in minutes
if [ "$3" ]
    then
        TIMEOUTSECS="$3"
fi

echo $0 $CHANNEL $FILENAME $TIMEOUTSECS> "/home/user/cron/log/log-RECORD.sh $CHANNEL $FILENAME $TIMEOUTSECS.txt"

# Start recording
cd /home/user/recordings
echo RECORDING>> "/home/user/recordings/$FILENAME.LOCK.mkv"
echo mplayer -cache 131072 -dumpfile "/home/user/recordings/$FILENAME.mpg" -dumpstream "http://192.168.1.200:5004/auto/v$CHANNEL"

/usr/bin/mplayer -cache 196608 -dumpfile "/home/user/recordings/$FILENAME.mpg" -dumpstream "http://192.168.1.200:5004/auto/v$CHANNEL"&
sleep $TIMEOUTSECS
sleep 1
for s in HUP INT KILL; do
    kill -$s $! &>/dev/null || break
    sleep 5
done

rm "/home/user/recordings/$FILENAME.LOCK.mkv"

/usr/bin/ccextractor "/home/user/recordings/$FILENAME.mpg" -out=srt -o "/home/user/recordings/$FILENAME.srt"
/usr/bin/ffmpeg -i "/home/user/recordings/$FILENAME.mpg" -i "/home/user/recordings/$FILENAME.srt" -scodec copy -vcodec copy -threads 8 -acodec copy "/home/user/recordings/$FILENAME-Editable.mpg"

/usr/bin/ffmpeg -i "/home/user/recordings/$FILENAME.srt" -i "/home/user/recordings/$FILENAME-Editable.mkv" -scodec copy -vcodec libx264 -threads 8 -crf 26 -coder 1 -acodec aac -vbr 4 -strict -2 "/home/user/recordings/$FILENAME-Quick.mkv"

chown -R user "/home/user/recordings/*"

cd /home/user/cron

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .