Não é possível obter uma gravação limpa do HDHomerun Prime via curl

0

O problema
Gravar programas de TV do HDHomerun Prime resulta em 30 segundos de vídeo limpo, depois em um bipe alto e perda de aproximadamente 1/2 segundo ou resulta em um fluxo que parece ter sido gravado da OTA TV com um sinal muito ruim (ou seja: recebo dois ou três bons quadros por segundo de vídeo e é completamente impossível de assistir). Por favor, ajude-me a trabalhar, já que nunca estou em casa nesses horários para assistir aos meus programas favoritos.

Configuração da rede
Eu tenho um TP-Link TL-SG1016D (gigabit) com um cabo Cat5E indo para o meu HDHomerun Prime (que tem um IP reservado pelo DHCP) Também ligado ao meu switch TP-link são:
Netgear WNDR-4500 (via Cat5E) para acesso à internet e servidor DHCP
Poweredge 1950 (via dois cabos Cat5E) rodando o ESXi 5.1u1 com um arco linux VM para gravação Mais antiga área de trabalho Intel personalizada (via Cat5E conectada ao Netgear WNDR-4500) com um Core 2 Duo high-end, gigabit ethernet executando o arco linux para gravação

Configuração do software
Ambos os sistemas arch linux têm o serviço cronie ativado e possuem o curl instalado

Aqui está o meu 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

Aqui está o arquivo bash que ele está chamando:

#!/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"
    
por KG6ZVP 26.09.2013 / 20:06

1 resposta

0

O problema era com o armazenamento em cache e com o uso de um programa de download http e stdout para gravar em um arquivo. Se alguém tiver alguma ideia de por que minha solução funciona e meu esforço original não, por favor, comente!

Isso é o que eu fiz:
-Meu Crontab parece o mesmo
-Meu script de gravação usa o mplayer e armazena em cache a mídia na memória enquanto grava em um arquivo
-Eu verifiquei a velocidade de gravação do disco rígido que eu estava usando e consistentemente obtive gravações contíguas sustentadas entre 74-76MB / s

Aqui está meu script:     #! / bin / bash

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
    
por 04.10.2013 / 21:24