Сжатое видео mp4 занимает слишком много времени для воспроизведения (exoplayer) - PullRequest
0 голосов
/ 04 мая 2018

Видео (mp4) записывается с камеры Android и отправляется на сервер, здесь я использую обертку ffmpeg для сжатия видео [44 МБ видео до 5,76 МБ]. сжатие работает хорошо, но когда я отправляю видео для воспроизведения в Android (exo player), для запуска требуется слишком много времени.

ниже мой код для сжатия:

 FFmpegBuilder builder = new FFmpegBuilder()
                   .setInput("D:/dummyVideos/myvideo.mp4")     // Filename, or a FFmpegProbeResult
                   .overrideOutputFiles(true) // Override the output if it exists
                   .addOutput("D:/dummyVideos/myvideo_ffmpeg.mp4")   // Filename for the destination
                   .setFormat("mp4")       // Format is inferred from filename, or can be set
                   .disableSubtitle()       // No subtiles
                   .setAudioChannels(1)         // Mono audio
                   .setAudioCodec("aac")       // using the aac codec
                   .setAudioSampleRate(48_000) // at 48KHz
                   .setAudioBitRate(32768)     // at 32 kbit/s
                   .setVideoCodec("libx264")     // Video using x264
                   .setVideoFrameRate(24, 1)     // at 24 frames per second 
                   .setVideoResolution(1280, 720) // at 640x480 resolution
                   .setVideoBitRate(762800)
                   .setStrict(FFmpegBuilder.Strict.EXPERIMENTAL) // Allow FFmpeg to use experimental specs
                   .done();

Может кто-нибудь сказать мне, почему видео занимает слишком много времени для воспроизведения в Exo Player? Что-то не так в сжатии?

1 Ответ

0 голосов
/ 10 августа 2018

Основываясь на комментариях, которые я пишу здесь, из-за того, что видео атома "moov" занимает много времени, вот описанный блог: https://rigor.com/blog/2016/01/optimizing-mp4-video-for-fast-streaming

код:

try{
        QtFastStart.fastStart(inputFile, outputFile); // Adds moov to your input
                   // Now your output file is ready to stream!
        }catch (QtFastStart.MalformedFileException m){
            logger.error("QT", m);
        }catch (QtFastStart.UnsupportedFileException q){
            logger.error("QT", q);
        }catch (IOException i){
            logger.error("QT", i);              
        }
...