Chuyển đổi từ MP4 sang WAV cho kết quả không đồng bộ với FFmpeg, nhưng không phải khi sử dụng VLC


1

Hội tụ đến .wav từ video .mp4 gây ra sự không đồng bộ hóa khi chuyển đổi được thực hiện với FFmpeg, nhưng không phải khi với VLC. Tôi đã cố gắng để tìm ra điều này trong nhiều ngày nay và bất kỳ trợ giúp đều được đánh giá rất cao :)

Tôi bắt đầu với một video được ghi bằng OBS trong .flv. Sau đó tôi sử dụng một tệp bó với FFmpeg:

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

cung cấp cho tôi tệp .mp4.

Sau đó, tôi sử dụng phương pháp GUI VLC để chuyển đổi âm thanh trong .mp4 thành .wav để tôi có thể chỉnh sửa nó tốt hơn trong Audacity. Tôi đã thử sử dụng một tệp bó với FFmpeg thay vì GUI của VLC để làm cho nó hợp lý hơn. Tuy nhiên, bất cứ khi nào tôi thực hiện chuyển đổi bằng tệp bó và FFmpeg rồi đặt tệp .wav đã chuyển đổi FFmpeg trên dòng thời gian trong Adobe Premiere cùng với video .mp4, âm thanh của .wav, được chuyển đổi bằng FFmpeg được bù với bản nhạc âm thanh của video .mp4, nhưng khi chuyển đổi tương tự với .wav được thực hiện với GUI của VLC, kết quả là các bản âm thanh .wav và .mp4 ban đầu được đồng bộ hóa.

Các tệp bó tôi đã thử với các tùy chọn khác nhau, nhưng vẫn dẫn đến các rãnh âm thanh tệp .mp4 và .wav không khớp như sau:

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

Tôi cũng đã thử sử dụng các tùy chọn:

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

Tất cả không có kết quả.

Vì VLC có thể xử lý cùng một chuyển đổi, điều đó có nghĩa là tôi không chỉ sử dụng đúng cú pháp: /

EDIT: Đầu ra giao diện điều khiển cho

"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: Thêm một ngắn thử nghiệm .flv mới, .mp4 và hai tập tin .wav chuyển đổi với FFmpeg và VLC, giao diện điều khiển đầu ra và log file lên Google Drive https://drive.google.com/folderview?id=0B1bpDgYQQ_bMMmhmcDEtcldhSUE&usp=sharing


Vui lòng cung cấp đầu ra giao diện điều khiển của các lệnh. Tốt nhất là sử dụng lệnh trên một tệp duy nhất để minh họa, thay vì theo lô đối với nhiều đầu vào. Bạn phải giải quyết nó trên một tệp trước khi thử chạy chuyển đổi trên một số đầu vào.
Rajib

Tôi đã chỉnh sửa câu hỏi ban đầu để thêm đầu ra giao diện điều khiển cho một trong các lệnh trên và tôi đã chạy các tệp thử nghiệm này trên các tệp đầu vào; cả .flv và .mp4 riêng biệt.
Ferco

Làm thế nào là "bù đắp"? Trước / sau thời gian là gì? Bạn có thể làm ffmpeg -i CataclysmDDAWCam0MicOff2nd.wavvà cung cấp đầu ra giao diện điều khiển không?
Rajib

Tệp .wav được chuyển đổi từ .mp4 với FFmpeg nằm phía sau dòng thời gian so với bản âm thanh của cùng một tệp .mp4 trên dòng thời gian. Outout mà bạn đã yêu cầu: Bố cục kênh đã đoán cho Luồng đầu vào # 0.0: Đầu vào âm thanh # 0, wav, từ 'CataclysmDDAWCam0Mic Offer2nd.wav': Siêu dữ liệu: bộ mã hóa: Lavf55.36.101 Thời lượng: 00: 00: 17.62, bitrate: 1536 kb # 0: 0: Âm thanh: pcm_s16le ([1] [0] [0] [0] / 0x0001), 48000 Hz, âm thanh nổi, s16, 1536 kb / s Phải có ít nhất một tệp đầu ra
Ferco

Thời lượng được báo cáo là 17,62 giây. Mp4 là 17,67. Sự khác biệt là nhỏ, nhưng nếu điều này sẽ gây ra sự bù trừ, âm thanh phải đến sớm hơn. Bạn có thể đăng tập tin mp4 ở đâu đó (giả sử dropbox) để kiểm tra không?
Rajib
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.