HDHomerun Prime kann nicht über curl sauber aufgenommen werden

939
KG6ZVP

Das Problem
Recording TV-Sendungen von HDHomerun Prime führt entweder zu 30 Sekunden sauberem Video, einem lauten Piepton und einem Verlust von etwa einer halben Sekunde oder zu einem Stream, der aussieht, als ob er von OTA TV mit einem wirklich schlechten Signal aufgenommen wurde ( Das heißt: Ich bekomme vielleicht zwei oder drei gute Frames pro Sekunde Video und es ist völlig unübertroffen. Bitte helfen Sie mir dabei, dass es funktioniert, da ich zu diesen Zeiten nie zu Hause bin, um meine Lieblingsshows anzusehen.

Netzwerk-Setup
Ich habe ein TP-Link TL-SG1016D (Gigabit) mit einem Cat5E-Kabel, das zu meinem HDHomerun Prime (der über eine DHCP-reservierte IP verfügt) verbunden ist.
In meinem TP-Link-Switch sind außerdem:
Netgear WNDR-4500 (über Cat5E) angeschlossen Internet-Zugang und DHCP-Server
Poweredge 1950 (über zwei Cat5E-Kabel) mit ESXi 5.1u1 mit einer Linux-VM für die Aufzeichnung
Ältere benutzerdefinierte Intel-Desktops (über Cat5E, das mit dem Netgear WNDR-4500 verbunden ist) mit einem High-End-Core 2 Duo-Gigabit-Ethernet laufendes arch linux zur aufnahme

Software-Setup Für
beide arch-linux-Systeme ist der cronie-Dienst aktiviert und curl installiert

Hier ist mein 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 

Hier ist die bash-Datei, die es aufruft:

#!/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" 
0
Haben Sie es satt, den Rest des Netzwerks (nur den Client, den Server und ein (Crossover-) Kabel) zu eliminieren, um sicherzustellen, dass ein anderes Gerät keine Engpässe darstellt oder stört? Ƭᴇcʜιᴇ007 vor 10 Jahren 0
Ich habe nicht. Der dafür erforderliche Aufwand wäre zu groß, da sich der HDHomerun Prime in einem anderen Raum als der Baremetal-Recorder befindet und ESXi nicht über die Hardware-Passthrough-Funktionen des Poweredge 1950 verfügt, wie dies beim T510 der Fall ist. Ich sollte erwähnen: Ich habe beide Maschinen als Recorder separat ausprobiert, um den Netzwerkverkehr vom Tuner auf ein Minimum zu reduzieren. Da dies alles theoretisch auf einem 100-Megabit-Ethernet-System funktionieren sollte, bin ich verblüfft, was für ein Gigabit-Netzwerk das Problem ist. KG6ZVP vor 10 Jahren 0
"Da dies alles theoretisch auf einem 100-Megabit-Ethernet-System funktionieren sollte, bin ich verblüfft, was für ein Gigabit-Netzwerk das Problem ist." Warum verblüfft sein, wenn Sie nicht wissen, dass es in einem 100-MB-Netzwerk funktioniert? Meine Vermutung ist, dass es nichts mit Netzwerkfähigkeit zu tun hat. Da Sie das Netzwerk für die Fehlerbehebung nicht physisch reduzieren können, haben Sie dann ein Netzwerk-Sniffing durchgeführt, um festzustellen, ob übermäßiger Netzwerkverkehr vorliegt, der den Stream beeinflussen kann. Ƭᴇcʜιᴇ007 vor 10 Jahren 0
Nein, habe ich nicht. Ich habe die Netzwerklatenz nur mit Ping getestet und die Download- und Upload-Geschwindigkeiten über das Netzwerk zwischen Systemen getestet. Wie würden Sie mir empfehlen, das Problem zu beheben? KG6ZVP vor 10 Jahren 0
[Überwachen Sie den gesamten Internetverkehr von meinem Heim-PC aus - was soll ich verwenden?] (Http://superuser.com/questions/22569/monitor-all-and-any-internet-traffic-from-my-home-pc -was-sollte-ich-verwenden) - hauptsächlich Wireshark. :) Ƭᴇcʜιᴇ007 vor 10 Jahren 0
Ich habe in der Vergangenheit Wireshark verwendet, um Probleme mit der Latenz und dem Routing herauszufinden. Allerdings bin ich genug von einem n00b damit, dass ich nicht sehe, wie es mir hier helfen würde. Das Seltsame an all dem ist, dass ich, wenn ich manuell mit der Aufzeichnung von Aufträgen angefangen habe, indem ich curl direkt direkt angerufen habe, kein Stottern oder andere Probleme beim Aufnehmen zu sehen sind (dann habe ich noch nie eine Testaufnahme mit curl mit einer Dauer von mehr gemacht als 10 Minuten) KG6ZVP vor 10 Jahren 0
Lasst uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/10772/discussion-between-kg6zvp-and-techie007) KG6ZVP vor 10 Jahren 0
Bitte beschreiben Sie die Hardware von * "beiden Arch Linux-Systemen" *. sawdust vor 10 Jahren 0
** Virtuelle Maschine **
RAM: 1 GB (reserviert)
Swap-Partition: 4 GB
CPU: 1 virtueller Sockel, 8 Kerne (physische Maschine hat zwei Quad-Core-Xeons mit je 2,66 GHz)
HD: 200 GB virtuelle Festplatte (virtuelle ISCSI)
Netzwerkadapter: E1000

** Physical **
Motherboard: Intel D975XBX2
CPU: Core 2 @ 2,4 GHz
RAM: 4GB DDR2-533MHz
HD: 500 GB Western Digital IDE und 1 TB WD Schwarz haben beide als Aufzeichnungs Laufwerke versucht worden

** beide **
beide Systeme haben die neueste Paketaktualisierungen KG6ZVP vor 10 Jahren 0

1 Antwort auf die Frage

0
KG6ZVP

Das Problem bestand beim Caching und beim Verwenden eines http-Downloadprogramms und stdout zum Schreiben in eine Datei. Wenn jemand eine Idee hat, warum meine Lösung funktioniert und mein ursprünglicher Aufwand nicht funktioniert, kommentieren Sie bitte!


Folgendes habe ich getan: - Mein Crontab sieht genauso aus -
Mein Aufnahmeskript verwendet Mplayer und speichert die Medien im Arbeitsspeicher, während es in eine Datei schreibt. -
Ich habe die Schreibgeschwindigkeit der von mir verwendeten Festplatte überprüft und erhält kontinuierlich zusammenhängende Schreibvorgänge zwischen 74-76MB / s

Hier ist mein Skript: #! / 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