La conversione da MP4 a WAV provoca la desincronizzazione con FFmpeg, ma non quando si utilizza VLC


1

La conversione in .wav dal video .mp4 provoca una desincronizzazione quando la conversione viene eseguita con FFmpeg, ma non con VLC. Sto provando a capirlo da giorni ormai e qualsiasi aiuto è molto apprezzato :)

Comincio con un video registrato con OBS in .flv. Quindi uso un file batch con FFmpeg:

"for %%a in ("*.flv") do ffmpeg -i %%a -vcodec copy -acodec copy %%~na.mp4
pause"

che mi dà il file .mp4.

Quindi uso il metodo VLC GUI per convertire l'audio in .mp4 in .wav in modo da poterlo modificare in Audacity. Ho provato a utilizzare un file batch con FFmpeg invece della GUI di VLC per renderlo più snello. Tuttavia, ogni volta che eseguo la conversione utilizzando un file batch e FFmpeg e quindi inserisco il file .wav convertito FFmpeg sulla timeline in Adobe Premiere insieme al video .mp4, l'audio del .wav, che viene convertito con FFmpeg, viene sfalsato con la traccia audio del video .mp4, ma quando la stessa conversione in .wav viene eseguita con la GUI di VLC, le tracce audio .wav e .mp4 risultanti sono sincronizzate.

I file batch che ho provato con diverse opzioni, ma che continuano a non corrispondere alle tracce audio del file .mp4 e .wav sono i seguenti:

"for %%a in ("*.mp4") do ffmpeg -i %%a -vn %%~na.wav pause"    


"for %%a in ("*.flv") do ffmpeg -i %%a -acodec pcm_s16le %%~na.wav pause"    


"for %%a in ("*.mp4") do ffmpeg -i %%a -ab 1536k -ac 2 -ar 48000 -acodec pcm_s16le %%~na.wav -loglevel verbose -report -stats  pause"  


"for %%a in ("*.flv") do ffmpeg -i %%a -vcodec copy -acodec copy %%~na.mp4 %%~na.aac -loglevel verbose -report pause"

Ho anche provato ad usare le opzioni:

-vn -copyts -ss 0 -y -avoid_negative_ts 1 -async 1 ...etc.

tutto inutilmente.

Poiché VLC è in grado di gestire la stessa conversione, ciò significa che non sto solo utilizzando la sintassi corretta: /

EDIT: l'output della console per

"for %%a in ("*.mp4") do ffmpeg -i %%a -vn %%~na.wav -loglevel verbose -report pause":

Y:\Dxtory\Cataclysm Dark Days Ahead\Test Batch File>for %a in ("*.mp4") do ffmpe
g -i %a -vn %~na.wav

Y:\Dxtory\Cataclysm Dark Days Ahead\Test Batch File>ffmpeg -i CataclysmDDAWCam0M
icOff2nd.mp4 -vn CataclysmDDAWCam0MicOff2nd.wav
ffmpeg version N-62162-gec8789a Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr  4 2014 22:08:30 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable
-zlib
  libavutil      52. 74.100 / 52. 74.100
  libavcodec     55. 57.100 / 55. 57.100
  libavformat    55. 36.101 / 55. 36.101
  libavdevice    55. 11.100 / 55. 11.100
  libavfilter     4.  3.100 /  4.  3.100
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'CataclysmDDAWCam0MicOff2nd.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.36.101
  Duration: 00:00:17.67, start: 0.000000, bitrate: 99559 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709)
, 1920x1080, 99437 kb/s, 30 fps, 30 tbr, 16k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 10
9 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Output #0, wav, to 'CataclysmDDAWCam0MicOff2nd.wav':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    ISFT            : Lavf55.36.101
    Stream #0:0(und): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo
, s16, 1536 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> pcm_s16le)
Press [q] to stop, [?] for help
size=    3304kB time=00:00:17.62 bitrate=1536.0kbits/s
video:0kB audio:3304kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 0.002365%

Y:\Dxtory\Cataclysm Dark Days Ahead\Test Batch File>pause
Press any key to continue . . .

EDIT: aggiunto un nuovo test più breve .flv, .mp4 e due file .wav convertiti con FFmpeg e VLC, output della console e file di registro su Google Drive https://drive.google.com/folderview?id=0B1bpDgYQQ_bMMmhmcDEtcldhSUE&usp=sharing


Fornire gli output della console dei comandi. È preferibile utilizzare il comando su un singolo file per l'illustrazione, anziché come batch su più input. Devi risolverlo su un file prima di provare a eseguire la conversione su più input.
Rajib,

Ho modificato la domanda originale per aggiungere l'output della console per uno dei comandi precedenti e ho eseguito questi file batch di test su singoli file di input; sia .flv che .mp4 separatamente.
Ferco,

Come è "offset"? Avanti / indietro di quale durata? Puoi fare ffmpeg -i CataclysmDDAWCam0MicOff2nd.wave fornire l'output della console?
Rajib,

Il file .wav convertito da .mp4 con FFmpeg è indietro nella sequenza temporale rispetto alla traccia audio dello stesso file .mp4 nella sequenza temporale. Il ritaglio richiesto: Layout del canale indovinato per Stream di input # 0.0: Input stereo # 0, wav, da 'CataclysmDDAWCam0MicOff2nd.wav': Metadati: encoder: Lavf55.36.101 Durata: 00: 00: 17.62, bitrate: 1536 kb / s Stream # 0: 0: Audio: pcm_s16le ([1] [0] [0] [0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb / s È necessario specificare almeno un file di output
Ferco

La durata riportata è di 17,62 secondi. Il mp4 era 17.67. La differenza è piccola, ma se ciò dovesse causare un offset, l'audio dovrebbe arrivare prima. Potresti pubblicare il file mp4 da qualche parte (dire dropbox) per il test?
Rajib,
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.