人们总是说发布一个新问题所以我发布了一个与Generate video with ffmpeg for JavaFX MediaPlayer相关的新问题
我使用的图片可以从这里下载https://www.dropbox.com/s/mt8yblhfif113sy/temp.zip?dl=0。这是一个带有18k图像的2.2GB zip文件,仍在上传,可能需要一些时间。图像是3D对象的切片。我需要每10ms到20ms显示一次图像。我尝试使用Java,但是速度不能超过30ms +所以现在我正在尝试生成一个能够以我想要的速度显示图像而不用担心内存或CPU能力的视频。
人们将使用我的软件切片对象,然后生成稍后播放的视频。播放器可以在便宜的笔记本电脑上运行,也可以在Raspberry Pi上运行。我需要确保切片器可以在任何操作系统上运行,并且人们不需要安装太多额外的东西来使其工作。如果我可以只包含下载应用程序所需的所有内容,那将是最好的。
我也发布在这里 https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=15&t=2474&sid=4f7a752f909202fbec19afc9edaf418c
我使用的是Windows 7,我安装了VLC。 ffmpeg版本是
ffmpeg version N-72276-gf99fed7 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC)
我还尝试了在链接问题上发布的命令行
这一行产生了视频而JavaFX没有任何错误
ffmpeg -f image2 -r 50 -i "Mandibular hollow 1 micron.gizmofill%d.gizmoslice.jpg" -s 1638x1004 -vcodec mpeg4 -qscale 1 -f mp4 Timelapse.mp4
这一行也产生了视频,但是JavaFX有一个错误:"引起:MediaException:MEDIA_UNSUPPORTED:无法识别的文件签名!"
ffmpeg -f image2 -r 50 -i "Mandibular hollow 1 micron.gizmofill%d.gizmoslice.jpg" -s 1920x1080 -vcodec mpeg4 -qscale 1 Timelapse.avi
我也尝试过这两个传递编码。它产生了视频,但没有播放
ffmpeg -r 50 -i "Mandibular hollow 1 micron.gizmofill%d.gizmoslice.jpg" -s 1638x1004 -r 50 -b:v 1550k -bt 1792k -vcodec libx264 -pass 1 -an combined50.flv && ffmpeg -y -r 50 -i "Mandibular hollow 1 micron.gizmofill%d.gizmoslice.jpg" -s 1638x1004 -r 50 -b:v 1550k -bt 1792k -vcodec libx264 -pass 2 -vpre hq -acodec libfaac -ab 128k combined50.flv
这是我的JavaFX代码。正如您所看到的,我尝试了Oracle视频,并且工作正常。
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
@FXML
private MediaView mediaView;
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
// final File f = new File("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
final File f = new File("C:/Users/kobus/Dropbox/JavaProjects/Gizmetor/temp/Timelapse.avi");
// "C:/Users/kobus/Dropbox/JavaProjects/Gizmetor/temp/combined50.avi.flv"
// http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv
Media media = new Media(f.toURI().toString());
// Media media = new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
mediaPlayer.play();
mediaView.setMediaPlayer(mediaPlayer);
label.setText("Hello World!");
System.out.println(mediaPlayer.isAutoPlay());
// mediaView
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}