ffmpeg si blocca durante la creazione di un video


1

Sto cercando di inserire un canale audio con un video:

  1. prima di tutto estraggo l'audio dal video originale per l'elaborazione:

    ffmpeg -i lotr.mp4 lotr.wav

  2. Quindi estraggo tutti i fotogrammi per un'ulteriore elaborazione:

    ffmpeg -i lotr.mp4 -f image2 %d.jpg

  3. Al termine dell'elaborazione di flussi audio e video, provo a creare il video

    ffmpeg -f image2 -r 15 -i %d.jpg new.mp4

  4. quindi unire con l'audio:

    ffmpeg -i new.mp4 -i lotr.wav -map 0:0 -map 1:0 new_w_audio.mp4

Risultato: attività della CPU = 100%, il processo si blocca e non ritorna mai. PS : L'ho provato anche senza modificare le immagini o l'audio (quindi, solo cercando di decomprimere, quindi reimballare il video), ma ho sempre la stessa uscita

FFmpeg version SVN-r26400, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan 18 2011 04:07:05 with gcc 4.4.2
  configuration: --enable-gpl --enable-version3 --enable-libgsm --enable-libvorb
is --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg
 --enable-libschroedinger --enable-libopencore_amrwb --enable-libopencore_amrnb
--enable-libvpx --disable-decoder=libvpx --arch=x86 --enable-runtime-cpudetect -
-enable-libxvid --enable-libx264 --enable-librtmp --extra-libs='-lrtmp -lpolarss
l -lws2_32 -lwinmm' --target-os=mingw32 --enable-avisynth --enable-w32threads --
cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc' --enable-memalign-hack

  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'new.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
  Duration: 00:00:29.66, start: 0.000000, bitrate: 193 kb/s
    Stream #0.0(und): Video: mpeg4, yuv420p, 200x134 [PAR 1:1 DAR 100:67], 192 k
b/s, 15 fps, 15 tbr, 15 tbn, 15 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
[wav @ 01fed010] max_analyze_duration reached
Input #1, wav, from 'lotr.wav':
  Duration: 00:00:29.90, bitrate: 176 kb/s
    Stream #1.0: Audio: pcm_s16le, 11025 Hz, 1 channels, s16, 176 kb/s
File 'new_w_audio.mp4' already exists. Overwrite ? [y/N] y
[buffer @ 01b03820] w:200 h:134 pixfmt:yuv420p
Output #0, mp4, to 'new_w_audio.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
    Stream #0.0(und): Video: mpeg4, yuv420p, 200x134 [PAR 1:1 DAR 100:67], q=2-3
1, 200 kb/s, 15 tbn, 15 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1: Audio: aac, 11025 Hz, 1 channels, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #1.0 -> #0.1
Press [q] to stop encoding

il ffmpeg attuale ha ancora questo problema? In caso affermativo, inviare un ticket Trac con un piccolo campione riproducibile. Inoltre quale sistema operativo?
rogerdpack

Risposte:


2

Potrebbe essere diverse cose. Un blocco in generale con il video editing accade molto quando si tratta di codec video non compressi. Non sono sicuro se leggo lì che il video originale è nel codec di yuv420p. Forse viene impiccato cercando di gestire molta memoria o comprimendo direttamente le immagini in mp4. Una cosa che posso pensare è la conversione prima in avi, cioè l'uscita in un avi, ma forzare un codec lossless come camtasia / camstudio (penso che ffmpeg lo supporti), quindi non è così "pesante", e quindi fare una seconda operazione convertire in mp4. Un'altra questione è ... -r15? Sicuramente sai meglio quale fps sta avendo il video originale, ma usa 24fps o giù di lì, non è vero?

Inoltre ... Potresti forzare anche il codec di output, non solo il formato. MP4 funziona molto bene con il codec .h264, che offre molta qualità e incredibili dimensioni ridotte. Se ricordo bene, anche ffmpeg lo supporta. (potresti provare prima questo ...)

Modifica: ricorda che -codecs ti fornisce l'elenco dei codec, nella riga di comando. Ovviamente puoi, ad esempio, nella console di Win, ffmpeg -codecs & gt; codecs.txt per facilitare la lettura, la ricerca, ecc. Sano da fare anche con -formati, ecc.


1) il video è effettivamente 15 fps 2) sì, il problema si è rivelato essere dalla codifica a mp4 .. quindi l'ho cambiato in avi e ho funzionato :) GRAZIE :)
FearUs

Grande che ha funzionato! :)
S.gfx

3

Prova ad aggiornare all'ultima versione di ffmpeg.


1
Nel caso in cui un mod reagisce sui flag qui: Questo è spesso l'unica soluzione per i problemi di FFmpeg. Aggiornamento alla versione più recente. Si prega di non cancellare questa risposta.
slhck

@slhck ma questo è un passo diagnostico di base per qualsiasi problema in cui vi è un comportamento erratico nel software: 1. C'è un problema? Sì 2. L'aggiornamento lo ha risolto? No 3. Vai su SU per assistenza
Paul

@Paul vedo il tuo punto. È sicuramente la prima cosa che proverai, ma così tante persone sono riluttanti ad aggiornare la loro versione FFmpeg, non è nemmeno divertente. Sono sulla mailing list, succede sempre lì. Penso che valga la pena tenerlo semplicemente perché so che risolverà alcuni problemi.
slhck

3
@slhck vedo - ho capito, sono su distribuzioni a rilascio fisso e sono a disagio con make e gestendo una versione aggiornata? O qualunque sia la loro ragione, questa è la ragione per cui preferisco il rolling release. Ooops mi sembra di avere una discussione nei commenti.
Paul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.