MP4 Video Compressor в Java

Может ли кто-нибудь предложить мне хороший компрессор или стороннюю библиотеку для сжатия видео MP4 со стороны сервера (я использую Spring MVC).

Я узнал о FFMPEG и Xuggler, кроме этого, о любых поддерживаемых компрессорах для использования в java. Пожалуйста, дайте мне предложения или ссылки для подражания.


person User    schedule 26.04.2018    source источник
comment
выберите FFMPEG с открытым исходным кодом и хорошо документированным, также он имеет видеокодеры h264 и h265, поэтому у вас также есть выбор, чтобы выбрать тот, который когда-либо соответствовал вашим требованиям. для получения дополнительной информации (ffmpeg.org/ffmpeg-all.html)   -  person Awais fiaz    schedule 26.04.2018
comment
руководство по установке для FFMPEG (trac.ffmpeg.org/wiki/CompilationGuide)   -  person Awais fiaz    schedule 26.04.2018
comment
Спасибо за ваш ответ. Я пройду по предложенной вами ссылке.   -  person User    schedule 26.04.2018
comment
вы можете предложить вам FFMPEG, потому что его очень просто использовать, остальное зависит от вашего выбора   -  person Awais fiaz    schedule 26.04.2018
comment
У вас есть примеры ссылок? если у вас есть, отпишитесь здесь.   -  person User    schedule 26.04.2018


Ответы (2)


Использована оболочка FFMPEG для сжатия видео. вот ссылка для скачивания: https://www.ffmpeg.org/download.html

github: https://github.com/bramp/ffmpeg-cli-wrapper

вот код:

ffmpeg = new FFmpeg("D:/ffmpeg-20180429-cae6f80-win32-static/ffmpeg-20180429-cae6f80-win32-static/bin/ffmpeg");
ffprobe = new FFprobe("D:/ffmpeg-20180429-cae6f80-win32-static/ffmpeg-20180429-cae6f80-win32-static/bin/ffprobe");

FFmpegBuilder builder = new FFmpegBuilder()
                                 .setInput(input)     // Filename, or a FFmpegProbeResult
                                 .overrideOutputFiles(true) // Override the output if it exists
                                 .addOutput(output)   // Filename for the destination
                                 .setFormat("mp4")       // Format is inferred from filename, or can be set
                             //  .setTargetSize(250_000) // Aim for a 250KB file
                                 .disableSubtitle()       // No subtiles
                                 .setAudioChannels(1)                   // Mono audio
                             //  .setAudioChannels(2)
                                 .setAudioCodec("aac")       // using the aac codec
                                 .setAudioSampleRate(48_000) // at 48KHz
                                 .setAudioBitRate(32768)     // at 32 kbit/s
                             //  .setAudioBitRate(126000)
                                 .setVideoCodec("libx264")     // Video using x264             
                                 .setVideoFrameRate(24, 1)     // at 24 frames per second
                                 .setVideoResolution(1280, 720) // at 640x480 resolution
                        //       .setVideoResolution(1024, 768)
                        //       .setVideoResolution(640, 480)
                                 .setVideoBitRate(762800)  
                                 .setStrict(FFmpegBuilder.Strict.EXPERIMENTAL) // Allow FFmpeg to use experimental specs
                                 .done();
     FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);         
     executor.createJob(builder).run(); // Run a one-pass encode
person User    schedule 10.08.2018

Взгляните на jcodec

https://github.com/jcodec/jcodec

Он имеет декодер основного профиля H.264 и кодировщик базового профиля H.264, а также поддержку мультиплексора/демультиплексора MP4.

Кроме того, вы можете рассмотреть решение на основе OSS C и попробовать конвертер C-> Java. Это может быть ужасно сложной задачей, но будет много хороших библиотек.

person Mikhail Kholodkov    schedule 26.04.2018
comment
Как вы можете видеть на странице проекта GitHub, последний коммит был сделан 15 марта 2018 года. Так что да, он не выглядит мертвым. - person Mikhail Kholodkov; 26.04.2018
comment
и последний коммит FFMPEG был 26 апреля 2018 г. - person Awais fiaz; 26.04.2018
comment
@MikhailKholodkov Примера сжатия нет, и я тоже погуглил. Можете ли вы прислать мне ссылки на примеры (jcodec). - person User; 27.04.2018
comment
Вам нужно использовать класс SequenceEncoder. У меня нет образцов по этой теме, но пока поищите SequenceEncoder в Stackoverflow. - person Mikhail Kholodkov; 27.04.2018
comment
Вероятно, это было бы полезно stackoverflow. ком/вопросы/16789037/ - person Mikhail Kholodkov; 27.04.2018