Unknown encoder 'libx264'

Hello everyone.
I have a problem converting .flv videos to .mp4 videos using ffmpeg.

When entering the command

ffmpeg -i input-vid.flv -vcodec libx264  -acodec libfaac -ab 128k output.mp4

I get the error

Unknown encoder 'libx264'

. I have installed libx264 via Yast but still the same problem. can anyone help in this please.
Or even provide me another solution other than ffmpeg to easily convert videos via command line? In have openSUSE 12.3 min server only install.

Thanks

And where did you install ffmpeg and its libraries (libav*) from?
I.e. post your repo list and the package versions:

zypper lr -d
rpm -qa ffmpeg* libav*

You need to add the Packman repo and do a full switch to it to make sure all ffmpeg packages are uncrippled (the openSUSE packages do not support non-free codecs, like x264).

On my 13.2 system:

$ ffmpeg -codecs|grep x264
ffmpeg version 3.0.5 Copyright (c) 2000-2016 the FFmpeg developers

  built with gcc 4.8 (SUSE Linux)

  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-runtime-cpudetect --enable-gpl --disable-openssl --enable-avresample --enable-libcdio --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-pic --enable-pthreads --enable-vaapi --enable-vdpau --enable-libfdk_aac --enable-nonfree --enable-libmp3lame --enable-libtwolame --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab

  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vdpau ) (encoders: libx264 libx264rgb )


So the “libx264” encoder should be available.

Or even provide me another solution other than ffmpeg to easily convert videos via command line?

You probably could use the “x264” encoder utility that is part of libx264 (in the separate package x264), I’m not sure about the command line though.
But if ffmpeg doesn’t “work”, x264 probably will not be able to read the input file either (as it uses ffmpeg’s libraries for that AFAIK, for some formats at least).

In have openSUSE 12.3 min server only install.

Hm?
I thought this is about 13.2? :wink:

hi
I have the same problem, and ffmpeg from packman.

And what does "ffmpeg -codecs|grep x264 say?

and ffmpeg from packman.

As you can see in my previous post, ffmpeg from packman is compiled with the libx264 encoder, the 3.0 version at least.

But: ffmpeg is just a command line frontend. You need all the corresponding libraries from Packman as well.
So, as I already wrote, do a full switch to Packman (even if you did it already some time ago), and it should work.
You can either use YaST or zypper for that, see:
https://en.opensuse.org/SDB:Vendor_change_update#Full_repository_Vendor_change

OTOH, Packman offers several ffmpeg versions, so it might be interesting to know which one you installed in particular:

rpm -qa ffmpeg*

For reason that must be related to OSS licensing, the suse-built ffmpeg doesn’t include support for encoders such as x264, x265

ffmpeg -codecs | grep 26

gives


..V.L. flv1                 FLV / Sorenson Spark / Sorenson H.263 (Flash Video)
 ..V.L. h261                 H.261
 D.V.L. h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 ..V.L. h263i                Intel H.263
 ..V.L. h263p                H.263+ / H.263-1998 / H.263 version 2
 ..V.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 D.V.L. hevc                 H.265 / HEVC (High Efficiency Video Coding)
 ..A.L. adpcm_g726           G.726 ADPCM
 ..A.L. adpcm_g726le         G.726 ADPCM little-endian

  • showing it has decoders only. The easiest solution is to install the Packman version of ffmpeg and associated libraries (change of vendor in YAST) - and make sure you have x264 itself installed too. Or build from source, but that’s a bit of a job.

Your listing of ffmpeg -codecs | grep 26 should then look something like this :slight_smile:

 DEV.L. flv1                 FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (decoders: flv ) (encoders: flv )
 DEV.L. h261                 H.261
 DEV.L. h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 D.V.L. h263i                Intel H.263
 DEV.L. h263p                H.263+ / H.263-1998 / H.263 version 2
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vdpau ) (encoders: libx264 libx264rgb h264_vaapi )
 DEV.L. hevc                 H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 hevc_vaapi )
 DEA.L. adpcm_g726           G.726 ADPCM (decoders: g726 ) (encoders: g726 )
 D.A.L. adpcm_g726le         G.726 ADPCM little-endian (decoders: g726le )

Re-installation according to http://www.opensuse-guide.org/codecs.php solved the same issue for me.