hd44780 Posted June 12, 2017 Posted June 12, 2017 Привет всем. По совету из этой темы создаю отдельный топик про minidlna. Проблема заключается с том, что спустя какое-то время (по наблюдениям - от 3 до 45-50 мин) просмотр файла сам по себе останавливается и через несколько секунд файл начинается сначала. Иногда - следующий в том же каталоге. Последний раз вообще даже плеер телевизора завис, пришлось переключать его в другой режим, чтобы он снялся/сбросился. Прилагаю лог minidlna -d, там в конце видны ошибки: [2017/06/12 16:06:50] upnphttp.c:1971: info: Serving DetailID: 35 [/opt/media/1001 ночь/BinBir Gece.s01.e22.avi] [2017/06/12 16:06:53] upnphttp.c:1281: debug: sendfile error :: error no. 32 [Broken pipe] их там несколько штук, т.к. я пытался несколько раз перезапустить просмотр и выполнить перемотку до места, на котором он прервался (начал с начала). Телевизор Sharp года 2011-2012, точно не помню уже. Если нужна точная модель - залезу за него, гляну. Если необходима доп информация - предоставлю. Спасибо. PS. Немного повторю то, что писал в других темах ранее - раньше постоянно пользовался родным DLNA из OPKG прошивки для GIGA1. Проблем не замечал. Потому minidlna из entware туда никогда не ставил и никогда не задумывался о каких-либо альтернативах. minidlna_log.zip Quote
zyxmon Posted June 12, 2017 Posted June 12, 2017 Погуглите по ошибке. Первое найденное https://sourceforge.net/p/minidlna/discussion/879956/thread/02aea513/ Автор minidlna говорит, что ведет себя не совсем корректно телевизор, и это похоже вызывает проблемы у последних версий minidlna. Предлагаю погуглить или дальше пинать автора проги. Как вариант сменить телевизор или dlna сервер (что Вы и делаете). Quote
hd44780 Posted June 12, 2017 Author Posted June 12, 2017 Спасибо. Попробую покопаться, если что новое будет - сообщу. Quote
hd44780 Posted June 13, 2017 Author Posted June 13, 2017 (edited) @zyxmonА у Вас случайно нигде не завалялись исходники minidlna, который был вшит в ту полуофициальную прошивку kng_ra_delta_2.04.C.7.0-8.bin для старой белой гиги из этой темы - ? Интересует именно вшитый, не entware. Работал идеально, просто сказка была. Я не думаю, что об этом можно спрашивать официальную техподдержку, т.к. та прошивка была собрана "по просьбам трудящихся" и не подлежала какому-либо обновлению. Я готов сам попытаться их скомпилить/собрать, возможно попрошу помощи, т.к. с компиляцией программ на Си под линукс мало сталкивался, пишу, в основном, на питоне. На си пишу, в основном под микроконтроллеры AVR/STM32 и под винду. Как я понимаю, на другом форуме, где-то здесь - http://forums.zyxmon.org/ На этом форуме не знаю .... Я для пробы установил в гигу 3 gcc, скачал исходники minidlna, запустил ./configure, он выдал кучку ошибок (вроде что-то с синтаксисом) в начале, потом остановился: configure: error: libavutil headers not found or not usable Наверное потому, что он не рассчитан на системное окружение роутера. Возможно я вообще делал глупость и их не надо компилить в роутере. Из нормальных линуксов есть Cloudlinux 6.9, могу развернуть CentOS, хоть в плане gcc и сопутствующих ему вещей они из одной бочки. Спасибо. Edited June 13, 2017 by hd44780 Quote
Le ecureuil Posted June 13, 2017 Posted June 13, 2017 3 часа назад, hd44780 сказал: @zyxmonА у Вас случайно нигде не завалялись исходники minidlna, который был вшит в ту полуофициальную прошивку kng_ra_delta_2.04.C.7.0-8.bin для старой белой гиги из этой темы - ? Интересует именно вшитый, не entware. Работал идеально, просто сказка была. Я не думаю, что об этом можно спрашивать официальную техподдержку, т.к. та прошивка была собрана "по просьбам трудящихся" и не подлежала какому-либо обновлению. Я готов сам попытаться их скомпилить/собрать, возможно попрошу помощи, т.к. с компиляцией программ на Си под линукс мало сталкивался, пишу, в основном, на питоне. На си пишу, в основном под микроконтроллеры AVR/STM32 и под винду. Как я понимаю, на другом форуме, где-то здесь - http://forums.zyxmon.org/ На этом форуме не знаю .... Я для пробы установил в гигу 3 gcc, скачал исходники minidlna, запустил ./configure, он выдал кучку ошибок (вроде что-то с синтаксисом) в начале, потом остановился: configure: error: libavutil headers not found or not usable Наверное потому, что он не рассчитан на системное окружение роутера. Возможно я вообще делал глупость и их не надо компилить в роутере. Из нормальных линуксов есть Cloudlinux 6.9, могу развернуть CentOS, хоть в плане gcc и сопутствующих ему вещей они из одной бочки. Спасибо. Исходники minidlna мало отличаются от текущих, скорее сменилось все вокруг - ядро, компилятор, firewall, драйверы устройств... Quote
Александр Рыжов Posted June 15, 2017 Posted June 15, 2017 @hd44780, попробуйте xupnpd в качестве UPnP/DLNA источника для капризного ТВ. Он умеет обслуживать локальный контент. 2 Quote
hd44780 Posted June 15, 2017 Author Posted June 15, 2017 @Александр Рыжов, поставил я этот xupnpd, убрал дефолтные списки, добавил своё IPTV, нашёл, как фильмы локальные добавлять - VLC и андроид-планшет всё показывают, а телевизор - ничего не показывает. Точнее у него в списке видно всё - и IPTV-каналы, и мои фильмы, но IPTV он просто не показывает (чёрный экран, хз, может кодеки тамошние ему не по зубам), а локальные фильмы все помечены крестиком - то ли он их открыть не может, то ли ещё что. Ну да ладно, Бог с ним. У меня есть MediaTomb и встроенный minidlna ожил - в соседней теме я отписал про это, повторять здесь не буду. Спасибо. Quote
TheBB Posted October 13, 2017 Posted October 13, 2017 minidlna-1.2.1 (инфо раз, инфо два-с) т.к. медиатека "временно недоступна", ограничился запуском ~ # ../etc/init.d/S90minidlna start Starting minidlna... done. ~ # и просмотром лога ~ # cat ../var/minidlna/minidlna.log [2017/10/13 18:13:29] minidlna.c:1231: warn: Starting MiniDLNA version 1.2.1. [2017/10/13 18:13:29] minidlna.c:469: warn: Creating new database at /opt/var/minidlna/files.db [2017/10/13 18:13:29] minidlna.c:1272: warn: HTTP listening on port 8200 [2017/10/13 18:13:29] scanner.c:731: warn: Scanning /opt/media [2017/10/13 18:13:29] scanner.c:820: warn: Scanning /opt/media finished (13 files)! [2017/10/13 18:13:29] playlist.c:135: warn: Parsing playlists... [2017/10/13 18:13:30] playlist.c:269: warn: Finished parsing playlists. ~ # желающие могут потестить 1 Quote
vlad Posted October 21, 2017 Posted October 21, 2017 В 13.10.2017 в 18:37, TheBB сказал: желающие могут потестить Установил. Наконец-то сортировка заработала. Тв LG. Quote
zyxmon Posted January 21, 2018 Posted January 21, 2018 Ошибка довольно очевидная. Оказалось, что #define SCANNING_MASK 0x0100 #define RESCAN_MASK 0x0200 И #define THUMB_MASK 0x0100 #define THUMB_FILMSTRIP 0x0200 Флаги для обозначения совершенно разного пересекаются. Думаю исправят..... Quote
Sergey Zozulya Posted January 21, 2018 Posted January 21, 2018 Понял, благодарю за потраченное время. Будем ждать обновлений. Quote
TheBB Posted January 22, 2018 Posted January 22, 2018 minidlna_1.2.1-2a_mipsel-3x.ipk патч порезать на куски забыл перед отправкой на гит ((( Quote
Sergey Zozulya Posted January 22, 2018 Posted January 22, 2018 @TheBB генерация миниатюр пофикшена, спасибо. Quote
zyxmon Posted January 22, 2018 Posted January 22, 2018 46 минут назад, TheBB сказал: патч порезать на куски забыл перед отправкой на гит ((( ИМХО Лучше порезать и быстрый rescan выкинуть. Quote
Sergey Zozulya Posted January 23, 2018 Posted January 23, 2018 1 minute ago, TheBB said: перезалит с тем же именем Что-то поменялось? Quote
TheBB Posted January 23, 2018 Posted January 23, 2018 собрано без патча рескана UPD omni2: 2.12 - "мочит корки и выпадает в осадок" (... process.c:140: error: Process 1234 terminated by signal 9. A core dump was not produced....); 2.08 - "пыхтит-скрипит", но работает... и, т.к. коллекция "честно стыренных мувиков" отсутствует, проверял на МР3-файлах Quote
Sergey Zozulya Posted February 2, 2018 Posted February 2, 2018 (edited) Начал разбираться с тем, что рескан всей базы стартует при любом запуске minidlna, достаточно даже просто сделать: /opt/etc/init.d/S90minidlna stop /opt/etc/init.d/S90minidlna start Включил debug-логи, но это ничего не прояснило, рескан стартует буквально сразу же после старта: [2018/02/02 20:11:13] minidlna.c:1231: warn: Starting MiniDLNA version 1.2.1. [2018/02/02 20:11:13] minidlna.c:471: warn: New media_dir detected; rebuilding... Полез смотреть minidlna.c, но квалификации разобраться не хватило. Судя по выводу New media_dir detected; rebuilding... в лог и этому куску кода из minidlna.c: Spoiler static void check_db(sqlite3 *db, int new_db, pid_t *scanner_pid) { struct media_dir_s *media_path = NULL; char cmd[PATH_MAX*2]; char **result; int i, rows = 0; int ret; if (!new_db) { /* Check if any new media dirs appeared */ media_path = media_dirs; while (media_path) { ret = sql_get_int_field(db, "SELECT TIMESTAMP as TYPE from DETAILS where PATH = %Q", media_path->path); if (ret != media_path->types) { ret = 1; goto rescan; } media_path = media_path->next; } /* Check if any media dirs disappeared */ sql_get_table(db, "SELECT VALUE from SETTINGS where KEY = 'media_dir'", &result, &rows, NULL); for (i=1; i <= rows; i++) { media_path = media_dirs; while (media_path) { if (strcmp(result[i], media_path->path) == 0) break; media_path = media_path->next; } if (!media_path) { ret = 2; sqlite3_free_table(result); goto rescan; } } sqlite3_free_table(result); } ret = db_upgrade(db); if (ret != 0) { rescan: CLEARFLAG(RESCAN_MASK); if (ret < 0) DPRINTF(E_WARN, L_GENERAL, "Creating new database at %s/files.db\n", db_path); else if (ret == 1) DPRINTF(E_WARN, L_GENERAL, "New media_dir detected; rebuilding...\n"); else if (ret == 2) DPRINTF(E_WARN, L_GENERAL, "Removed media_dir detected; rebuilding...\n"); else DPRINTF(E_WARN, L_GENERAL, "Database version mismatch (%d => %d); need to recreate...\n", ret, DB_VERSION); sqlite3_close(db); snprintf(cmd, sizeof(cmd), "rm -rf %s/files.db %s/art_cache", db_path, db_path); if (system(cmd) != 0) DPRINTF(E_FATAL, L_GENERAL, "Failed to clean old file cache! Exiting...\n"); open_db(&db); if (CreateDatabase() != 0) DPRINTF(E_FATAL, L_GENERAL, "ERROR: Failed to create sqlite database! Exiting...\n"); } if (ret || GETFLAG(RESCAN_MASK)) { #if USE_FORK sqlite3_close(db); *scanner_pid = fork(); open_db(&db); if (*scanner_pid == 0) /* child (scanner) process */ { start_scanner(); sqlite3_close(db); log_close(); freeoptions(); free(children); exit(EXIT_SUCCESS); } else if (*scanner_pid < 0) { start_scanner(); } else SETFLAG(SCANNING_MASK); #else start_scanner(); #endif } } переменной ret присваивается 1, а это значит, что minidlna при старте обнаруживает новую директорию (параметр media_dir в конфиге) и инициирует рескан. Проблема в том, что никаких новых директорий в конфиге на самом деле нет. У меня в конфиге 5 параметров media_dir, вот в таком виде (где три точки уже идет реальный путь до каталога): media_dir=V,/tmp/mnt/... media_dir=V,/tmp/mnt/... media_dir=/tmp/mnt/... media_dir=V,/tmp/mnt/... media_dir=V,/tmp/mnt/... Почему в итоге ret = 1, не докопался. Если кто может подсказать, в чем проблема (ждать довольно долго при каждой перезагрузке роутера напрягает), дайте знать. Могу предоставить базу или другую необходимую информацию. Хочется это победить. UPD. Проверил созданную базу после остановки minidlna. Все пять каталогов есть в таблице DETAILS, при этом TIMESTAMP у них корректный. Edited February 2, 2018 by Sergey Zozulya Quote
sergeyk Posted February 2, 2018 Posted February 2, 2018 26 minutes ago, Sergey Zozulya said: Если кто может подсказать, в чем проблема (ждать довольно долго при каждой перезагрузке роутера напрягает), дайте знать. Могу предоставить базу или другую необходимую информацию. Хочется это победить. Добавьте отладку, может понятнее станет: ... if (ret != media_path->types) { DPRINTF(E_WARN, L_GENERAL, "ret (%i) != media_path->types (%i), path = \"%s\"\n", ret, (int) media_path->types, media_path->path); ret = 1; goto rescan; } media_path = media_path->next; } /* Check if any media dirs disappeared */ ... Quote
Sergey Zozulya Posted February 2, 2018 Posted February 2, 2018 2 minutes ago, sergeyk said: Добавьте отладку, может понятнее станет Идею понял, но это только если попросить мэйнтейнеров Entware собрать тестовый пакет с такой отладкой. Самому мне до этого не дотянуться. Quote
Sergey Zozulya Posted February 5, 2018 Posted February 5, 2018 @TheBB @zyxmon может вы что толковое подскажете по этой проблеме? Quote
TheBB Posted February 5, 2018 Posted February 5, 2018 с отладкой: minidlna_1.2.1-2a_mipsel-3x.ipk Quote
Sergey Zozulya Posted February 5, 2018 Posted February 5, 2018 @TheBB вот спасибо, как доберусь, проверю и отпишу. Quote
Sergey Zozulya Posted February 6, 2018 Posted February 6, 2018 On 2/5/2018 at 3:41 PM, TheBB said: с отладкой: minidlna_1.2.1-2a_mipsel-3x.ipk Предложенная @sergeyk отладка вот что прояснила: [2018/02/06 19:50:31] minidlna.c:1232: warn: Starting MiniDLNA version 1.2.1. [2018/02/06 19:50:31] minidlna.c:437: warn: ret (0) != media_path->types (2), path = "/tmp/mnt/My Passport/Videos/TV Shows/Блудливая Калифорния" [2018/02/06 19:50:31] minidlna.c:472: warn: New media_dir detected; rebuilding... [2018/02/06 19:50:31] minidlna.c:1273: warn: HTTP listening on port 8200 Парсер посчитал, что это новый параметр media_dir в конфиге, хотя это не так. В базе до старта minidlna хорошо видно, что эта папка уже просканирована и имеет корректный TIMESTAMP = 2: Убрал этот media_dir из конфига, история повторилась теперь уже с Теория большого взрыва. Убрал и ее, только тогда ресканы базы сразу после старта minidlna прекратились. Напрашивается только один вывод - minidlna по каким-то причинам не дружит с кириллическими символами в путях media_dir. @TheBB @zyxmon @кто-нибудь-еще не могли бы подтвердить (или нет), когда время будет? Quote
zyxmon Posted February 6, 2018 Posted February 6, 2018 8 минут назад, Sergey Zozulya сказал: Напрашивается только один вывод - minidlna по каким-то причинам не дружит с кириллическими символами в путях media_dir. Очень может быть. Никогда на верхнем уровне не использовал папки с кириллицей. И сорее всего вина тут на библиотеке sqlite (если дело в этом). Quote
Sergey Zozulya Posted February 6, 2018 Posted February 6, 2018 1 minute ago, zyxmon said: И сорее всего вина тут на библиотеке sqlite (если дело в этом). Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей). Quote
sergeyk Posted February 6, 2018 Posted February 6, 2018 1 minute ago, Sergey Zozulya said: Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей). Я проверю чуть позже. Quote
Sergey Zozulya Posted February 6, 2018 Posted February 6, 2018 1 minute ago, sergeyk said: Я проверю чуть позже. Кстати, вам спасибо! Эта отладка выявила очень неочевидную проблему. Quote
Sergey Zozulya Posted March 27, 2018 Posted March 27, 2018 On 2/6/2018 at 10:51 PM, sergeyk said: Я проверю чуть позже. Удалось это проверить? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.