4

I'm trying to run ffmpeg on a linux server (info from uname -a):

Linux comp32 2.6.32-279.14.1.el6.x86_64 #1 SMP Tue Nov 6 11:21:14 CST 2012 x86_64 x86_64 x86_64 GNU/Linux

ffmpeg (together with the required encoders and decoders) compiles successfully on the system, but when I try to perform a basic operation like the following: ffmpeg -v debug -i example.m4v image%d.jpg, I get a slightly cryptic error message:

ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.7.1 (GCC)
configuration: --prefix=/users/albanie/local/usr
libavutil      54. 31.100 / 54. 31.100
libavcodec     56. 60.100 / 56. 60.100
libavformat    56. 40.101 / 56. 40.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 40.101 /  5. 40.101
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.101 /  1.  2.101
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-i' ... matched as input file with argument 'example.m4v'.
Reading option 'image%d.jpg' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file example.m4v.
Successfully parsed a group of options.
Opening an input file: example.m4v.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ee2380] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ee2380] ISO: File Type Major Brand: M4V
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ee2380] Before avformat_find_stream_info() pos: 185580655 bytes read:927102 seeks:1
[h264 @ 0x2ee3720] no picture
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ee2380] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ee2380] After avformat_find_stream_info() pos: 24214 bytes read:959870 seeks:2 frames:3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.m4v':
Metadata:
  major_brand     : M4V
  minor_version   : 512
  compatible_brands: isomiso2avc1
  encoder         : Lavf56.25.101
Duration: 00:13:47.93, start: 0.033333, bitrate: 1793 kb/s
Stream #0:0(und), 2, 1/30000: Video: h264 (High), 4 reference frames (avc1 / 0x31637661), yuv420p(left), 720x576 [SAR 64:45 DAR 16:9], 1001/60000, 1656 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
  handler_name    : VideoHandler
Stream #0:1(eng), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
  handler_name    : SoundHandler
Successfully opened the file.
Parsing a group of options: output file image%d.jpg.
Successfully parsed a group of options.
Opening an output file: image%d.jpg.
Successfully opened the file.
detected 32 logical cores
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'video_size' to value '720x576'
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'time_base' to value '1/30000'
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'pixel_aspect' to value '64/45'
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x303f7c0] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0x303f7c0] w:720 h:576 pixfmt:yuv420p tb:1/30000 fr:30000/1001 sar:64/45 sws_param:flags=2
[format @ 0x2f750c0] compat: called with args=[yuvj420p|yuvj422p|yuvj444p]
[format @ 0x2f750c0] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p'
[auto-inserted scaler 0 @ 0x2f75f00] Setting 'flags' to value 'bicubic'
[auto-inserted scaler 0 @ 0x2f75f00] w:iw h:ih flags:'bicubic' interl:0
[format @ 0x2f750c0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 0x303f720] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed
[auto-inserted scaler 0 @ 0x2f75f00] picking yuvj420p out of 3 ref:yuv420p alpha:0
[swscaler @ 0x2f664a0] deprecated pixel format used, make sure you did set range correctly
[auto-inserted scaler 0 @ 0x2f75f00] w:720 h:576 fmt:yuv420p sar:64/45 -> w:720 h:576 fmt:yuvj420p sar:64/45 flags:0x4
[mjpeg @ 0x2ee96c0] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores
[mjpeg @ 0x2ee96c0] intra_quant_bias = 96 inter_quant_bias = 0
Output #0, image2, to 'image%d.jpg':
Metadata:
  major_brand     : M4V
  minor_version   : 512
  compatible_brands: isomiso2avc1
  encoder         : Lavf56.25.101
Stream #0:0(und), 0, 1001/30000: Video: mjpeg, 1 reference frame, yuvj420p(pc, left), 720x576 [SAR 64:45 DAR 16:9], 1001/30000, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default)
Metadata:
  handler_name    : VideoHandler
  encoder         : Lavc56.60.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Error while opening decoder for input stream #0:0 : Resource temporarily unavailable
[AVIOContext @ 0x2eeaee0] Statistics: 959870 bytes read, 2 seeks

I also tried using a static build off ffmpeg, downloaded from here, but got the same resource temporarily unavailable message. Any ideas on how I might be able to fix this?

Cabbage soup
  • 1,344
  • 1
  • 18
  • 26
  • As an update, I also tried the suggestion of using `-thread_type slice`, which changed the error to this: `Error while opening decoder for input stream #0:0 : Operation not permitted` – Cabbage soup Oct 26 '15 at 08:32

1 Answers1

7

Figured it out - it was a "system" issue rather than an ffmpeg issue. I was running on a compute node of a cluster which (silently) enforced single-threaded code. I was able to get ffmpeg to run by changing the command to include an extra flag, -threads 1 so that the command was:

ffmpeg -threads 1 -i example.m4v image%d.jpg

Hope this proves useful to someone else with facing the same headache.

Cabbage soup
  • 1,344
  • 1
  • 18
  • 26