我有一些 .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
。