Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Разработка караоке


Автор: 123qw 29.12.2010, 00:57
Есть приложение на java с использованием swing. Требуется добавить к этому приложению модуль реализующий караоке. Место на форме и панель, куда будет выводиться текст уже имеется. У меня только одна идея:
1) замерять длительность каждого слова
2) выводить в одном потоке непосредственно песню
3) в другом потоке выводить текст, хотя бы по словам, причем устанавливать принудительную задержку в соответствии с длительностью каждого слова
Но в песне может содержаться 100 слов и более, поэтому это слишком затратный метод решения проблемы.
Есть ли для java уже разработанные библиотеки для такой надобности?
Думаю, что кто-то уже сталкивался с нечто подобным и может посоветовать в какую сторону посмотреть 

Автор: mgarin 29.12.2010, 03:13
Либо у вас в наличии есть нарезка песни в mp3 (или еще в чем) по словам, либо вам придется создавать все задержки для каждого слова и их длительности самому. 
Есть третий вариант, конечно, - написать свой мега-супер парсер для выцепливания слов из звука...
Кхм, думаю стоит забыть о 3ем варианте - слишком затратно.

Серьезно говоря - лучшим вариантом мне видится - для каждой песни иметь 1 файл типа "name.mp3" и 1 "name.timing" (или что-то типа).
Соответственно во 2ой файл сами нарезаете песню как вам удобней хранить такие данные, как вариант (честно, придумал на ходу):
0-5000 I
5001-6000 Love you!
{break}
6001-10000 Soooo
10001-12000 much!

Собственно, первый промежуток указывает тайминг (и из него также получается скорость показа слов на экране) и далее текст.
Самый простой вариант...
Ну и {break} как вариант для обозначения следующей фразы или тому подобного.

Далее дело техники - воспроизводите песню и параллельно показываете текст учитывая тайминги из файла

P.S. Вероятно, конечно, я изобретаю велосипед...
Думаю подобные форматы файлов с таймингами под караоке уже давно существуют, нужно лишь поискать

Добавлено @ 03:16
P.P.S. 1ая же ссылка из google вывела на что-то эдакое, похожее (судя по всему приложение для удобного создания тайминг файлов):
http://docs.aegisub.org/manual/Karaoke_Timing_Tutorial
Но это так... в догонку

Автор: 123qw 29.12.2010, 04:19
я так и думал сделать, но это довольно муторно, хочется более общего решения, типа нашел песню в формате караоке, или привел ее к такому формату с помощью какой-нибудь программы, и потом отобразил ее в программе, только как работать с данным форматом я не знаю

Автор: techmax 29.12.2010, 04:38
Найти песни в формате для караоке. и потом распарсить этот файл. В них наверное уже предусмотрены все тайминги и т.п.
Вот кстати есть реализация http://sourceforge.net/projects/plarpebu/

Автор: mgarin 29.12.2010, 12:35
Как вариант еще, можете поискать фильмы с нужными песнями и вырезать оттуда из субтитров тайминги, если там под песни есть тексты smile

А вообще, если и есть готовое решение, то вряд ли оно бесплатное.
Во-первых, сами песни не бесплатные, если уж о том говорить (ну по большей части, не думаю что у вас что-то экстравагантное будет)
Во-вторых, в любом случае если это уже кто-то сделал, то это заняло кучу времени и ресурсов и врядли он(они) распространяют все это во free доступе

Автор: 123qw 30.12.2010, 01:14
нашел видео файл с нужным мне караоке, думаю использовать его, вот только как попросить java воспроизводить такие файлы я не знаю, если кто знает, пожалуйста дайте пример, или хотя бы ткните носом в ссылку, сам я что-то не могу найти 

Автор: mgarin 30.12.2010, 03:28
Цитата(123qw @  30.12.2010,  01:14 Найти цитируемый пост)
нашел видео файл с нужным мне караоке, думаю использовать его, вот только как попросить java воспроизводить такие файлы я не знаю

Вы предлагаете угадать что за волшебный формат, что Вы нашли? smile

Я, конечно, могу предположить что это некий файл субтитров (ass/sub/...)...
Если так, то что Вы имеете в виду под воспроизведением?
Во всех этих форматах в полне читабельном (да да, даже обычным Notepad'ом) формате представлены нужные вам данные - считывайте их и используйте как хотите. Распарсить их думаю легко можно. Может даже уже есть готовые парсеры

Автор: 123qw 30.12.2010, 03:52
на ютьбе нашел именно ролик с караоке, который мне нужен, его хочу использовать, т.е. получится, что у меня часть программы будет обычным видеопроигрывателем, вот только не могу найти толкового примера реализации видеопроигрывателя в java

Автор: mgarin 30.12.2010, 10:40
Мне только интересно, как вы с ютуба скачаете ролик, а тем более его субтитры (если вы их собираетесь использовать, конечно)
Видео проигрыватель тут уже отходит на 2ой план...

Автор: 123qw 30.12.2010, 11:02
тащу из кеша, а субтитры вшиты в кадры, поэтому получается, что задача сводится к встраиванию в мое приложение видеопроигрывателя

Автор: mgarin 30.12.2010, 12:13
Нормальных кросс-платформенных решений особо нет. Подчеркиваю нормальных

Тот же JMF от разработчика никто не отменял, но ни одно современное видео (по крайней мере сколько я ни пробовал вариантов) он не может воспроизвести.
Можете посмотреть насчет него, скажем, тут:
http://www.deitel.com/articles/java_tutorials/20060422/PlayingVideowithJMF/
Там же есть ссылка на скачивание

Соответственно помимо этого остаются нативные решения, как в случаях со встраиванием браузеров
Вот, например:
http://djproject.sourceforge.net
Там есть возможности встраивания WMP или VLC плееров. Далее все будет зависеть от них - есть ли на системе, есть ли нужные кодеки под видео и т.д.

Автор: jk1 31.12.2010, 14:54
123qw, 

 Правила форума: http://forum.vingrad.ru/index.php?act=boardrules

Одна тема - один вопрос  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)