Ich verwende DLNA seit einigen Jahren mit ReadyMedia auf meinem Raspberry Pi. Ich hatte nach langer Zeit ein Problem und korrigierte die Quelle, also Ich werde einen Artikel aus der Installation schreiben.
shell
# libjpeg-turbo
yum list libjpeg-turbo libjpeg-turbo-devel libjpeg-turbo-static libjpeg-turbo-utils
yum install libjpeg-turbo libjpeg-turbo-devel libjpeg-turbo-static libjpeg-turbo-utils
# sqlite3
yum list sqlite-devel
yum install sqlite-devel
# libexif
yum list libexif libexif-devel libexif-doc
yum install libexif libexif-devel libexif-doc
# libid3tag
yum list libid3tag libid3tag-devel
yum install libid3tag libid3tag-devel
#flac
yum list flac flac-devel flac-libs
yum install flac flac-devel flac-libs
Wenn es einen Mangel gibt, installieren Sie ihn entsprechend.
shell
cd /usr/local/src
wget http://jaist.dl.sourceforge.net/project/minidlna/minidlna/1.2.1/minidlna-1.2.1.tar.gz
tar zxvf minidlna-1.2.1.tar.gz
cd minidlna-1.2.1
Standardmäßig beträgt das Maximum 160 Pixel, wodurch die Anzeige während der Wiedergabe rau wird. Erhöhen Sie das Maximum auf 500px. (Wenn Sie größer sein möchten, machen Sie es größer.)
2 Dateien zu ändern.
shell
vi /usr/local/src/minidlna-1.2.1/albumart.c
Pro 72 Zeilen. Schreiben Sie 160 auf 500 um.
albumart.c
if( imsrc->width > imsrc->height )
{
# dstw = 160;
dstw = 500;
# dsth = (imsrc->height<<8) / ((imsrc->width<<8)/160);
dsth = (imsrc->height<<8) / ((imsrc->width<<8)/500);
}
else
{
# dstw = (imsrc->width<<8) / ((imsrc->height<<8)/160);
dstw = (imsrc->width<<8) / ((imsrc->height<<8)/500);
# dsth = 160;
dsth = 500;
}
shell
vi /usr/local/src/minidlna-1.2.1/metadata.c
Pro 594 Zeilen
metadata.c
if( ed->size )
{
/* We might need to verify that the thumbnail is 160x160 or smaller */
if( ed->size > 12000 )
{
imsrc = image_new_from_jpeg(NULL, 0, ed->data, ed->size, 1, ROTATE_NONE);
if( imsrc )
{
#if( (imsrc->width <= 160) && (imsrc->height <= 160) )
if( (imsrc->width <= 500) && (imsrc->height <= 500) )
thumb = 1;
image_free(imsrc);
}
}
else
thumb = 1;
}
Wenn Sie die Standardeinstellung beibehalten und für das Lied ein Albumkünstler festgelegt ist, wird dies priorisiert. In Bezug auf die Logik [ALBUM ARTIST] > [BAND] > [ARTIST] Es scheint also, dass nur ARTIST-Attribute in der Datenbank verwaltet werden und diejenigen mit hoher Priorität registriert werden.
Ich weiß nicht warum, aber es ist sehr unpraktisch, den Titelkünstler mit dem CD-Künstler zu vernichten, deshalb werde ich nur ARTIST verwenden. In Bezug auf die Verarbeitung wird es nach der Einnahme von [ARTIST] mit [ALBUM ARTIST] oder [BAND] überschrieben Kommentieren Sie den Teil aus, in dem die Informationen überschrieben werden, um den Vorgang zu beenden.
shell
vi /usr/local/src/minidlna-1.2.1/metadata.c
Pro 411 Zeilen. Kommentieren Sie den gesamten Block der if-Anweisung aus.
metadata.c
/* If there is a album artist or band associated with the album,
use it for virtual containers. */
//if( i < ROLE_ALBUMARTIST )
//{
// for( i = ROLE_ALBUMARTIST; i <= ROLE_BAND; i++ )
// {
// if( song.contributor[i] && *song.contributor[i] )
// break;
// }
// if( i <= ROLE_BAND )
// {
// m.artist = trim(song.contributor[i]);
// if( strlen(m.artist) > 48 )
// {
// m.artist = strdup("Various Artists");
// free_flags |= FLAG_ARTIST;
// }
// else if( (esc_tag = escape_tag(m.artist, 0)) )
// {
// m.artist = esc_tag;
// free_flags |= FLAG_ARTIST;
// }
// }
//}
shell
./configure
make -j2
make install
Standardmäßig bezieht sich die Sortierung nicht auf Medienordner. Stellen Sie dies auch ein.
shell
cp /usr/local/src/minidlna-1.2.1/minidlna.conf /etc/
vi /etc/minidlna.conf
/etc/minidlna.conf
#Medienordner einstellen
media_dir=Beliebiger Pfad
#Geben Sie den DLNA-Servernamen ein
friendly_name=Jeder Name
#Spezifikationseinstellungen sortieren. Kommentar
force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
useradd -s /sbin/nologin upnp
mkdir -R /var/cache/minidlna
chown -R upnp:upnp /var/cache/minidlna
shell
touch /etc/systemd/system/minidlna.service
vi /etc/systemd/system/minidlna.service
/etc/systemd/system/minidlna.service
[Unit]
Description=minidlna server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
User=upnp
Group=upnp
Restart=always
RestartSec=10
ExecStart=/usr/local/sbin/minidlnad -R -d -f /etc/minidlna.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
shell
#Dienstaktivierung
systemctl enable minidlna.service
#Servicestart
systemctl start minidlna.service
#Protokollprüfung
journalctl -f -u minidlna.service
Wenden Sie sich an den DLNA-Client. (Unter Windows scheint Media Monkey der einzige anständige DLNA-Client zu sein.)
ReadyMedia verwendet inotify Obwohl es automatisch hinzugefügt wird, wenn eine Änderung im Dateisystem erkannt wird. Stellen Sie bei Bedarf inotify ein.
shell
#Überprüfen Sie die maximale Anzahl von Monitoren pro Benutzer
cat /proc/sys/fs/inotify/max_user_watches
#Ändern Sie die maximale Anzahl von Monitoren pro Benutzer(Temporär)
sysctl fs.inotify.max_user_watches=100000
#Ändern Sie die maximale Anzahl von Monitoren pro Benutzer(permanent)
touch /etc/sysctl.d/90-inotify.conf
vi /etc/sysctl.d/90-inotify.conf
conf:/etc/sysctl.d/90-inotify.conf
#Legen Sie die maximale Anzahl von Monitoren pro Benutzer fest
fs.inotify.max_user_watches = 100000
Ich habe es in den letzten Jahren versucht und mich geirrt, wenn ich drinnen und draußen Heimmedien gehört habe. Ich habe DLNA (ReadyMedia), BubbleUPnP, SubSonic (lms) usw. ausprobiert. ReadyMedia schätzt die Verfügbarkeit von Wiedergabelisten im Dateisystem. Es ist sehr nützlich für die Hintergrundmusik-Wiedergabe auch in Innenräumen.
Außerdem habe ich neulich fast 600 Songs gekauft, also Als ich ihnen zuhörte und darüber nachdachte, mich an die Songtitel zu erinnern, fand ich, dass Informationen zu Anmeldeinformationen ebenfalls sehr wichtig waren. Ich bin froh, dass die Anzeige des Künstlernamens diesmal korrigiert werden konnte. (Weil ich hart arbeite, um die Tags zu organisieren ...)
(Referenz) Amazon Kindle + BubbleUPnP
metadata.c
if( imsrc->width > imsrc->height )
{
dstw = 160;
dsth = (imsrc->height<<8) / ((imsrc->width<<8)/160);
}
else
{
dstw = (imsrc->width<<8) / ((imsrc->height<<8)/160);
dsth = 160;
}
Der Ort dieser Korrektur. Ich dachte, dass die Größe nach dem Ändern der Größe durch die Atmosphäre berechnet wurde, Es war schwer zu verstehen und ich gab das Lesen auf. Wenn Sie jedoch langsam darüber nachdenken, ist es immer noch ein wenig interessanter Code.
Wahrscheinlich, weil es keine bestimmte Grundlage für den Koeffizienten gibt, um den Wert zu erhöhen. Wenn ja, wäre es meiner Meinung nach schneller, durch Schichtberechnung als durch Multiplikation zu beschleunigen. Selbst wenn Sie normalerweise keine Brüche verwenden, scheinen Sie eine FPU in Betracht zu ziehen.
python
height' = \frac{height\times 256}{(width \times 256) \div gewünschte Größe}
Nein, es ist eine arithmetische Ebene, also muss ich sie nicht bis zu diesem Punkt aufschlüsseln. Selbst als ich ein i-appli machte, konnte ich keine Brüche wie HP-Messgeräte und Bildlaufleisten verwenden. Ich fühlte mich nostalgisch, weil die Berechnung auf der ganzzahligen Seite üblich war.
Ich habe das Verhältnis während des Größenänderungsprozesses berechnet. Tatsächlich habe ich die Erfahrung, in der Lage zu sein, eine Ganzzahlarithmetik ohne Verhältnisberechnung durchzuführen, indem zuerst eine Multiplikation durchgeführt wird. Nun, in meinem Fall war es nur ein Dummkopf, also habe ich mehrere Jahre gebraucht, um es zu bemerken (Explosion). (Ich habe nach einem Prozentsatz gesucht ...) Ich habe mich ein wenig bemüht zu berechnen, ob es optimiert werden kann.
python
\begin{align}
height' &= \frac{height \times 256}{(width \times 256) \div gewünschte Größe} \\
&= \frac{height}{width \div gewünschte Größe} \\
&= \frac{height}{width \times \frac{1}{Gewünschte Größe}} \\
&= \frac{height}{width} \times \frac{Gewünschte Größe}{1} \\
&= (height \div width) \mal gewünschte Größe\\
&= height \mal gewünschte Größe\div width \\
\end{align}
Deshalb
python
height' = height \mal gewünschte Größe\div width \\
Kannst du gehen : Denken: Lass uns nachsehen! Ich habe es mit Excel überprüft, aber es sieht in Ordnung aus. (Überprüfen Sie an dem Punkt, an dem das Defizit berechnet wird, den Betrag anhand des Fehlers des Ass-Verhältnisses vor und nach der Größenänderung.) Es besteht die Gefahr, dass Ziffern überlaufen, aber manchmal wird die Formel einfach Unter diesen Einschränkungen kann eine Überprüfung der Berechnungsformel erfolgen.
Recommended Posts