2010-01-11 56 views
24

Tôi cần phát lại video đơn giản trong Java.Phát lại video bằng Java (JMF, Fobs4JMF, Xuggler, FMJ)

Dưới đây là yêu cầu của tôi:

  • SẢN XUẤT CHẤT LƯỢNG

  • file mở và giải mã video mà video và codec âm thanh có thể được lựa chọn bởi tôi. I.E Tôi có thể chọn các codec hoạt động tốt.

  • Có thể chơi, tạm dừng, seekToFrame HOẶC seekToTimedừng phát lại. Về cơ bản tôi muốn có thể chơi các phân đoạn của một tập tin video duy nhất trong một thời trang phi tuyến tính. Ví dụ: tôi có thể muốn phát đoạn 20.3 giây đến 25.6 giây, tạm dừng trong 10 giây và sau đó phát đoạn 340.3sec đến 350.5 giây, v.v.

  • Trong khi phát lại, video và âm thanh phải được đồng bộ hóa.

  • Video phải được hiển thị trong Swing JComponent.

  • Phải có khả năng sử dụng trong một sản phẩm thương mại mà không cần phải có mã nguồn mở (IE LGPL hoặc Comercial là tốt)


Nghiên cứu của tôi đã dẫn tôi đến các giải pháp sau:

Tôi đã thực hiện một nguyên mẫu nhanh và điều này dường như làm những gì tôi cần. Tôi có thể phát một đoạn video bằng cách sử dụng:

player.setStopTime(new Time(end)); 
player.setMediaTime(new Time(start)); 
player.start(); 

Trong khi Fobs4JMF có vẻ hoạt động, tôi cảm thấy chất lượng của mã kém và dự án không còn hoạt động nữa. Có ai biết về bất kỳ sản phẩm nào sử dụng Fobs4JMF không?


  • Viết một ứng dụng Flash mà đóng một video và sử dụng JFlashPlayer để đưa nó vào ứng dụng Java Swing tôi

Không giống như Java, Flash là rực rỡ tại chơi video. Tôi có thể viết một ứng dụng Flash nhỏ với các phương pháp:

open(String videoFile), 
play(), 
pause(), 
seek(int duration), 
stop() 

Sau đó, đưa nó vào sử dụng Java JFlashPlayer mà có thể gọi chức năng Flash từ Java.

Điều tôi thích về giải pháp này là phát lại video trong Flash phải là đá chắc chắn. Có ai đã sử dụng JFlashPlayer để phát video bằng Java không?


  • Viết một media player đơn giản trên đầu trang của Xuggler

Xuggler là một wrapper FFMpeg cho Java mà có vẻ là một dự án có chất lượng khá tích cực và cao. Tuy nhiên, việc thực hiện phát lại video đơn giản được mô tả trong các yêu cầu không phải là tầm thường (Tìm kiếm đặc biệt) nhưng một số công việc đã được thực hiện trong MediaTools MediaViewer, đây sẽ là cơ sở để xây dựng từ đó.


  • Sử dụng FMJ

Tôi đã cố gắng để có được FMJ để làm việc nhưng đã không có những thành công cho đến nay.


Tôi sẽ đánh giá cao ý kiến ​​của bạn về vấn đề của tôi.

Trả lời

11

Anh trai có thể kêu lên Xuggler không?

+0

Tôi cần rất nhiều trợ giúp về xuggle, làm cách nào tôi có thể thêm hai video để tạo một video trong xuggle? Tôi đang thử google nhưng nó không giúp đỡ nhiều ... –

+2

Ở đâu trên trái đất là liên kết tải xuống thực sự cho Xuggler ?! – aaronsnoswell

+0

Xuggler không thể tìm kiếm khung hình cho mp3 hoặc m4a. Đó là tiêu đề ffmpeg bị thiếu. – taymedee

2

JavaFX có sẵn một số codec video và âm thanh hoạt động. Đó có thể là giải pháp với sự hỗ trợ rộng nhất hiện tại.

+0

Hi jsight và cảm ơn cho câu trả lời của bạn. Tôi biết rằng JavaFX hỗ trợ video nhưng tiếc là tôi đã phải loại bỏ nó vì rất khó để nhập các thành phần JavaFX vào một ứng dụng Java Swing. Có nhiều cách, nhưng chúng không được hỗ trợ. – ksullivan

+0

Xem thêm: http: //dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf và http://www.google.com/url?sa=t&source=web&ct=res&cd=3&ved=0CBEQFjAC&url=http%3A%2F%2Flobobrowser.wordpress. com% 2F2008% 2F12% 2F29% 2Fjavafx-video-in-a-swing-ứng dụng-kỹ thuật-doable% 2F & ei = -DhLS97jCsKztgf87cDkDQ & usg = AFQjCNHU942l5cD-Wwe-fn7gSiW8BwFP7Q & sig2 = 0RkjWw98VIKfs1egM4gN7g – jsight

+0

Cảm ơn những liên kết đó. Có vẻ như ngoài việc không có hỗ trợ chính thức cho JavaFX trong Java, sẽ có vấn đề phân phối (đặc biệt là các codec video) – ksullivan

2

Tôi đã sử dụng jffmpeg giống như cách bạn sử dụng FOBS, nó hoạt động khá tốt, mặc dù tôi chưa so sánh chúng.

Tôi cũng muốn thấy một cách dễ dàng để giao tiếp với các codec gốc theo cách mà JavaFX thực hiện, nhưng dường như không có sự tích hợp thực sự giữa JavaFX và Java.

Cũng đã có một số công việc cố gắng để có được thư viện VLC libvlc vào java. Tôi đã không thử nó và sẽ được quan tâm để nghe lại từ bất cứ ai có.

+0

đánh giá cao điều này đã hơn một năm nay, nhưng nếu bạn vẫn quan tâm, hãy xem câu trả lời của tôi! – berry120

+0

cảm ơn, vâng, nó vẫn là một vấn đề mở đối với tôi và tôi sẽ xem xét vấn đề này. – paul

2

chưa thử Xuggler (mà tôi quan tâm) nhưng tôi đang có thời gian thích hợp với VLCJ. Những hạn chế tôi tìm thấy trong nó chỉ là bạn phải có VLC cài đặt trước khi ứng dụng của bạn.

+2

Bạn không - bạn có thể phân phối libvlc với ứng dụng của bạn, đó là những gì tôi làm. – berry120

+0

Đừng cố gắng để nhận được hỗ trợ cho vlcj mặc dù, anh chàng là một **** ing chích. –

4

Trong suy nghĩ của tôi, VLCJ là con đường phía trước cho loại điều này. Tôi thích Xuggler cho việc mã hóa/chuyển mã, nhưng tiếc là nó rất phức tạp để thực hiện phát lại đơn giản và giải quyết tất cả các vấn đề đồng bộ hóa và như vậy - và nó cảm thấy rất giống với việc phát minh lại bánh xe.

Điều duy nhất với VLCJ là để làm cho nó hoạt động đáng tin cậy với nhiều người chơi mà tôi đã phải sử dụng cho những người chơi quá trình. Khuôn khổ không phải là điều đơn giản nhất trên thế giới để có được tại chỗ, nhưng khi nó ở đó nó hoạt động tốt đẹp. Tôi hiện đang chạy 3 người chơi quá trình trong ứng dụng của tôi bên cạnh không có vấn đề gì.

Thông báo trước khác là trình phát đa phương tiện được nhúng sẽ không hoạt động với thành phần xoay, chỉ là canvas nặng - nhưng điều đó chưa chứng minh được vấn đề gì với tôi. Nếu có, bạn có thể sử dụng trình phát phương tiện trực tiếp để có được bộ đệm và hiển thị trên mọi thứ bạn chọn, nhưng nó sẽ ăn vào CPU của bạn nhiều hơn một chút (mặc dù không nhiều hơn những người chơi khác sử dụng phương pháp này)