Closed GoogleCodeExporter closed 9 years ago
type of issue не выбирается, ну в общем понятно,
что выше is not Defect
Original comment by entry....@gmail.com
on 23 Jan 2013 at 3:43
В программу интегрирован модуль MediaInfo,
который позволяет вам самим посмотреть
медиаинформацию о содержащихся у вас
файлах. Так же вы этой информацией делитесь
с другими участниками файлообмена. т.е.
если у кого-то стоит новая версия программы
вы получите от этого пользователя файллист
со всем описанием. В недавнем времени мы
начали разработку возможности просмотра
медиаинформации в окне поиска. Так что эта
возможность уже фактически реализована,
осталось подождать когда большая часть
пользователей, а так же вы, обновите
программу.
Original comment by tret2...@gmail.com
on 24 Jan 2013 at 7:46
хм.. но этот способ ограничен не только
клиентами Flylinkdc, но еще к тому же и его
версиями :(
Не лучше ли сделать опцию, по нажатию
которой, качается первые ~300-500кб
запрошенных данных медиа-файла у
пользователя, а далее просто берется
информация из полученных заголовков
контейнера, ну и показывается например во
всплывающем окне ?
Размер данных весьма скромен, но этот
способ должен быть универсален, т.к. можно
будет получить полную информацию о
выбранном медиафайле не зависимо какая
программа-клиент у другого пользователя.
Original comment by entry....@gmail.com
on 24 Jan 2013 at 9:47
[deleted comment]
Эта информация получена через mediainfo
вы пробовали ей скармиливать не полный
файл а обрубок в первые 300-500к?
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 9:55
нет, не пробовал.
посмотрел только первые 300кб данных в
попавшемся файле. По крайней мере Title
дорожек располагался в этом диапазоне.
Соответственно следует действовать в
обход mediainfo, если тот противиться
Чтобы не было скучно, привожу пример (во
вложении файл header 477 КБ) - попробуйте его
открыть например в mkvmerge :) ну или любом hex
редакторе
Original comment by entry....@gmail.com
on 24 Jan 2013 at 10:08
а есть какой SDK для Flylinkdc ? если так усердно
никто не хочет с этим возиться, хоть для
себя напишу какой плагин, как удастся время
выкроить...
Original comment by entry....@gmail.com
on 24 Jan 2013 at 10:16
Вложения вашего не увидел - заливайте на
обменник.
Сюда наверно не все пропускают
Объем исходного кода либы mediainfo на С++
"7 205 222 bytes in 352 files"
Автор mediainfo за добавления туда новой фичи
парсинга DVD каталога просит 600$
А вы предлагаете повторит всю работу с
неизвестным результатом чтобы не было
скучно?
Запрашиваемая функциональность будет
реализована тут http://www.flylinkdc.ru/2012/12/blog-post.html
будет поддерживаться во флаях и всех его
клонах.
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 10:22
Плагинов во флае нет (кроме портал браузера)
только хард-код - все исходники открыты.
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 10:24
скопировал сюда:
https://docs.google.com/file/d/0B0-ygoNBOTDcOE92QVVwSWdhTW8/edit
Собственно из того что требуется, нужно по
большей части только название и тип всех
дорожек, что там имеется. На основании
типов контейнеров, можно вообще самому
рассчитать offset и далее просто вытащить
необходимые данные. ну по крайней мере с mkv
дела обстоят проще.
Кроме того, есть же консольная утилита
mkvmerge! (из состава MKVToolNix) Можно также
вытащить инфу через нее. GUI версия работает
без проблем. так, что и велосипед не надо
никакой изобретать.
Пропустите пример высланного файла через
нее.
http://www.bunkus.org/videotools/mkvtoolnix/ исходники там же
Original comment by entry....@gmail.com
on 24 Jan 2013 at 10:40
Pavel.Pimenov
вот и жалко, что нет плагинов :(
пересобирать для себя проект только для
этого, не очень конечно..
нужно то:
* Скачать первые ~500кб
* Прогнать через mkvmerge
* Показать найденные дорожки
Original comment by entry....@gmail.com
on 24 Jan 2013 at 10:46
Если mkvmerge при этом упадет что будет?
вечером гляну на ее исходники.
p.s.
После внедрения во флай mediainfo было найдено
около сотни хитрожопых файлов
на которых медиаинфе сносило крышу и она
валилась утягивая за собой флай.
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 10:54
ок, спасибо за проявленный интерес
> "Если mkvmerge при этом упадет что будет?"
а что с отдельными процессами о_О ну или
точнее в пример браузер chrome, когда падает
какой-либо процесс его плагина
Вообще, достаточно же будет использовать
бинарные файлы mkvmerge, куда-то интегрировать
его логику во flylinkdc вряд ли имеет смысл
(хотя не в курсе какая архитектура flylinkdc,
поэтому вам конечно виднее)
Original comment by entry....@gmail.com
on 24 Jan 2013 at 11:11
э ну вот, обновлялся чтобы проверить mediainfo,
теперь в новой версии база имеет
эксклюзивную блокировку от FlylinkDC.exe
Теперь до статистики так просто не
достучаться :( https://bitbucket.org/3F/flydcstat/wiki/Home
Хотя конечно exclusive lock flylink'у конечно только
на пользу... все же плагины были бы кстати
Original comment by entry....@gmail.com
on 24 Jan 2013 at 11:22
Я не знал про утилиту - FlyDCstat
эксклюзивную блокировку давно включили.
просто без нее может получится так, что
если вы внешней программой делает
тяжелый запрос к базе флая.
сам флай может упасть по таймауту и
завершит работу
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 11:25
Вот свежий пример последняя версия Mediainfo
грохнулась при анализе файла.
https://www.crash-server.com/DumpGroup.aspx?ClientID=ppa&DumpGroupID=28879
т.к. пользователь не отослал полный дамп
файла - мы не знаем на каком файле упала
и не можем сообщить о пробелме автору либы
Original comment by Pavel.Pimenov@gmail.com
on 24 Jan 2013 at 11:56
>>э ну вот, обновлялся чтобы проверить mediainfo,
теперь в новой версии база имеет
эксклюзивную блокировку от FlylinkDC.exe
Она отключается в настройках, необходимо
снять галку "Использовать монопольный
режим работы с базой SQLite...", после чего
перезапустить клиент.
http://flylinkdc.com/dokuwiki/doku.php?id=ru:advanced
Original comment by a.rain...@gmail.com
on 25 Jan 2013 at 3:38
ага :) спасибо, буду знать
только вот из-за большого кол-ва проблем в
новой публичной версии, откатываюсь
обратно
см. Issue 904
----
Pavel
Ну как ? шансы есть ? или только своими
усилиями
Original comment by entry....@gmail.com
on 26 Jan 2013 at 10:40
[deleted comment]
Встроенная медиаинфа и так уже показывает
всё, что только возможно по множеству
контейнеров. И качать ничего не надо, вся
инфа по дорогам, включая язык вообще
передаётся с файлистом.
И встроено это во многие клиенты, такчто с
дефицитом инфы не должно быть проблем.
При использовании поиска подобная, но
полнейшая инфа будет так же выдаваться. Это
уже в разработке.
Original comment by bobrikov
on 27 Jan 2013 at 1:19
хм,
даже из тех единиц, что мне на редкость
попадается, я вижу например только:
"22mn 53s | AAC, 2 channels, Russian | AAC, 2 channels, Japanese"
Когда в этом же файле Title первой дорожки:
"Mangaka & Milirina [Anything-group]"
Это принципиально важно, т.к. русская
озвучка может быть например в 6 вариантах, а
получаемый файл может содержать только то,
что не нужно
Пример с файлом, смотреть во вложении:
screen0.png, screen1.png
Original comment by entry....@gmail.com
on 27 Jan 2013 at 1:57
Attachments:
[deleted comment]
или вот еще пример,
screen0.png:
т.к. информация о языке дорожки не
определена, то выводиться соответственно:
"24mn 0s | MPEG, 192 Kbps, 2 channels | AAC, 2 channels"
т.е. и вовсе не понятно что внутри, есть ли
там русская озвучка или нет, и т.п.
Когда в этом же файле, несмотря на
отсутсвие информации о языке дорожки, Title
определен как: "Noir [AniDub] NarutoFilm" - screen1.png
Original comment by entry....@gmail.com
on 27 Jan 2013 at 2:21
Attachments:
Можно уточнить что не правильно про
русскую озвучку?
я что-то не понял что требуется поправить
во флае?
Original comment by Pavel.Pimenov@gmail.com
on 27 Jan 2013 at 2:23
Pavel:
bobrikov упомянул, что все это уже есть, и
доступно почти везде и всем.
Ну да конечно, что мне например делать с
чел. на клиенте pl++v5.96 с 5тб данными у
которого колонки с этой информацией все
пустые, что конечно не удивительно
ну и прочими...
Ну и привел примеры, что даже там где эта
инфа публикуется, то по крайней мере не
доступен title, который зачастую требуется
чтобы идентифицировать n-ую запись.
---
в общем то возвращаясь к #10, #11 шанс увидеть
какую-нибудь реализацию есть ? неужели VS
ставить :(
Original comment by entry....@gmail.com
on 27 Jan 2013 at 2:43
Интеграцию с mkvmerge я пока не осознал.
я также не понял как это поможет юзерам
заброшенного PL?
p.s
Думаете установка студии самый сложный шаг
в этом деле? :)
у вас есть скайп - хотите подключиться к нам
в чат разработки?
кидайте логин в почту pavel.pimenov@gmail.com
я авторизую и перекину в конференнцию.
Original comment by Pavel.Pimenov@gmail.com
on 27 Jan 2013 at 3:03
Я всё прекрасно понимаю, данные теги
читаются полностью и будут видны. Если
привычный вид медиаинфогого текста вам не
чужд, тогда всё ок.
Также я понимаю, что поддержка других
клиентов это дело хорошее, но медиаинфа
встроена даже в оригинальный клиент, пусть
бы и остальные почесались. Имхо данная
фича, как практически дубликат уже
разрабатываемой, как минимум появится не
сразу, как максимум не появится уже никогда
за ненадобностью.
Если напишете заплатку, плохого конечно не
будет. Из-за косяка матроски медиаинфа, да я
так понял и сама матрёшка, не сможеть дать
инфу о битрейте по заголовку, если у 2+
дорог VBR.
Тайтла в файле может и не быть.
Original comment by bobrikov
on 27 Jan 2013 at 3:10
***
Stream size : 308 MiB (6%)
Title : R5
Language : Russian
***
Original comment by A.Kuda...@gmail.com
on 27 Jan 2013 at 3:10
> Думаете установка студии самый сложный
шаг в этом деле? :)
ага, ведь с настроенным инструментарием
уже остается только писать :) кроме того
проблема таки в лицензии :) хотя может под
чем другим можно также собрать
bobrikov:
> ...данные теги читаются полностью и будут
видны.
о_О это где еще смотреть ? каких-то пунктов в
FlylinkDC по mediainfo у меня больше нет. Или в
настройках где ?
A.Kuda...:
это где такое ?
Original comment by entry....@gmail.com
on 27 Jan 2013 at 3:24
это я с браузера жены нечаянно.
это всё встраивается, уже говорили выше
а тайтл и прочее смотрите в медиаинфе, как
обычно
Original comment by bobrikov
on 27 Jan 2013 at 3:30
Attachments:
bobrikov:
вы меня запутали :)
это, или похожее окно, вызывается
как-нибудь из flylinkdc ?
т.е. кроме колонок с неполной инфой еще
где-то есть куда смотреть ?
для примера открыл XML файл листа
пользователя, смотрю первый попавшийся
узел:
File Name="AMV Hell 4 - The Last One.mp4" Size="734515375"
TTH="U4KTSBUSFRTKMAXXBSJVEALUO55TFBQ2SBFWO7Y" HIT="1" TS="1355260896" BR="128"
WH="640x480" MA="1h 24mn | AAC, 128 Kbps, 2 channels" MV="AVC, 1 025 Kbps, 4:3,
23.976 fps"
не нахожу
т.е. то что у меня на компе, это
соответственно не то.. на уже скачанном
файле и без того у меня не мало утилит с
выдергиванием инфы
Original comment by entry....@gmail.com
on 27 Jan 2013 at 3:53
это БУДЕТ будет БуДеТ
разрабатывается, в разработке,
встраивается
такое же окно вы будете получать кликнув на
кино. будете :)
Original comment by bobrikov
on 27 Jan 2013 at 4:03
bobrikov:
> такое же окно вы будете получать кликнув
на кино. будете :)
еще не скачанное или не инициированное на
скачивание ? тогда о чем мы тут с вами
говорим :)
разве что только сам способ...
т.е. если эта инфа будет добавляться в
файл-лист, и соответственно далее браться
из нее другими пользователями, то конечно
способ будет работать только если у
другого пользователя клиент (flylinkdc или его
клон впоследствии) добавил эту инфу в файл
лист.
И как в примере выше, я не смогу получить
информацию у пользователя чей клиент на pl++
и прочих (тот же FlylinkDC++ всех прошлых (а ныне
текущих) версий окажутся не удел), т.к. у
того пользователя подобной инфы в файл
листе соответственно нет.
из-за ограниченности круга клиентов для
такого способа, таки было бы как раз
неплохо предусмотреть этакий запасной
вариант :)
Original comment by entry....@gmail.com
on 27 Jan 2013 at 4:36
я с вами полностью согласен, но сейчас мы
очень усердно пилим эту фичу, пока на
остальные тождественные времени не
остаётся.
только она будет не в файллисте. на сервере.
и да, я лично ратую за обновлнение
пользователями своего по. понимаю, что это
не корректно и это лишь только мое мнение.
Original comment by bobrikov
on 27 Jan 2013 at 5:22
> "я с вами полностью согласен, но сейчас мы
очень усердно пилим эту фичу, пока на
остальные тождественные времени не
остаётся."
ясно :) спасибо
> "и да, я лично ратую за обновлнение
пользователями своего по."
ну как бы не все обновления бывают
одинаковы полезны :) см. мой Issue 904
поэтому пришлось вернуться на старую, но
относительно стабильную r501 10975
Original comment by entry....@gmail.com
on 27 Jan 2013 at 5:33
и это пилим. тоже усердно :)
Original comment by bobrikov
on 27 Jan 2013 at 5:54
решил покопаться с этой темой на досуге,
* https://docs.google.com/file/d/0B0-ygoNBOTDcamM0MW5aYjhhTGM/edit?usp=sharing
* https://docs.google.com/file/d/0B0-ygoNBOTDcdHJrbDFGNFo0VDQ/edit?usp=sharing
* https://docs.google.com/file/d/0B0-ygoNBOTDcdF9WUllvYXN4SmM/edit?usp=sharing
Как ни крути, настроенная среда дает
половину выполненного дела <_<
т.к. нет лицензии на про, начал мучить express
версию.
В конечном итоге выяснилось, что 2012
отказывается работать под Vista (из MS
семейства, дома ничего новее нету), далее
осталась 2010 версия.
VS2010Express идет без ATL, а значит пришлось
отдельно вытягивать полный WDK и от туда
пробовать использовать либы ATL, потом еще
также WindowsSDK.
в общем после 10гб трафика на весь этот софт
и потраченного времени :( express версия по
прежнему выдавала не мало косяков на
стадии компиляции и сборки.
Надоело, удалил весь этот мусор, поставил
пробную 30д версию, к которой также,
сплошные нарекания
------------
В общем то, просто выделил отдельную
функциональность, которая получает первые
250кб данных, ну а далее через MediaInfoLib (раз
используется, почему бы и не его)
получается title, language, format, bitrate и выводиться
в окошке.
флаги:
/** first block of data :: Issue 899 */
FLAG_INCOMPLETE = 0x2000,
FLAG_MINFO_AUDIO = 0x4000,
....
под типы:
static bool isVideoFileForInfo(const string& file)
{
string exts[14] = {".avi", ".mp4", ".mkv", ".mpeg", ".mpg", ".ogm", ".rm", "wmv", "mov", ".mpe", ".m1v", "m2v", ".flv", ".m2ts"};
for each(string ext in exts){
if(isSameFileExt(file, ext, true)){
return true;
}
}
return false;
}
...
обработка заголовков:
string MContainerInfo::getStrAudioTracks(string target) throw(FileException)
{
if(!File::isExist(target) || File::getSize(target) < 6 * 1024){
throw FileException("target is not correct");
}
static MediaInfoLib::MediaInfo dll;
if(!dll.Open(Text::toT(target))){
throw FileException("target is not open");
}
try{
const size_t count = dll.Count_Get(MediaInfoLib::Stream_Audio);
string output = "Audio Tracks ("+ Util::toString(count) +"):\n";
for(size_t i = 0; i < count; ++i){
string lang = Text::fromT(dll.Get(MediaInfoLib::Stream_Audio, i, _T("Language/String")));
string bitrate = Text::fromT(dll.Get(MediaInfoLib::Stream_Audio, i, _T("BitRate/String")));
string format = Text::fromT(dll.Get(MediaInfoLib::Stream_Audio, i, _T("Format")));
string title = Text::fromT(dll.Get(MediaInfoLib::Stream_Audio, i, _T("Title")));
output += Util::toString(i + 1) + ". " + title + " [" + lang + "][" + format + "] " + bitrate + "\n";
}
dll.Close();
return output;
}
catch(Exception&){}
dll.Close();
throw FileException("MediaInfoLib: parse error");
}
ну в общем прочую мелочь можно посмотреть в
патче: issue899.patch (
https://docs.google.com/file/d/0B0-ygoNBOTDcVTZBVms2cmo1WG8/edit?usp=sharing )
обработаны не все исключительные ситуации,
поэтому там еще дописывать. Также например:
полученная инфа, нигде не храниться,
поэтому при новом запрашивании будут снова
получены 250кб.
жаль конечно, что клиентами реализуются
минислоты по размеру файла:
free = free || (sz <= (int64_t)(SETTING(SET_MINISLOT_SIZE) * 1024));
а не по размеру запрашиваемого: $ADCGET file
TTH/M4SJQNWUASPXVGI7L.... 0 256000
Было бы очень кстати, а так приходиться
бороться с занятыми слотами.... :(
Кстати о размере: Лучше конечно будет
реализовать просмотр содержимого во время
получения, и как только были получены все
заголовки, то можно производить
финализацию процесса. В целом повреждений
не было и при 60кб для различных
контейнеров, но оставил 250. Не успел
разыскать информацию по структуре
заголовков и их длине.
Ну в общем способ универсален, работает в
независимости какой клиент у другого
пользователя. так что надеюсь на
какую-нибудь реализацию в RC сборке
Original comment by entry....@gmail.com
on 17 Feb 2013 at 10:39
Attachments:
Original issue reported on code.google.com by
entry....@gmail.com
on 23 Jan 2013 at 3:39Attachments: