Konversi dari MP4 ke WAV menghasilkan desync dengan FFmpeg, tetapi tidak ketika menggunakan VLC

1

Konversi ke .wav dari .mp4 video menyebabkan desinkronisasi ketika konversi dilakukan dengan FFmpeg, tetapi tidak ketika dengan VLC. Saya sudah mencoba mencari tahu ini selama berhari-hari sekarang dan bantuan apa pun sangat dihargai :)

Saya mulai dengan video yang direkam dengan OBS di .flv. Saya kemudian menggunakan file batch dengan FFmpeg:

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

yang memberi saya file .mp4.

Saya kemudian menggunakan metode VLC GUI untuk mengubah audio dalam .mp4 menjadi .wav jadi saya dapat mengeditnya dengan lebih baik di Audacity. Saya mencoba menggunakan file batch dengan FFmpeg, bukan GUI VLC untuk membuatnya lebih ramping. Namun, setiap kali saya melakukan konversi menggunakan file batch dan FFmpeg dan kemudian menempatkan file .wav dikonversi FFmpeg pada timeline di Adobe Premiere bersama dengan video .mp4, audio .wav, yang dikonversi dengan FFmpeg diimbangi dengan trek audio .mp4 video, tetapi ketika konversi yang sama ke .wav dilakukan dengan GUI VLC, .wav dan trek audio .mp4 yang asli tersinkronisasi.

File batch yang saya coba dengan opsi yang berbeda, tetapi masih menghasilkan trek audio file .mp4 dan .wav tidak cocok adalah sebagai berikut:

"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"

Saya juga mencoba menggunakan opsi:

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

semuanya sia-sia.

Karena VLC dapat menangani konversi yang sama maka itu berarti saya tidak hanya menggunakan sintaks yang benar: /

EDIT: Output konsol untuk

"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: Menambahkan tes pendek baru .flv, .mp4 dan dua file .wav yang dikonversi dengan FFmpeg dan VLC, output konsol dan file log ke Google Drive https://drive.google.com/folderview?id=0B1bpDgYQQ_bMMmhmcDEtcldhSUE&usp=sharing

Ferco
sumber
Harap berikan output konsol dari perintah. Cara terbaik adalah menggunakan perintah pada satu file untuk ilustrasi, daripada sebagai kumpulan terhadap beberapa input. Anda harus menyelesaikannya pada satu file sebelum mencoba menjalankan konversi pada beberapa input.
Rajib
Saya mengedit pertanyaan asli untuk menambahkan output konsol untuk salah satu perintah di atas dan saya menjalankan file batch pengujian ini pada file input tunggal; baik .flv dan .mp4 secara terpisah.
Ferco
Bagaimana cara "mengimbangi"? Di depan / di belakang berapa lama? Bisakah Anda melakukan ffmpeg -i CataclysmDDAWCam0MicOff2nd.wavdan memberikan output konsol itu?
Rajib
File .wav yang dikonversi dari .mp4 dengan FFmpeg berada di belakang pada timeline dibandingkan dengan trek audio dari file .mp4 yang sama pada timeline. Hasil yang Anda minta: Tata Letak Saluran Terpandu untuk Arus Input # 0.0: Input stereo # 0, wav, dari 'CataclysmDDAWCam0MicOff2nd.wav': Metadata: encoder: Lavf55.36.101 Durasi: 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 Setidaknya satu file output harus ditentukan
Ferco
Durasi yang dilaporkan adalah 17,62 detik. MP4 adalah 17,67. Perbedaannya kecil, tetapi jika ini harus menyebabkan offset, audio seharusnya tiba lebih awal. Bisakah Anda memposting file mp4 di suatu tempat (katakan dropbox) untuk pengujian?
Rajib