Воспроизведение видеокодека без потерь в Java - PullRequest
3 голосов
/ 27 декабря 2008

Мне нужно закодировать последовательность кадров с помощью видеокодека без потерь и воспроизвести их в приложении Java. Меня не волнует размер файла. Выходные кадры должны точно соответствовать входным кадрам. Кодеки с потерями не делают этого даже на высоких скоростях.

Ни один из этих известных видеокодеков без потерь не поддерживается в JMF или FMJ :

  • HuffYUV
  • CorePNG
  • Lagarith
  • FFV1
  • ...

Вам известен какой-нибудь видеокодек без потерь, который поддерживается в Java?

Другие варианты, которые я рассмотрел:

  • анимированный GIF: гарантируется ли при воспроизведении постоянная частота кадров, как у настоящих видеокодеков?
  • загрузить и отобразить отдельные кадры: насколько сложно будет делать это с постоянной частотой кадров и без потери слишком большого количества кадров?
  • Proce55ing: для библиотеки воспроизведения видео требуется Quicktime, которого нет на моей платформе.

РЕДАКТИРОВАТЬ: Я наконец решил довольствоваться MotionJPEG JMF (нестандартный) с высоким качеством. Это не совсем без потерь, но все же намного лучше, чем MPEG4.

Ответы [ 3 ]

1 голос
/ 28 декабря 2008

FMJ поддерживает экспериментальный метод хранения / воспроизведения серии изображений PNG во многом так же, как MJPEG - это серия изображений JPEG. Один - это экспериментальный формат файла XML, который кодирует PNG (довольно раздутый), а другой - формат HTTP x-multipart-mixed-replace, который FMJ поддерживает в формате файла, заканчивающемся расширением .mmr

1 голос
/ 28 декабря 2008
  • Анимированные GIF: да, вы можете определить частоту кадров анимированных GIF (фактически вы можете установить задержку для каждого отдельного кадра)

  • отображение кадров вручную: зависит от аппаратного обеспечения, частоты кадров и размера изображений. Разрешение HD на скорости 30 кадров в секунду будет затруднено без аппаратной поддержки, размер миниатюр не должен быть проблемой на любой платформе.

  • Другая альтернатива: в зависимости от того, что вы хотите сделать, вы можете подумать о «дистанционном управлении» другим проигрывателем или фреймворком, возможно, с каким-то собственным кодом. Например, вставьте mplayer в * nix / X11 или используйте COM для управления WMP или DirectShow в Windows.

0 голосов
/ 27 декабря 2008

Ну, так как вы говорите, что размер файла не является проблемой, gzip / bzip2 может быть быстрым и безболезненным вариантом. Это не даст максимального сжатия, но может стать последним средством, если вам не удастся найти лучший ответ.

Gzip-файлы можно прозрачно открывать с помощью java.util.zip.GZIPInputStream, и аналогичные интерфейсы доступны для Bzip2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...