0
votes

I am experimenting FFMPEG command to convert any video format to mp4.

Server admin execute the below command created by me and show me the errors:

ffmpeg -ss 00:03:00  -i  /video/1444107854.mov -c:v libx264 /video/player/1444107854.mp4  -vframes 1 /video/thumb/1444107854.jpg

This is error:

[aac @ 0x2b845a0] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.

how can i avoid this error and also experimental codec, so can any one let me know what can be best codec if i explicitly specify it.

my ffmpeg and server are as follow:

ffmpeg version N-75903-g14573b9 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)

EDIT 1: I change the command a bit and add -c:a copy to copy audio stream as it is but still no hope:

New command:

ffmpeg -ss 00:03:00  -i  /video/1444107854.mov -c:v libx264 -c:a copy /video/player/1444107854.mp4  -vframes 1 /video/thumb/1444107854.jpg

After executing this i got a file of 23k size, apparently as in log it only copy audio stream and no video is added in final output. Its Log is as follow:

> ffmpeg version N-75903-g14573b9 Copyright (c) 2000-2015 the FFmpeg
> developers   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)  
> configuration: --enable-libx264 --enable-gpl   libavutil      55. 
> 3.100 / 55.  3.100   libavcodec     57.  5.100 / 57.  5.100   libavformat    57.  3.100 / 57.  3.100   libavdevice    57.  0.100 /
> 57.  0.100   libavfilter     6. 10.100 /  6. 10.100   libswscale      4.  0.100 /  4.  0.100   libswresample   2.  0.100 /  2.  0.100   libpostproc    54.  0.100 / 54.  0.100 Input #0, mpeg, from
> '/video/1444108714.mpg':  
> Duration: 00:00:02.14, start: 0.184278, bitrate: 15689 kb/s
>     Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], max. 38810 kb/s, 29.97 fps, 29.97 tbr,
> 90k tbn, 59.94 tbc
>     Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s [swscaler @ 0x347fda0] deprecated pixel format used, make sure you did
> set range correctly [libx264 @ 0x34708a0] using SAR=1/1 [libx264 @
> 0x34708a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 [libx264
> @ 0x34708a0] profile High, level 4.0 [libx264 @ 0x34708a0] 264 - core
> 148 r2597 e86f3a1 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 -
> http://www.videolan.org/x264.html - options: cabac=1 ref=3
> deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00
> mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0
> deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=34
> lookahead_threads=5 sliced_threads=0 nr=0 decimate=1 interlaced=0
> bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
> b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250
> keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
> mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
> aq=1:1.00 [mp4 @ 0x346f6c0] Codec for stream 1 does not use global
> headers but container format requires global headers [mp4 @ 0x346f6c0]
> track 1: codec frame size is not set Output #0, mp4, to
> '/video/player/1444108714.mp4':  
> Metadata:
>     encoder         : Lavf57.3.100
>     Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn,
> 29.97 tbc
>     Metadata:
>       encoder         : Lavc57.5.100 libx264
>     Stream #0:1: Audio: ac3 ([165][0][0][0] / 0x00A5), 48000 Hz, 5.1(side), 448 kb/s Output #1, image2, to '/video/thumb/1444108714.jpg':  
> Metadata:
>     encoder         : Lavf57.3.100
>     Stream #1:0: Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc
>     Metadata:
>       encoder         : Lavc57.5.100 mjpeg Stream mapping:   Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))   Stream #0:1 -> #0:1 (copy)   Stream #0:0 -> #1:0 (mpeg2video (native) -> mjpeg (native)) Press [q] to stop, [?] for help [mp4 @ 0x346f6c0]
> Non-monotonous DTS in output stream 0:1; previous: 2208, current: 672;
> changing to 2209. This may result in incorrect timestamps in the
> output file. frame=    0 fps=0.0 q=0.0 Lq=0.0 size=      23kB
> time=00:00:00.07 bitrate=2447.5kbits/s video:0kB audio:23kB
> subtitle:0kB other streams:0kB global headers:0kB muxing overhead:
> 3.457839%

EDIT 2:

ffmpeg -y -i ./1445675270.m4b -c:v libx264  -crf 20 -preset slow -pix_fmt yuv420p -movflags +faststart -c:a libfdk_aac -b:a 128k  ./player/1445675270.mp4 -vframes 1 ./thumb/1445675270.jpg

Above command output the below message, i will appreciate if you can suggest.

ffmpeg version git-2015-10-11-49f4967 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
  libavutil      55.  3.100 / 55.  3.100
  libavcodec     57.  5.100 / 57.  5.100
  libavformat    57.  3.100 / 57.  3.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 11.100 /  6. 11.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
  libpostproc    54.  0.100 / 54.  0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x31e07c0] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './1445675270.m4b':
  Metadata:
    major_brand     : M4A 
    minor_version   : 0
    compatible_brands: M4A mp42isom
    creation_time   : 2005-08-01 07:26:16
    tool            : ?
    title           : MAKE_2005-08-01
    artist          : MAKE Magazine
    composer        : MAKE Magazine - Phillip Torrone
    album           : Interview with Janus Wireless
    grouping        : MAKE Magazine enhanced podcast
    genre           : Podcast
    date            : 2005
    comment         : Interview with Janus wireless and their 5 Wi-Fi card packet capturing Linux box. This is a special enhanced podcast (this file plays images and links in iTunes and on iPod color devices).
  Duration: 00:02:57.54, start: 0.000000, bitrate: 162 kb/s
    Chapter #0:0: start 0.000000, end 17.000000
    Metadata:
      title           : MAKE Magazine @ DEFCON with JANUS
    Chapter #0:1: start 17.000000, end 37.000000
    Metadata:
      title           : Janus
    Chapter #0:2: start 37.000000, end 83.000000
    Metadata:
      title           : Construction
    Chapter #0:3: start 83.000000, end 109.000000
    Metadata:
      title           : The MAKERs
    Chapter #0:4: start 109.000000, end 177.540000
    Metadata:
      title           : Display
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 32 kb/s (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
    Stream #0:1(eng): Subtitle: mov_text (text / 0x74786574), 0 kb/s
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
    Stream #0:2(eng): Video: tiff (tiff / 0x66666974), rgb24, 167x166, 126 kb/s, SAR 206:275 DAR 17201:22825, 0.03 fps, 1 tbr, 22050 tbn, 22050 tbc (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
      encoder         : TIFF (Uncompressed)
    Stream #0:3(eng): Subtitle: mov_text (tx3g / 0x67337874), 160x160, 0 kb/s (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
    Stream #0:4: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 167x166 [SAR 1:1 DAR 167:166], 90k tbr, 90k tbn, 90k tbc
[swscaler @ 0x3242360] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x3228c40] width not divisible by 2 (167x166)
Output #0, mp4, to './player/1445675270.mp4':
  Metadata:
    major_brand     : M4A 
    minor_version   : 0
    compatible_brands: M4A mp42isom
    comment         : Interview with Janus wireless and their 5 Wi-Fi card packet capturing Linux box. This is a special enhanced podcast (this file plays images and links in iTunes and on iPod color devices).
    tool            : ?
    title           : MAKE_2005-08-01
    artist          : MAKE Magazine
    composer        : MAKE Magazine - Phillip Torrone
    album           : Interview with Janus Wireless
    grouping        : MAKE Magazine enhanced podcast
    genre           : Podcast
    date            : 2005
    Chapter #0:0: start 0.000000, end 17.000000
    Metadata:
      title           : MAKE Magazine @ DEFCON with JANUS
    Chapter #0:1: start 17.000000, end 37.000000
    Metadata:
      title           : Janus
    Chapter #0:2: start 37.000000, end 83.000000
    Metadata:
      title           : Construction
    Chapter #0:3: start 83.000000, end 109.000000
    Metadata:
      title           : The MAKERs
    Chapter #0:4: start 109.000000, end 177.540000
    Metadata:
      title           : Display
    Stream #0:0(eng): Video: h264, none, q=2-31, 128 kb/s, SAR 206:275 DAR 0:0, 1 fps (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
      encoder         : Lavc57.5.100 libx264
    Stream #0:1(eng): Audio: aac, 0 channels, 128 kb/s (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
      encoder         : Lavc57.5.100 libfdk_aac
Output #1, image2, to './thumb/1445675270.jpg':
  Metadata:
    major_brand     : M4A 
    minor_version   : 0
    compatible_brands: M4A mp42isom
    comment         : Interview with Janus wireless and their 5 Wi-Fi card packet capturing Linux box. This is a special enhanced podcast (this file plays images and links in iTunes and on iPod color devices).
    tool            : ?
    title           : MAKE_2005-08-01
    artist          : MAKE Magazine
    composer        : MAKE Magazine - Phillip Torrone
    album           : Interview with Janus Wireless
    grouping        : MAKE Magazine enhanced podcast
    genre           : Podcast
    date            : 2005
    Chapter #1:0: start 0.000000, end 17.000000
    Metadata:
      title           : MAKE Magazine @ DEFCON with JANUS
    Chapter #1:1: start 17.000000, end 37.000000
    Metadata:
      title           : Janus
    Chapter #1:2: start 37.000000, end 83.000000
    Metadata:
      title           : Construction
    Chapter #1:3: start 83.000000, end 109.000000
    Metadata:
      title           : The MAKERs
    Chapter #1:4: start 109.000000, end 177.540000
    Metadata:
      title           : Display
    Stream #1:0(eng): Video: mjpeg, none, q=2-31, 128 kb/s, SAR 206:275 DAR 0:0, 1 fps (default)
    Metadata:
      creation_time   : 2005-08-01 07:26:16
      handler_name    : ?Apple Alias Data Handler
      encoder         : Lavc57.5.100 mjpeg
Stream mapping:
  Stream #0:2 -> #0:0 (tiff (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (aac (native) -> aac (libfdk_aac))
  Stream #0:2 -> #1:0 (tiff (native) -> mjpeg (native))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
1
Impossible to answer as is because you did not provide the complete console output from your command, therefore it is unknown what other AAC encoders are supported by your build. Also, are you really using one of the ffmpeg-php wrappers as suggested by the tag?llogan
i updated the question, I hope now it have all the information. No, i currently not using ffmpeg-php wrapper.Asad kamran

1 Answers

4
votes

You have three separate issues here.

Problem 1: Experimental AAC encoder

The encoder 'aac' is experimental but experimental codecs are not enabled,
add '-strict -2' if you want to use it.

You have several options:

  • Add -strict -2 as the message states. This will allow you to use the native FFmpeg AAC encoder. Improvements have been made to this encoder recently.

  • Use a different encoder by recompiling with support for libfdk_aac. This is the best AAC encoder supported by ffmpeg. See FFmpeg Wiki: AAC Encoding.

  • Or stream copy (re-mux) the audio with -c:a copy as you did in your second command. This will only work if the output container format supports the stream copied audio format.

Problem 2: Empty output

Output file is empty, nothing was encoded
(check -ss / -t / -frames parameters if used)

You are attempting to skip the first 3 minutes with -ss 00:03:00, but your input duration is only about 2 seconds long.

Problem 3: Error while opening encoder

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

This indicates that there is an issue with output stream #0:0 which in this case, according to the end of the console output, refers to the video stream:

Stream mapping:
  Stream #0:2 -> #0:0 (tiff (native) -> h264 (libx264))

When you see the "Error while opening encoder" message it is worth taking a closer look at the console output for a more specific error related to the mentioned stream. In this case it is:

[libx264 @ 0x3228c40] width not divisible by 2 (167x166)

You need to scale or crop the video so it is divisible by 2:

-vf scale=-2:ih

or:

-vf crop=iw-1:ih