簡體   English   中英

fluent-ffmpeg生成錯誤的幀率

[英]fluent-ffmpeg generating incorrect framerate

將圖片轉換為視頻時遇到一個奇怪的問題。 我正在為node.js服務器使用出色的fluent-ffmpeg模塊 我有179張jpg圖像,希望將其轉換為30fps的視頻(應為6s)。 我已經使用以下ffmpeg命令成功完成了此操作:

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

在由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

現在,我正在嘗試使用fluent-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

現在,最有趣的是,盡管它們都是由相同的圖像集組成,並且據說具有相同的幀頻,但是使用fluent-ffmpeg制成的圖像的持續時間為7.20s,比第一個更長整整1.20秒。 比較這兩個視頻后,似乎流利的ffmpeg視頻實際上是25fps,盡管它報告的是30。

請注意,我已經嘗試使用方法( .withVideoCodec, .withFps )正確添加兩個標志.withVideoCodec, .withFps結果相同,我只是通過手動添加參數來使其與原始命令完全相同。

如果有人在此模塊上有經驗和/或有任何建議,將不勝感激!

遇到相同的問題,發現您需要指定輸入FPS來匹配圖像序列源。

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

這對我來說很棒。 希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM