2

我在一个文件夹中有许多不同的视频文件(mov、avi、flv、mp4、3gp、wmv)。

我需要使用一个批处理文件来转换文件夹中的所有 mov、avi、wmv、3gp 文件我还需要跳过任何 flv、mp4 文件

我有这个命令,但它给出错误并生成 0 大小的文件:

for %%F in (*.mov) do ffmpeg.exe -i "%%~fF" -vcodec copy -acodec copy "%%~dpF\%%~nF.mp4"

上面的行只是尝试处理 mov 文件。对于 avi 文件,我得到相同的结果。

我想保持文件名相同。我得到正确的文件名,但它给出了错误:

    ffmpeg version N-54691-g7f4a1fd Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 12 2013 16:31:48 with gcc 4.7.3 (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-libvo-aacenc --enable-libvo-
amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
  libavutil      52. 39.100 / 52. 39.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 12.102 / 55. 12.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 80.101 /  3. 80.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, avi, from 'C:\musa\Challenge\FFMPEG\Test\file5.AVI':
  Metadata:
    encoder         : OPTURA20
  Duration: 00:00:10.01, start: 0.000000, bitrate: 1518 kb/s
    Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p, 320x240, 14.99 fps,
 14.99 tbr, 14.99 tbn, 14.99 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, s16,
256 kb/s
[mp4 @ 00000000024bc980] Tag [1][0][0][0]/0x00000001 incompatible with output co
dec id '65536' ([0][0][0][0])
Output #0, mp4, to 'C:\musa\Challenge\FFMPEG\Test\\file5.mp4':
  Metadata:
    encoder         : OPTURA20
    Stream #0:0: Video: mjpeg (l[0][0][0] / 0x006C), yuvj422p, 320x240, q=2-31,
14.99 fps, 90k tbn, 14.99 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, 256 k
b/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invali
d data found when processing input
4

2 回答 2

4

PCM 音频流与 MP4 容器不兼容,请查看规格和错误消息:

Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, s16, 256 kb/s [mp4 @ 00000000024bc980] Tag [1][0][0][0]/0x00000001 incompatible with output codec id '65536' ([0][0][0][0])

请注意:MP4视频容器格式 和 H.264视频流格式是两个不同的东西。MP4 视频容器还可以“包含”其他视频流格式,例如。Xvid 甚至 MJPEG。

于 2013-07-13T05:44:58.037 回答
1

视频流是 MJPEG,如果你真的想要输出 MP4/H264,你应该替换

 -vcodec copy

通过 -vcodec 选项对您的输入视频内容进行转码

或者添加更复杂的东西来检测何时可以绕过视频流以及何时需要转码。

于 2013-07-13T06:49:11.527 回答