如何使用Windows .bat文件使用ffmpeg将.mov文件转换为.mp4(H264)?

时间:2013-07-12 23:39:18

标签: batch-file ffmpeg

我在一个文件夹中有许多不同的视频文件(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

2 个答案:

答案 0 :(得分:4)

PCM音频流与MP4容器不兼容,请查看specs并显示错误消息:

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。

答案 1 :(得分:1)

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

 -vcodec copy

通过-vcodec选项转码输入视频内容

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