2013-08-13 5 views
0

이미지를 비디오로 변환하는 데 이상한 문제가 있습니다. node.js 서버에 excellent fluent-ffmpeg module을 사용하고 있습니다. 나는 30fps 비디오로 변환하고 싶은 179 개의 jpg 이미지를 가지고있다 (약 6 초이어야한다). 이제fluent-ffmpeg가 틀린 프레임을 생성 함

ffmpeg -i out.mp4 

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4': 
    Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder   : Lavf54.63.104 
    Duration: 00:00:06.00, start: 0.000000, bitrate: 1631 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], 1627 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc 
    Metadata: 
     handler_name : VideoHandler 

, 나는 유창-는 FFmpeg와 같은 일을 시도하고있다 :

ffmpeg -r 30 -i frame%03d.jpg -c:v libx264 out.mp4 

이것은을 FFmpeg을 검사 할 때 다음과 같은 출력 : 나는 성공적 그래서 다음는 FFmpeg 명령을 사용하여 수행 한

var proc = new ffmpeg({ source: 'frame%03d.jpg', nolog: true }) 
    .addOptions(['-c:v libx264','-r 30']) 
    .saveToFile('test.mp4', function(retcode, error){ 
    console.log('file has been converted succesfully'); 
    }); 

정확히 일치해야합니다. 맞습니까? 그러나 여기 내가 갖는 것입니다 : 지금 여기 가장 흥미로운 무엇

ffmpeg -i test.mp4 

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4': 
    Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder   : Lavf54.63.104 
    Duration: 00:00:07.20, start: 0.000000, bitrate: 1556 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], 1553 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc 
    Metadata: 
     handler_name : VideoHandler 

그 둘은 이미지의 동일한 세트에서 만들어 모두 가정으로 같은 프레임 속도, 유창-는 FFmpeg로 만든 하나가 되었더라도있다 7.20 초의 지속 시간, 첫 번째 것보다 1.20 초 정도 길다. 두 비디오를 비교할 때 30이보고 되더라도 실제로는 25fps가 유창하다고 생각됩니다.

동일한 결과를 가진 두 개의 플래그 (예 : .withVideoCodec, .withFps)를 올바르게 추가하려고 했으므로 인수를 수동으로 추가하여 원래의 명령과 완전히 동일하게 만들었습니다.

아무도이 모듈을 사용해 본 경험이 없거나 제안이 있으면 큰 도움이됩니다.

답변

0

같은 문제가있어서 이미지 시퀀스 소스와 일치하도록 입력 FPS를 지정해야한다는 것을 알았습니다.

.withFpsInput(30) // fps matching your jpg or png input sequence 

이 기능은 저에게 큰 도움이되었습니다. 희망이 도움이됩니다!