.mp4 无法在 WMplayer 上播放。尝试更改容器并成功播放。如何修复?

.mp4 无法在 WMplayer 上播放。尝试更改容器并成功播放。如何修复?

我有一些 .mp4 文件无法在 Windows Media Player 中播放。

错误:Windows Media Player 无法播放该文件。播放器可能不支持该文件类型,或者不支持用于压缩该文件的编解码器

但可以在 VLC 中播放。我尝试使用 .bat* 将容器从 .mp4 更改为 .flv,然后将其改回 .mp4,文件开始正常播放,没有错误消息。有谁知道这可能是什么,或者我如何编写一个命令进行批量转换,更改所有文件夹中的容器,然后将其改回 .mp4 并保存在另一个文件夹中(或者我必须逐个文件夹进行操作?)

我使用了 ffmpeg,并且在批处理文件中输入的命令是:

第一个.bat:将容器从.mp4 更改为另一个容器(我选择.flv)

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

第二个.bat:改回.mp4:

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

我在记事本上写了这个,然后保存了 .bat。更改所有文件后,我写了回程。

我不知道它到底起什么作用,但我知道它可以解决所有问题。

有人可以帮我把它写得更好,并使它与整个目录一起工作,然后把它保存到另一个目录以免覆盖旧文件吗?

C:\ch_class>ffmpeg -i bd.mp4
ffmpeg version N-83657-g7e4f32f Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --e
nable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --
enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug -
-enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enabl
e-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolam
e --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
 --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable
-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
  libavutil      55. 47.100 / 55. 47.100
  libavcodec     57. 81.100 / 57. 81.100
  libavformat    57. 66.102 / 57. 66.102
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 74.100 /  6. 74.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
[flv @ 0000000000566980] video stream discovered after head already parsed
[flv @ 0000000000566980] audio stream discovered after head already parsed
Input #0, flv, from 'bd.mp4':
  Metadata:
    moovPosition    : 32
    avcprofile      : 77
    avclevel        : 41
    aacaot          : 2
    videoframerate  : 25
    audiochannels   : 2
    length          : 77795328
    timescale       : 48000
    sampletype      : mp4a
  Duration: 00:27:00.74, start: 0.000000, bitrate: 707 kb/s
    Stream #0:0: Video: h264 (Main), yuv420p(tv, progressive), 1280x720 [SAR 1:1
 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp
At least one output file must be specified

答案1

ffmpeg说输入文件是 FLV,而不是 MP4。看来有人只是重新命名了它。

Windows Media Player 不支持 FLV,因此您必须将其重新合并为 MP4。您可以跳过输出 FLV 并直接重新合并为 MP4 的步骤。

for /R %%a in ("*.mp4") do ffmpeg -i "%%a" -c copy "%%~da%%~pa%%~na-remuxed.mp4"
pause

新文件名将以 结尾-remuxed.mp4

相关内容