0

Local windows can be used, but it cannot be used when deployed to linux. Linux is a centos system, x86 architecture, 64-bit, and windows uses an intel i5 processor

2022-10-25 23:40:05.296 ERROR 14124 --- [nio-9979-exec-3] ws.schild.jave.Encoder                   : Process exit code: 137  to 69f1ba49-1f3f-4cd7-bd89-3cf7c877caed.mp4
ws.schild.jave.EncoderException: Exit code of ffmpeg encoding run is 137
    at ws.schild.jave.Encoder.encode(Encoder.java:572)
    at ws.schild.jave.Encoder.encode(Encoder.java:351)
    at ws.schild.jave.Encoder.encode(Encoder.java:318)

I hope that the old man who will teach me again, I will be very grateful

/**
     * 将mov格式频频转换为MP4
     * @param inputStream
     * @return 转换后的文件
     */
    public static InputStream movToMp4(InputStream inputStream, String type){
        //定义本地路径(mov)
        String temporaryMovUrl = temporary + "/" + UUID.randomUUID().toString() + "." + type;
        //定义本地路径(mp4)
        String temporaryMp4Url = temporary + "/" + UUID.randomUUID().toString() + ".mp4";
        try {
            //保存mov文件到临时目录
            writeToLocal(temporaryMovUrl,inputStream);
            //从临时文件加载mov视频
            File source = new File(temporaryMovUrl);
            //定义转换为mp4的输出地址
            File target = new File(temporaryMp4Url);
            AudioAttributes audio = new AudioAttributes();
//            audio.setCodec("libmp3lame");
//            audio.setCodec("aac");
            //设置比特率
            audio.setBitRate(236000 / 2);
            //设置音频通道数
            audio.setChannels(2);
            //设置采样率
            audio.setSamplingRate(8000);
            VideoAttributes video = new VideoAttributes();
//            video.setCodec("h264");
//            video.setCodec("libx264");
            video.setBitRate(new Integer(1000000));
            video.setFrameRate(new Integer(25));
            EncodingAttributes attrs = new EncodingAttributes();
            attrs.setOutputFormat("mp4");
            //设置最长截取30秒
            attrs.setDuration(new Float("30"));
            attrs.setAudioAttributes(audio);
            attrs.setVideoAttributes(video);
            Encoder encoder = new Encoder();
            encoder.encode(new MultimediaObject(source), target, attrs);
            return new FileInputStream(new File(temporaryMp4Url));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //删除mov格式文件
            //删除临时文件
            FileSystemUtils.deleteRecursively(new File(temporaryMovUrl));
            FileSystemUtils.deleteRecursively(new File(temporaryMp4Url));
        }
        return null;
    }

0 Answers0