Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Видеопроигрыватель
Список форумов
 ->  Swing, AWT & SWT


На страницу Пред.  1, 2 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
nightman13 : 40
Новичок

СообщениеЯнв 31, 2012 19:19 
Ответить с цитатой
а насчет перемотки так и не могу понять, делаю следующим образом:
Код:
JSlider source = (JSlider) evt.getSource();
            if (!source.getValueIsAdjusting())
            {
                int pos = (int) source.getValue();
                position = (v.fs*pos)/100;
                ta.stop();
                tv.stop();
                a = new Audio(filename, speed);
                v = new Video(filename, screen, time, timel, speed);
                ta = new Thread(a);
                tv = new Thread(v);
                ta.start();
                tv.start();
                v.positionV=position;
                a.positionA=position;

вроде бы переходит на нужное место, но видео останавливается на какое-то время, и больше не синхронизировано со звуком, да и звук при чтении .avi начинается неправильно воспроизводиться, а вот при чтении mp4 со звуком все нормально
К началу Посмотреть профиль Отправить личное сообщение
nickliverpool : 18
Новичок

СообщениеЯнв 31, 2012 21:53 
Ответить с цитатой
Пока ничем помочь не могу, нужно иметь работающий код на руках и свободное время. Свободное время у меня появится только в пятницу, так что если до пятницы решить проблему не сможешь, скинь код (лучше архив с исходниками) и я попытаюсь разобраться.
К началу Посмотреть профиль Отправить личное сообщение
nightman13 : 40
Новичок

СообщениеФев 01, 2012 14:38 
Ответить с цитатой
вот последняя версия проекта
http://ifolder.ru/28444894
К началу Посмотреть профиль Отправить личное сообщение
nickliverpool : 18
Новичок

СообщениеФев 07, 2012 20:42 
Ответить с цитатой
Посмотрел... Насчет перемотки, думаю, как вариант можно сделать так.
У picture (экземпляра класса IVideoPicture) и samples (экземпляра класса IAudioSamples) есть метод getTimeStamp(), возвращающий Presentation Time Stamp в микросекундах. C помощью которого, например, можно будет отображать только те кадры, timestamp которых больше заданного ползунком для перемотки.
Серьезный минус этого метода в том, что для получения timestamp, например, у кадра, придется его декодировать. Соответственно, для перемещения к концу файла придется декодировать весь видеопоток, что очень плохо.
Либо, думаю, можно читать timestampt у packet, но тогда для получения времени в микросекундах или миллисекундах придется в зависимости от того, packet ли это видео или аудиопотока, самостоятельно преобразовывать число, получаемое при вызове packet.getTimeStampt() (Подробнее тут -> http://wiki.xuggle.com/Concepts). Изменение позиции в файле будет происходить быстрее, но там могут быть свои приколы или вообще этот способ может не работать.
Самый лучший вариант - это воспользоваться возможностями контейнера avi, mkv, mp4 и переместиться в позицию близкой к заданной ползунком. В Xuggle это, как я понял, seekKeyFrame, но надо разбираться с его использованием. Примеров в нете как-то мало. Можно глянуть на:
http://code.google.com/p/xuggle/source/browse/trunk/java/xuggle-xuggler/test/src/com/xuggle/xuggler/ContainerSeekExhaustiveTest.java?r=1018
http://code.google.com/p/xuggle/source/browse/trunk/java/xuggle-xuggler/test/src/com/xuggle/xuggler/ContainerTest.java?r=1026
http://pastebin.com/dN908Fhj
http://jpcsp.googlecode.com/svn-history/r2257/trunk/src/jpcsp/GUI/UmdVideoPlayer.java
https://github.com/mconf/bbbot/blob/master/bot/src/main/java/org/mconf/bbb/bot/XugglerFlvReader.java Но не знаю работающие ли они...
И, думаю, стоит если есть время изменить программу и по возможности обойтись только одним потоком для видео и аудио, а не пересоздавать их заново.
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 2 из 2
На страницу Пред.  1, 2
Список форумов
 -> Swing, AWT & SWT


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru