Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Привет всем. По совету из этой темы создаю отдельный топик про 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

Опубликовано

Погуглите по ошибке. Первое найденное https://sourceforge.net/p/minidlna/discussion/879956/thread/02aea513/

Автор minidlna говорит, что ведет себя не совсем корректно телевизор, и это похоже вызывает проблемы у последних версий minidlna.

Предлагаю погуглить или дальше пинать автора проги.

Как вариант сменить телевизор или dlna сервер (что Вы и делаете).

Опубликовано (изменено)

@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 и сопутствующих ему вещей они из одной бочки.

 

Спасибо.

Изменено пользователем hd44780
Опубликовано
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, драйверы устройств...

Опубликовано

@Александр Рыжов, поставил я этот xupnpd, убрал дефолтные списки, добавил своё IPTV, нашёл, как фильмы локальные добавлять - VLC и андроид-планшет всё показывают, а телевизор - ничего не показывает. Точнее у него в списке видно всё - и IPTV-каналы, и мои фильмы, но IPTV он просто не показывает (чёрный экран, хз, может кодеки тамошние ему не по зубам), а локальные фильмы все помечены крестиком - то ли он их открыть не может, то ли ещё что.

Ну да ладно, Бог с ним. У меня есть MediaTomb и встроенный minidlna ожил - в соседней теме я отписал про это, повторять здесь не буду.

 

Спасибо.

  • 3 месяца спустя...
Опубликовано

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.
~ #

желающие могут потестить

  • 2 недели спустя...
  • 2 месяца спустя...
Опубликовано

Ошибка довольно очевидная. Оказалось, что

#define SCANNING_MASK         0x0100
#define RESCAN_MASK           0x0200

И

#define THUMB_MASK            0x0100
#define THUMB_FILMSTRIP       0x0200

Флаги для обозначения совершенно разного пересекаются. Думаю исправят.....

Опубликовано

собрано без патча рескана

 

UPD

omni2: 2.12 - "мочит корки и выпадает в осадок"  (... process.c:140: error: Process 1234 terminated by signal 9.  A core dump was not produced....); 2.08 - "пыхтит-скрипит", но работает... и, т.к. коллекция "честно стыренных мувиков" отсутствует, проверял на МР3-файлах

  • 2 недели спустя...
Опубликовано (изменено)

Начал разбираться с тем, что рескан всей базы стартует при любом запуске 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 у них корректный.

Изменено пользователем Sergey Zozulya
Опубликовано
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 */
		...

 
Опубликовано
2 minutes ago, sergeyk said:

Добавьте отладку, может понятнее станет

Идею понял, но это только если попросить мэйнтейнеров Entware собрать тестовый пакет с такой отладкой. Самому мне до этого не дотянуться.

Опубликовано
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_db.png.5ed9158d3f6d8d63e05cb5dc54d6f266.png

Убрал этот media_dir из конфига, история повторилась теперь уже с Теория большого взрыва. Убрал и ее, только тогда ресканы базы сразу после старта minidlna прекратились.

Напрашивается только один вывод - minidlna по каким-то причинам не дружит с кириллическими символами в путях media_dir.

@TheBB @zyxmon @кто-нибудь-еще не могли бы подтвердить (или нет), когда время будет?

Опубликовано
8 минут назад, Sergey Zozulya сказал:

Напрашивается только один вывод - minidlna по каким-то причинам не дружит с кириллическими символами в путях media_dir.

Очень может быть. Никогда на верхнем уровне не использовал папки с кириллицей. И сорее всего вина тут на библиотеке sqlite (если дело в этом).

Опубликовано
1 minute ago, zyxmon said:

И сорее всего вина тут на библиотеке sqlite (если дело в этом).

Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей).

Опубликовано
1 minute ago, Sergey Zozulya said:

Тоже к этому склоняюсь. Но проверить бы еще у кого-нибудь. Если повторится, то либо исправлять как-то (к кому вообще с этим?), либо забить (в моем случае больше не буду использовать кириллицу в конце путей).

Я проверю чуть позже.

  • 1 месяц спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.