hd44780 Posted June 12, 2017 Share 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 Link to comment Share on other sites More sharing options...
zyxmon Posted June 12, 2017 Share Posted June 12, 2017 Погуглите по ошибке. Первое найденное https://sourceforge.net/p/minidlna/discussion/879956/thread/02aea513/ Автор minidlna говорит, что ведет себя не совсем корректно телевизор, и это похоже вызывает проблемы у последних версий minidlna. Предлагаю погуглить или дальше пинать автора проги. Как вариант сменить телевизор или dlna сервер (что Вы и делаете). Quote Link to comment Share on other sites More sharing options...
hd44780 Posted June 12, 2017 Author Share Posted June 12, 2017 Спасибо. Попробую покопаться, если что новое будет - сообщу. Quote Link to comment Share on other sites More sharing options...
hd44780 Posted June 13, 2017 Author Share 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 Link to comment Share on other sites More sharing options...
Le ecureuil Posted June 13, 2017 Share 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 Link to comment Share on other sites More sharing options...
hd44780 Posted June 15, 2017 Author Share Posted June 15, 2017 Ладно, спасибо .... Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted June 15, 2017 Share Posted June 15, 2017 @hd44780, попробуйте xupnpd в качестве UPnP/DLNA источника для капризного ТВ. Он умеет обслуживать локальный контент. 2 Quote Link to comment Share on other sites More sharing options...
hd44780 Posted June 15, 2017 Author Share Posted June 15, 2017 @Александр Рыжов, поставил я этот xupnpd, убрал дефолтные списки, добавил своё IPTV, нашёл, как фильмы локальные добавлять - VLC и андроид-планшет всё показывают, а телевизор - ничего не показывает. Точнее у него в списке видно всё - и IPTV-каналы, и мои фильмы, но IPTV он просто не показывает (чёрный экран, хз, может кодеки тамошние ему не по зубам), а локальные фильмы все помечены крестиком - то ли он их открыть не может, то ли ещё что. Ну да ладно, Бог с ним. У меня есть MediaTomb и встроенный minidlna ожил - в соседней теме я отписал про это, повторять здесь не буду. Спасибо. Quote Link to comment Share on other sites More sharing options...
TheBB Posted October 13, 2017 Share 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 Link to comment Share on other sites More sharing options...
vlad Posted October 21, 2017 Share Posted October 21, 2017 В 13.10.2017 в 18:37, TheBB сказал: желающие могут потестить Установил. Наконец-то сортировка заработала. Тв LG. Quote Link to comment Share on other sites More sharing options...
zyxmon Posted January 21, 2018 Share Posted January 21, 2018 Ошибка довольно очевидная. Оказалось, что #define SCANNING_MASK 0x0100 #define RESCAN_MASK 0x0200 И #define THUMB_MASK 0x0100 #define THUMB_FILMSTRIP 0x0200 Флаги для обозначения совершенно разного пересекаются. Думаю исправят..... Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted January 21, 2018 Share Posted January 21, 2018 Понял, благодарю за потраченное время. Будем ждать обновлений. Quote Link to comment Share on other sites More sharing options...
TheBB Posted January 22, 2018 Share Posted January 22, 2018 minidlna_1.2.1-2a_mipsel-3x.ipk патч порезать на куски забыл перед отправкой на гит ((( Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted January 22, 2018 Share Posted January 22, 2018 @TheBB генерация миниатюр пофикшена, спасибо. Quote Link to comment Share on other sites More sharing options...
zyxmon Posted January 22, 2018 Share Posted January 22, 2018 46 минут назад, TheBB сказал: патч порезать на куски забыл перед отправкой на гит ((( ИМХО Лучше порезать и быстрый rescan выкинуть. Quote Link to comment Share on other sites More sharing options...
TheBB Posted January 23, 2018 Share Posted January 23, 2018 файл перезалит с тем же именем Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted January 23, 2018 Share Posted January 23, 2018 1 minute ago, TheBB said: перезалит с тем же именем Что-то поменялось? Quote Link to comment Share on other sites More sharing options...
TheBB Posted January 23, 2018 Share 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 Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 2, 2018 Share 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 Link to comment Share on other sites More sharing options...
sergeyk Posted February 2, 2018 Share 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 Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 2, 2018 Share Posted February 2, 2018 2 minutes ago, sergeyk said: Добавьте отладку, может понятнее станет Идею понял, но это только если попросить мэйнтейнеров Entware собрать тестовый пакет с такой отладкой. Самому мне до этого не дотянуться. Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 5, 2018 Share Posted February 5, 2018 @TheBB @zyxmon может вы что толковое подскажете по этой проблеме? Quote Link to comment Share on other sites More sharing options...
TheBB Posted February 5, 2018 Share Posted February 5, 2018 с отладкой: minidlna_1.2.1-2a_mipsel-3x.ipk Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 5, 2018 Share Posted February 5, 2018 @TheBB вот спасибо, как доберусь, проверю и отпишу. Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 6, 2018 Share 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 Link to comment Share on other sites More sharing options...
zyxmon Posted February 6, 2018 Share Posted February 6, 2018 8 минут назад, Sergey Zozulya сказал: Напрашивается только один вывод - minidlna по каким-то причинам не дружит с кириллическими символами в путях media_dir. Очень может быть. Никогда на верхнем уровне не использовал папки с кириллицей. И сорее всего вина тут на библиотеке sqlite (если дело в этом). Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 6, 2018 Share Posted February 6, 2018 1 minute ago, zyxmon said: И сорее всего вина тут на библиотеке sqlite (если дело в этом). Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей). Quote Link to comment Share on other sites More sharing options...
sergeyk Posted February 6, 2018 Share Posted February 6, 2018 1 minute ago, Sergey Zozulya said: Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей). Я проверю чуть позже. Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted February 6, 2018 Share Posted February 6, 2018 1 minute ago, sergeyk said: Я проверю чуть позже. Кстати, вам спасибо! Эта отладка выявила очень неочевидную проблему. Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted March 27, 2018 Share Posted March 27, 2018 On 2/6/2018 at 10:51 PM, sergeyk said: Я проверю чуть позже. Удалось это проверить? Quote Link to comment Share on other sites More sharing options...
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.