使用 FFmpeg 将 .mp4 视频转换为 .wav 会导致不同步,但使用 VLC 则不会。我已经尝试解决这个问题好几天了,非常感谢任何帮助 :)
我首先使用 OBS 录制 .flv 格式的视频。然后使用 FFmpeg 的批处理文件:
"for %%a in ("*.flv") do ffmpeg -i %%a -vcodec copy -acodec copy %%~na.mp4
pause"
它给了我.mp4 文件。
然后,我使用 VLC GUI 方法将 .mp4 中的音频转换为 .wav,以便更好地在 Audacity 中编辑它。我尝试使用带有 FFmpeg 的批处理文件而不是 VLC 的 GUI 来使其更加简化。但是,每当我使用批处理文件和 FFmpeg 进行转换,然后将 FFmpeg 转换的 .wav 文件与 .mp4 视频一起放在 Adobe Premiere 的时间线上时,使用 FFmpeg 转换的 .wav 的音频会与 .mp4 视频的音轨偏移,但是当使用 VLC 的 GUI 进行相同的 .wav 转换时,生成的 .wav 和原始 .mp4 音轨是同步的。
我尝试了不同的选项的批处理文件,但仍然导致.mp4 和.wav 文件音轨不匹配,如下所示:
"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"
我也尝试过使用以下选项:
-vn -copyts -ss 0 -y -avoid_negative_ts 1 -async 1 ...etc.
一切都无济于事。
由于 VLC 可以处理相同的转换,那么这一定意味着我不仅仅使用了正确的语法:/
编辑:控制台输出
"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 . . .
编辑:添加了一个新的较短的测试 .flv、.mp4 和两个用 FFmpeg 和 VLC 转换的 .wav 文件、控制台输出和日志文件到 Google Drivehttps://drive.google.com/folderview?id=0B1bpDgYQQ_bMMmhmcDEtcldhSUE&usp=sharing