Почему javaFx запускает конвертированный mp4, но не оригинал? - PullRequest
0 голосов
/ 20 февраля 2020

Проще говоря, у меня есть эта проблема, где у меня есть файл mp4 с видео. Если я запускаю его прямо в коде, размещенном здесь, окно открывается, но оно белое / пустое. Нет mov ie показ. Но если я запускаю оригинальное mov ie через ffmpeg , это работает.

ffmpeg -i original.mp4 -s hd720 convert.mp4

Обратите внимание, что я конвертирую из mp4 в mp4, я просто изменяю размер на hd720. Итак, вопрос в том, зачем мне это делать?

Мой код:

package mypack;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class MyPlayer extends Application{

    public static void main(String[] args) {
        launch(args);
    }


    public void start(Stage primaryStage) throws Exception {
        BorderPane content = new BorderPane();

         Scene scene = new Scene(content, 540, 209);
         primaryStage.setScene(scene);
         primaryStage.setScene(scene);

         primaryStage.setTitle("Hello Media");

         String source;
         source = "file:///C:/Users/Noob/Desktop/Movies/original.mp4";
//       source = "file:///C:/Users/Noob/Desktop/Movies/converted.mp4";


         Media media = new Media(source);

         MediaPlayer mediaPlayer = new MediaPlayer(media);
         mediaPlayer.setAutoPlay(true);

         MediaView mediaView = new MediaView(mediaPlayer);
         ((BorderPane) scene.getRoot()).getChildren().add(mediaView);
         primaryStage.show();

    }

}

Для тех аудио / видео любителей afficionados / ffmpeg. Это то, что получается из оригинала.

ffprobe -i original.mp4

ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200122
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000029bc02bc540] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000029bc02bc540] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'original.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2020-02-18T17:09:21.000000Z
  Duration: 00:00:22.56, start: 0.000000, bitrate: 1631 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 1624 kb/s, 29.97 fps, 29.97 tbr, 29970 tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2020-02-18T17:09:21.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC Coding

Может ли это быть связано с размером? К большому? Так как в оригинале говорится 3840x2160? И я делаю его меньше с HD720? Если это так, я бы ожидал, по крайней мере, угол показа mov ie вместо полностью пустого окна. Я новичок в этом, так что если вы также дадите хорошую ссылку на ffmpeg (исключая официальные страницы) и / или хорошую страницу с учебником / информацией по форматированию видео, предназначенную для начинающих, это будет очень полезно. Насколько я понимаю, есть контейнеры, которые содержат потоки, и каждый поток может иметь разные кодеки в зависимости от контейнера.

...