نوشته شده توسط
vahid-p
لایبرری استاندارد جاوا خصوصا JavaFX کلاسهایی برای اینکار داره. البته نباید انتظار داشته باشید هر فرمت و کدکی رو پشتیبانی کنه (مثلا mpeg4 رو پشتیبانی میکنه البته بسته به نوع سیستم عامل نیازمندی هایی وجود داره)
کافیه سرچ بزنید how to play video in javafx
برای صدا هم همینطور
ولی اگر خیلی نرم افزار جامعی میخواید بسازید، باید دست به کد باشید و بعید میدونم همه کدکها لایبرریش وجود داشته باشه برای جاوا. هر چند سرچ کنید لایبرری هایی براش نوشته شدن.
یکی از لایبرری هایی که به صورت پیشفرض در JRE وجود نداره، لایبرری های:
http://www.xuggle.com/xuggler
https://github.com/bramp/ffmpeg-cli-wrapper
https://github.com/caprica/vlcj
و Java Media Framework
مثلا در لایبرری اولی گفته A free open-source library for Java developers to uncompress,manipulate, and compress recorded or live video in real time. که دقیقا چیزی هست که شما میخوایید
اگر هم نمیخوایید زیاد درگیر بشید همون کلاسهای JavaFX فکر میکنم کفایت کنه (لیست فرمت ها و کدکهای پشتیبانی شده و پرتکل ها و... در لینک
https://docs.oracle.com/javase/8/jav...e-summary.html با آی پی ایران نمیتونید ببینید).
شما با JavaFX شروع کنید، دیدید محدودیت دارید برید سروقت سایر لایبرری ها
خدا پدر مادر مخترع اینترنت را بیامرزد چند نمونه کد پیدا کردم که یکی خیلی عالی بود JMF بی صاحب شده فکر میکنم بخاطر اینکه JavaFx هست دیگه این API رو توسعه نمیدهند. خیلی راحت Direct url فیلم و پادکست دادم بدون دغدغه پخش کرد. از JavaFx استفاده کرده. در ادامه نمونه کد را میزارم صلواتی استفاده کنید.
/* * To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Dany
*/
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.collections.MapChangeListener;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaView;
import javafx.scene.media.Track;
import javafx.stage.Stage;
/**
* A sample media player which loops indefinitely over the same video
*/
public class MediaPlayer extends Application {
// private static final String MEDIA_URL = "http://hw6.asset.aparat.com/aparat-video/74a6b115918d074440213e6ed016bd3c6982112-270p__64853.mp4?direct=1";
private static final String MEDIA_URL = "http://tehranpodcast.ir/wp-content/uploads/2016/11/DialogueBox-Episode-09.mp3";
private static String arg1;
@Override
public void start(Stage stage) {
stage.setTitle("Media Player");
// Create media player
Media media = new Media((arg1 != null) ? arg1 : MEDIA_URL);
javafx.scene.media.MediaPlayer mediaPlayer = new javafx.scene.media.MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
mediaPlayer.setCycleCount(javafx.scene.media.Media Player.INDEFINITE);
// Print track and metadata information
media.getTracks().addListener(new ListChangeListener<Track>() {
public void onChanged(Change<? extends Track> change) {
System.out.println("Track> " + change.getList());
}
});
media.getMetadata().addListener(new MapChangeListener<String, Object>() {
public void onChanged(MapChangeListener.Change<? extends String, ? extends Object> change) {
System.out.println("Metadata> " + change.getKey() + " -> " + change.getValueAdded());
}
});
// Add media display node to the scene graph
MediaView mediaView = new MediaView(mediaPlayer);
Group root = new Group();
Scene scene = new Scene(root, 800, 600);
root.getChildren().add(mediaView);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
if (args.length > 0) {
arg1 = args[0];
}
Application.launch(args);
}
}