ffmpeg 連接產生過長的結果,沒有聲音且速度部分錯誤

ffmpeg 連接產生過長的結果,沒有聲音且速度部分錯誤

我使用的是 ffmpeg 4.2.4。

我有兩個短片,都是用手機拍攝的。我從第一個部分中剪掉了一個部分(從 18 秒開始,也是 18 秒長 - 輸出似乎是 18.02 秒長):

ffmpeg -i VID_20201205_135951.mp4 -ss 00:18 -t 00:18 1.mp4

我正在使用第二個的整個部分,長度為 13.55 秒:

cp VID_20201205_140804.mp4 2.mp4

我寫了一個檔案concat.txt:

file '1.mp4'
file '2.mp4'

並使用 concat 過濾器將它們連接在一起:

ffmpeg -f concat -i concat.txt -c copy 12.mp4

生成的影片沒有聲音,長度為 3 分 2.35 秒!如果我看它,前 18 秒是正確的(雖然沒有聲音),然後它凍結,顯示第一部分的最後一幀,直到 1:47,此時第二部分開始播放,但非常慢,直到視頻結束。

知道我做錯了什麼嗎?或者我如何調試這個?

這是 ffmpeg 為第一個輸入列印的資訊:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:00:18.02, start: 0.000000, bitrate: 17735 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 3840x2160 [SAR 1:1 DAR 16:9], 17678 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s (default)
    Metadata:
      handler_name    : SoundHandle

第二個輸入:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2020-12-05T14:08:20.000000Z
    com.android.version: 11
  Duration: 00:00:13.55, start: 0.000000, bitrate: 40373 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuvj420p(pc, smpte170m), 3840x2160, 42298 kb/s, SAR 1:1 DAR 16:9, 30.02 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      rotate          : 180
      creation_time   : 2020-12-05T14:08:20.000000Z
      handler_name    : VideoHandle
    Side data:
      displaymatrix: rotation of -180.00 degrees
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
    Metadata:
      creation_time   : 2020-12-05T14:08:20.000000Z
      handler_name    : SoundHandle

和輸出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '12.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:03:02.35, start: 0.000000, bitrate: 4734 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 3840x2160 [SAR 1:1 DAR 16:9], 4719 kb/s, 5.07 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 80 kb/s (default)
    Metadata:
      handler_name    : SoundHandle

答案1

所有輸入必須具有相同的屬性。您有不同的 H.264 配置(基線與高)和幀速率。

使一個視頻與另一個視頻匹配:

ffmpeg -i 2.mp4 -c:v libx264 -r 30 -c:a copy 2b.mp4

預設會選擇 High profile,因此您無需手動添加它,但如果您想要 Baseline,請使用-profile:v baseline.

或將所有影片轉換為評論屬性集,無論輸入屬性為何。看如何在ffmpeg中連接具有不同屬性的影片?

相關內容