ffmpeg将任何文件转换为任何文件

时间:2015-05-23 09:27:19

标签: linux ffmpeg centos command

我想要简单的命令将任何支持的文件转换为几乎没有视频压缩的文件。

例如

avi to mp4
mp4 to 3gp
.
.etc..

我试过下面的代码

ffmpeg -i infile.flv outfile.3gp

它适用于一些但是对于其他类似flv to 3gp转换它会抛出如下所示的错误,并且输出文件大小也非常大于输入。

"Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height" 

P:我用以下的librareis编译

./configure --enable-version3 --enable-libopencore-amrnb --enable-libvo-aacenc --enable-libopencore-amrwb --enable-libvpx --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-gpl --enable-postproc --enable-nonfree

完整回复

array(48) {
  [0]=>
  string(77) "ffmpeg version N-72286-gd9b264b Copyright (c) 2000-2015 the FFmpeg developers"
  [1]=>
  string(56) "  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)"
  [2]=>
  string(261) "  configuration: --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-gpl --enable-postproc --enable-nonfree"
  [3]=>
  string(40) "  libavutil      54. 23.101 / 54. 23.101"
  [4]=>
  string(40) "  libavcodec     56. 39.101 / 56. 39.101"
  [5]=>
  string(40) "  libavformat    56. 33.101 / 56. 33.101"
  [6]=>
  string(40) "  libavdevice    56.  4.100 / 56.  4.100"
  [7]=>
  string(40) "  libavfilter     5. 16.101 /  5. 16.101"
  [8]=>
  string(40) "  libswscale      3.  1.101 /  3.  1.101"
  [9]=>
  string(40) "  libswresample   1.  1.100 /  1.  1.100"
  [10]=>
  string(40) "  libpostproc    53.  3.100 / 53.  3.100"
  [11]=>
  string(32) "Input #0, flv, from 'video.flv':"
  [12]=>
  string(11) "  Metadata:"
  [13]=>
  string(25) "    major_brand     : M4V"
  [14]=>
  string(23) "    minor_version   : 1"
  [15]=>
  string(39) "    compatible_brands: M4V M4A mp42isom"
  [16]=>
  string(26) "    date            : 2008"
  [17]=>
  string(71) "    copyright       : © 2008 Blender Foundation | www.bigbuckbunny.org"
  [18]=>
  string(36) "    title           : Big Buck Bunny"
  [19]=>
  string(43) "    artist          : Peach Open Movie Team"
  [20]=>
  string(56) "    composer        : Sacha Goedegebure / Ton Roosendaal"
  [21]=>
  string(35) "    encoder         : Lavf55.33.100"
  [22]=>
  string(59) "  Duration: 00:09:56.58, start: 0.058000, bitrate: 663 kb/s"
  [23]=>
  string(88) "    Stream #0:0: Video: h264 (High), yuv420p, 640x360, 24.42 fps, 24 tbr, 1k tbn, 48 tbc"
  [24]=>
  string(61) "    Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s"
  [25]=>
  string(90) "[h263 @ 0x1ef5f60] The specified picture size of 640x360 is not valid for the H.263 codec."
  [26]=>
  string(77) "Valid sizes are 128x96, 176x144, 352x288, 704x576, and 1408x1152. Try H.263+."
  [27]=>
  string(33) "Output #0, 3gp, to 'outfile.3gp':"
  [28]=>
  string(11) "  Metadata:"
  [29]=>
  string(25) "    major_brand     : M4V"
  [30]=>
  string(23) "    minor_version   : 1"
  [31]=>
  string(39) "    compatible_brands: M4V M4A mp42isom"
  [32]=>
  string(26) "    date            : 2008"
  [33]=>
  string(71) "    copyright       : © 2008 Blender Foundation | www.bigbuckbunny.org"
  [34]=>
  string(36) "    title           : Big Buck Bunny"
  [35]=>
  string(43) "    artist          : Peach Open Movie Team"
  [36]=>
  string(56) "    composer        : Sacha Goedegebure / Ton Roosendaal"
  [37]=>
  string(35) "    encoder         : Lavf55.33.100"
  [38]=>
  string(60) "    Stream #0:0: Video: h263, none, q=2-31, 128 kb/s, 24 fps"
  [39]=>
  string(13) "    Metadata:"
  [40]=>
  string(42) "      encoder         : Lavc56.39.101 h263"
  [41]=>
  string(52) "    Stream #0:1: Audio: amr_nb, 0 channels, 128 kb/s"
  [42]=>
  string(13) "    Metadata:"
  [43]=>
  string(55) "      encoder         : Lavc56.39.101 libopencore_amrnb"
  [44]=>
  string(15) "Stream mapping:"
  [45]=>
  string(54) "  Stream #0:0 -> #0:0 (h264 (native) -> h263 (native))"
  [46]=>
  string(66) "  Stream #0:1 -> #0:1 (mp3 (native) -> amr_nb (libopencore_amrnb))"
  [47]=>
  string(119) "Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height"
}

3 个答案:

答案 0 :(得分:4)

由于3gp是一种灵活的容器格式,因此您必须为{em>视频比特率,帧大小,视频编解码器,音频比特率,音频编解码器提供#bookingForm input, #bookingForm textarea{ } 个参数。< / p>

例如,以下代码摘自forum

package javaapplication3;

答案 1 :(得分:1)

您正在混淆 format encoding 的问题。 .3gp.flv只是容器格式,文件包含此格式的媒体这一事实并不能告诉我们有关媒体编码的更多信息。 ffmpeg可以计算输入编码,但不知道你想如何编码outfile。你要找的是:

ffmpeg -i infile.flv -strict -2 -c:v h264 -c:a aac outfile.3gp

以上行告诉ffmpeg将视频编码为h.264,将音频编码为aac,然后将其打包到.3gp容器中。

答案 2 :(得分:-1)

您的ff mpeg软件包似乎存在问题。尝试从包管理器安装它。

或者使用ffmpeg的任何gui前端,例如移动媒体转换器。 mmc包含稳定版的良好工作ffmpeg。