代码之家  ›  专栏  ›  技术社区  ›  user27240

php脚本中avi到mp4转换的FFMpeg命令

  •  1
  • user27240  · 技术社区  · 6 年前

    第二,新创建的mp4的播放时间很短,持续约0.1秒,其中avi文件持续约60秒。

    for i in /xxxxxxx/xxxxxxx/*.avi; do
        ffmpeg -i "$i" -frames:v 1  "/xxxxxxx/xxxxxxx/$(basename "$i" .avi).mp4"
    done     
    

    尝试后记录:

    [root@server-xxxxxxx-x ~]# for i in /xxxxxx/xxxxxxx/xxxxxxx/*.avi; do ffmpeg -i "$i" -pix_fmt yuv420p -movflags +faststart "/xxxxxx/xxxxxxx/xxxxxxx/$(basename "$i" .avi).mp4"; done
    ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
      configuration:
      libavutil      55. 78.100 / 55. 78.100
      libavcodec     57.107.100 / 57.107.100
      libavformat    57. 83.100 / 57. 83.100
      libavdevice    57. 10.100 / 57. 10.100
      libavfilter     6.107.100 /  6.107.100
      libswscale      4.  8.100 /  4.  8.100
      libswresample   2.  9.100 /  2.  9.100
     Guessed Channel Layout for Input Stream #0.1 : mono
     Input #0, avi, from '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.avi':
      Metadata:
        creation_time   : 2018-09-14 00:18:07
        encoder         : CanonMVI06
       Duration: 00:00:04.20, start: 0.000000, bitrate: 12999 kb/s
        Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc,    bt470bg/unknown/unknown), 640x480, 12384 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
         Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s
     File '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.mp4' already exists.    Overwrite ? [y/N]
    
                                                                                                                              y
     Stream mapping:
      Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg4 (native))
      Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
      Press [q] to stop, [?] for help
      [swscaler @ 0x3d75fa0] deprecated pixel format used, make sure you did set   range correctly
     Output #0, mp4, to '/xxxxxx/xxxxxxx/xxxxxxx/09141944_5b9b910308858.mp4':
      Metadata:
        encoder         : Lavf57.83.100
        Stream #0:0: Video: mpeg4 (mp4v / 0x7634706D), yuv420p, 640x480, q=2-31, 200 kb/s, 30 fps, 65521 tbn, 30 tbc
        Metadata:
          encoder         : Lavc57.107.100 mpeg4
         Side data:
          cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
         Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s
         Metadata:
           encoder         : Lavc57.107.100 aac
      [mp4 @ 0x3d0e6e0] Starting second pass: moving the moov atom to the  beginning of the file17x
      frame=  126 fps=0.0 q=11.8 Lsize=     310kB time=00:00:04.20 bitrate= 603.3kbits/s speed=6.21x
      video:270kB audio:35kB subtitle:0kB other streams:0kB global headers:0kB  muxing overhead: 1.605194%
      [aac @ 0x3d36f40] Qavg: 2283.534
      ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
       built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
       configuration:
       libavutil      55. 78.100 / 55. 78.100
       libavcodec     57.107.100 / 57.107.100
       libavformat    57. 83.100 / 57. 83.100
       libavdevice    57. 10.100 / 57. 10.100
       libavfilter     6.107.100 /  6.107.100
       libswscale      4.  8.100 /  4.  8.100
       libswresample   2.  9.100 /  2.  9.100
       Guessed Channel Layout for Input Stream #0.1 : mono
       Input #0, avi, from '/xxxxxx/xxxxxxx/xxxxxxx/09141945_5b9b913e87834.avi':
        Metadata:
         creation_time   : 2018-09-14 00:18:07
         encoder         : CanonMVI06
        Duration: 00:00:04.20, start: 0.000000, bitrate: 12999 kb/s
        Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc,      bt470bg/unknown/unknown), 640x480, 12384 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
        Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono,    s16, 705 kb/s
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   llogan    6 年前

    问题:您没有支持的编码器

    你的 configuration 行为空。这意味着您没有启用H.264/H.265视频编码器。所以呢 ffmpeg 选择本机编码器 mpeg4

    编译

    --enable-libx264 --enable-libx265 . 你还需要 --enable-gpl 使用这些编码器。有关说明,请参阅本指南:

    FFmpeg Wiki: Compile for RHEL/Fedora/CentOS

    或者,一个简单的方法是 download 已编译的 把它放在你的道路上,比如 /usr/local/bin 被处死而不是你的老残废。