OpenWrt Forum Archive

Topic: ffmpeg and file not found

The content of this topic has been archived on 25 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi all,

I run kamikaze 8.09 on a nslu2. I'm trying to get ffmpeg working, with no avail. I've tried to concatenate images into a video, ffmpeg -i %02d.jpg test.mp4 but says "file not found".
I'm trying to convert video, but same error. Here's the output:

# ffmpeg -i /mnt/file.mjpg test.mp4
FFmpeg version SVN-r12898, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --enable-cross-compile --cross-prefix=armeb-linux-uclibc- --arch=armeb --prefix=/usr --enable-shared --enable-static --disable-debug --enable-ffmpeg --enable-ffserver --enable-gpl --disable-ipv6 --enable-libfaad --enable-pthreads --disable-optimizations --enable-small --disable-stripping --disable-vhook --enable-zlib --enable-postproc --disable-encoders --disable-decoders --enable-decoder=ac3 --enable-decoder=atrac3 --enable-decoder=h264 --enable-decoder=jpegls --enable-decoder=mp3 --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --enable-decoder=mpegvideo --enable-decoder=png --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=zlib --disable-muxers --enable-muxer=ffm --disable-demuxers --enable-demuxer=ac3 --enable-demuxer=h264 --enable-demuxer=mp3 --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=rtsp --enable-demuxer=sdp --disable-parsers --enable-parser=ac3 --enable-parser=h264 --enable-parser=mpegaudio --enable-parser=mpegvideo --disable-bsfs --disable-protocols --enable-protocol=rtp --enable-protocol=udp
  libavutil version: 49.6.0
  libavcodec version: 51.55.0
  libavformat version: 52.13.0
  libavdevice version: 52.0.0
  built on Feb  3 2009 10:11:37, gcc: 4.1.2
/mnt/file.mjpg: no such file or directory


Does anyone have this problem? I need to make video format conversion into the nslu2. It's going to be an autonomous video surveillance system, so I can't send the files to another system for conversion.

xeper wrote:

Hi all,

I run kamikaze 8.09 on a nslu2. I'm trying to get ffmpeg working, with no avail. I've tried to concatenate images into a video, ffmpeg -i %02d.jpg test.mp4 but says "file not found".
I'm trying to convert video, but same error. Here's the output:

# ffmpeg -i /mnt/file.mjpg test.mp4
FFmpeg version SVN-r12898, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --enable-cross-compile --cross-prefix=armeb-linux-uclibc- --arch=armeb --prefix=/usr --enable-shared --enable-static --disable-debug --enable-ffmpeg --enable-ffserver --enable-gpl --disable-ipv6 --enable-libfaad --enable-pthreads --disable-optimizations --enable-small --disable-stripping --disable-vhook --enable-zlib --enable-postproc --disable-encoders --disable-decoders --enable-decoder=ac3 --enable-decoder=atrac3 --enable-decoder=h264 --enable-decoder=jpegls --enable-decoder=mp3 --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --enable-decoder=mpegvideo --enable-decoder=png --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=zlib --disable-muxers --enable-muxer=ffm --disable-demuxers --enable-demuxer=ac3 --enable-demuxer=h264 --enable-demuxer=mp3 --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=rtsp --enable-demuxer=sdp --disable-parsers --enable-parser=ac3 --enable-parser=h264 --enable-parser=mpegaudio --enable-parser=mpegvideo --disable-bsfs --disable-protocols --enable-protocol=rtp --enable-protocol=udp
  libavutil version: 49.6.0
  libavcodec version: 51.55.0
  libavformat version: 52.13.0
  libavdevice version: 52.0.0
  built on Feb  3 2009 10:11:37, gcc: 4.1.2
/mnt/file.mjpg: no such file or directory


Does anyone have this problem? I need to make video format conversion into the nslu2. It's going to be an autonomous video surveillance system, so I can't send the files to another system for conversion.

ffmpeg seems to pick the libraries from your /usr/local/lib which can create a problem. Not sure if it is relevant in your case but I had this issue.

i've just copied /usr/lib/libav* to /usr/local/lib (i had to create this directory).

unfortunately i get same results, /mnt/file.mjpg: no such file or directory

sad

xeper wrote:

i've just copied /usr/lib/libav* to /usr/local/lib (i had to create this directory).

unfortunately i get same results, /mnt/file.mjpg: no such file or directory

sad

oh. Sorry to hear. I am not an expert but when I read the motion guide, I found references to /usr/local during build time which shows that the libraries from your laptop are going into the build!!! I am not sure if ffmpeg/motion is completely up to cross compile. The ffmpeg makefile has --crosscompile

It seems that the problem is the ffmpeg included in openwrt. Same thing happend for me. You can see that ffmpeg package size is pretty small.

I installed ffmpeg from nslu distribution and that one seems to work (its size is much bigger).

If need details how to do this, please let me know.

Anyone have any ideas what the problem is with the OpenWRT version of ffmpeg?  I know to install the nslu2 version, but would rather fix the OpenWRT version to keep the reduced file-size.

Made a bit of progress on this.  There seem to be couple problems with the official packages.  Number one is that ffmpeg doesn't seem to explicitly call libffmpeg as a dependency.   Second, and perhaps more importantly the official libffmpeg package appears to be broken.  However if you compile it from the SVN feed with it's various audio decoding functions enabled at compile time then the 'file not found' errors go away.  I suspect that maybe no codecs/functions are enabled in the official libffmpeg package.  I confirmed this somewhat by forcing a reinstall of the official package over top of my functioning libffmpeg and the 'file not found' errors came back.

Unfortunately ffmpeg still isn't really working for me - I wanted it to decode a variety of formats, in particular m4a/aac.  Mpeg4 support is enabled at compile time, as is libfaad2, but it doesn't recognize m4a files.  Now instead of ffmpeg -i reporting 'file not found' it reports 'unknown format'.   If anyone has any ideas what compile time flags I might need to get m4a recognized let me know.

Has anyone successfully used ffmpeg in backfire? I still have problems with "no such file..."

I just have to ask, why do you have an application like ffmpeg on a router? what are you doing with it?

Also make sure /mnt/file.mjpg exists and double check its permissions.

(Last edited by Zz on 24 Aug 2010, 21:54)

gsedej wrote:

Has anyone successfully used ffmpeg in backfire? I still have problems with "no such file..."

I have had some problems with ffmpeg on 8.09.2 when using minidlna because it was missing a few features (e.g. the FILE protocol). Have you tried to recompile ffmpeg to include your required features?

Zz: would like to open some v4l2 video device (usb frame grabber). mpeg_stramer does not work with my device (no fully standard driver), but I can open in device on my PC.
http://sourceforge.net/projects/easycap … dex/page/1

DkSoul: I am using trunk. I looks like it's broken.
I recive error:

...
cp -fpR /home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-install/usr/bin/ffmpeg /home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-brcm47xx/ffmpeg/usr/bin/
cp: cannot stat `/home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-install/usr/bin/ffmpeg': No such file or directory
make[3]: *** [/home/gasper/Projects/backfire/bin/brcm47xx/packages/ffmpeg_0.5.2-4_brcm47xx.ipk] Error 1
...

https://dev.openwrt.org/browser/package … dia/ffmpeg

gsedej wrote:

DkSoul: I am using trunk. I looks like it's broken.
I recive error:

...
cp -fpR /home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-install/usr/bin/ffmpeg /home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-brcm47xx/ffmpeg/usr/bin/
cp: cannot stat `/home/gasper/Projects/backfire/build_dir/target-mipsel_uClibc-0.9.30.1/ffmpeg-0.5.2/ipkg-install/usr/bin/ffmpeg': No such file or directory
make[3]: *** [/home/gasper/Projects/backfire/bin/brcm47xx/packages/ffmpeg_0.5.2-4_brcm47xx.ipk] Error 1
...

https://dev.openwrt.org/browser/package … dia/ffmpeg

It compiles fine here. I used the following (from http://wiki.openwrt.org/doc/howto/build?s):

~$ svn co svn://svn.openwrt.org/openwrt/trunk/
~$ cd trunk/
~/trunk$ ./scripts/feeds update
~/trunk$ ./scripts/feeds install -a
~/trunk$ make menuconfig
~/trunk$ make tools/install
~/trunk$ make toolchain/install
~/trunk$ make package/ffmpeg/compile

Please note that libffmpeg has more options than those shown on make menuconfig.

(Last edited by DkSoul on 25 Aug 2010, 16:58)

Hi,

Thanks DkSoul! I was able to compile ffmpeg and libffmpeg.
Now I am not able to open my v4l2 camera.

ffmpeg -r 5 -t 2 -s 640x480 -f video4linux2 -i /dev/video0

it says:

Unknown input or output format: video4linux2

Any idea how to enable to open video4linux2 devices? I can't see option in menuconfig? How to enable outside it?

btw, whole output

root@OpenWrt:/mnt/packages# ffmpeg -r 5 -t 2 -s 640x480 -f video4linux2 -i /dev/video0
FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-cross-compile --cross-prefix=mipsel-openwrt-linux-uclibc- --arch=mipsel --prefix=/usr --enable-shared --enable-static --disable-debug --enable-gpl --disable-libfaad --disable-mmx --disable-mmx2 --enable-pthreads --disable-optimizations --enable-small --disable-stripping --disable-vhook --enable-zlib --enable-postproc --disable-bsfs --disable-devices --disable-encoders --enable-encoder=mpeg2video --enable-encoder=mpeg4 --disable-decoders --enable-decoder=h264 --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --disable-muxers --enable-muxer=ffm --enable-muxer=h264 --enable-muxer=mpeg2video --enable-muxer=mpegts --disable-demuxers --enable-demuxer=ffm --enable-demuxer=h264 --enable-demuxer=mpegps --enable-demuxer=mpegts --enable-demuxer=rm --enable-demuxer=rtsp --enable-demuxer=sdp --disable-parsers --enable-parser=h264 --enable-parser=mpegvideo --enable-parser=mpeg4video --disable-protocols --enable-protocol=file --enable-protocol=http --enable-protocol=rtp --enable-protocol=tcp --enable-protocol=udp
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Aug 30 2010 14:42:25, gcc: 4.3.3
Unknown input or output format: video4linux2
root@OpenWrt:/mnt/packages#

there is --disable-devices - this is wrong?

Gašper

(Last edited by gsedej on 30 Aug 2010, 14:23)

I can only give you some generic guidelines on how to get the extra configuration options into your ffmpeg package.

After building/tried to build ffmpeg:

~/trunk$ cd build_dir/target-XXXXX_uClibc-0.9.30.1/ffmpeg-0.5.2/                      # Replace XXXXX with your architecture
~/trunk/build_dir/target-XXXXX_uClibc-0.9.30.1/ffmpeg-0.5.2$ ./configure --help       # Lists all configuration options
[...]
  --list-decoders          show all available decoders
  --list-encoders          show all available encoders
  --list-muxers            show all available muxers
  --list-demuxers          show all available demuxers
  --list-parsers           show all available parsers
  --list-protocols         show all available protocols
  --list-bsfs              show all available bitstream filters
  --list-indevs            show all available input devices
  --list-outdevs           show all available output devices
  --list-filters           show all available filters
[...]
~/trunk/build_dir/target-XXXXX_uClibc-0.9.30.1/ffmpeg-0.5.2$ ./configure --list-YYYYY # Lists all available YYYYY
~/trunk/build_dir/target-XXXXX_uClibc-0.9.30.1/ffmpeg-0.5.2$ cd ../../../package/feeds/packages/ffmpeg/
~/trunk/package/feeds/packages/ffmpeg$ vi Makefile                                    # Search for the "define Build/Configure" section and make the necessary changes
~/trunk/package/feeds/packages/ffmpeg$ cd ../../../../
~/trunk$ make package/ffmpeg/compile

Hi, DkSoul

Thanks for very helpful post. I was able to compile ffmpeg. However I was not able to make it work right.

When I open web camera it says this and freezes:

root@OpenWrt:~# ffmpeg -r 25 -s 640x480 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffmffmpeg -r 25 -s 640x480 -f video4linux2 -i /d
ev/video0 http://localhost:8090/feed1.ffm
FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-cross-compile --cross-prefix=mipsel-openwrt-linux-uclibc- --arch=mipsel --prefix=/usr --enable-shared --enable-static --disable-debug --enable-gpl --disable-libfaad --disable-mmx --disable-mmx2 --enable-pthreads --disable-optimizations --enable-small --disable-stripping --disable-vhook --enable-zlib --enable-postproc --disable-bsfs --disable-encoders --enable-encoder=ac3 --enable-encoder=mpeg2video --enable-encoder=mpeg4 --enable-encoder=png --enable-encoder=vorbis --enable-encoder=zlib --disable-decoders --enable-decoder=ac3 --enable-decoder=atrac3 --enable-decoder=h264 --enable-decoder=jpegls --enable-decoder=mp3 --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --enable-decoder=mpegvideo --enable-decoder=png --enable-decoder=vorbis --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=zlib --disable-muxers --enable-muxer=ffm --enable-muxer=h264 --enable-muxer=mp3 --enable-muxer=mp4 --enable-muxer=mpeg2video --enable-muxer=mpegts --enable-muxer=ogg --disable-demuxers --enable-demuxer=ac3 --enable-demuxer=ffm --enable-demuxer=h264 --enable-demuxer=mp3 --enable-demuxer=mpegps --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=ogg --enable-demuxer=rm --enable-demuxer=rtsp --enable-demuxer=sdp --disable-parsers --enable-parser=aac --enable-parser=ac3 --enable-parser=h264 --enable-parser=mpegvideo --enable-parser=mpeg4video --disable-protocols --enable-protocol=file --enable-protocol=http --enable-protocol=pipe --enable-protocol=rtp --enable-protocol=tcp --enable-protocol=udp
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Aug 31 2010 11:29:05, gcc: 4.3.3
[video4linux2 @ 0x42d430][3]Capabilities: 4000001

I was not able to get dmesg. I tested on two cameras.

However my goal is to use EasyCap dc60 framegrabber on it with some assigned driver.
I am able to open device but there it looks like problem with codecs.

root@OpenWrt:~# ffmpeg -r 25 -s 640x480 -f video4linux2 -i /dev/easycap0 http://localhost:8090/feed1.ffm
FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-cross-compile --cross-prefix=mipsel-openwrt-linux-uclibc- --arch=mipsel --prefix=/usr --enable-shared --enable-static --disable-debug --enable-gpl --disable-libfaad --disable-mmx --disable-mmx2 --enable-pthreads --disable-optimizations --enable-small --disable-stripping --disable-vhook --enable-zlib --enable-postproc --disable-bsfs --disable-encoders --enable-encoder=ac3 --enable-encoder=mpeg2video --enable-encoder=mpeg4 --enable-encoder=png --enable-encoder=vorbis --enable-encoder=zlib --disable-decoders --enable-decoder=ac3 --enable-decoder=atrac3 --enable-decoder=h264 --enable-decoder=jpegls --enable-decoder=mp3 --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=mpeg4 --enable-decoder=mpeg4aac --enable-decoder=mpegvideo --enable-decoder=png --enable-decoder=vorbis --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=zlib --disable-muxers --enable-muxer=ffm --enable-muxer=h264 --enable-muxer=mp3 --enable-muxer=mp4 --enable-muxer=mpeg2video --enable-muxer=mpegts --enable-muxer=ogg --disable-demuxers --enable-demuxer=ac3 --enable-demuxer=ffm --enable-demuxer=h264 --enable-demuxer=mp3 --enable-demuxer=mpegps --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=ogg --enable-demuxer=rm --enable-demuxer=rtsp --enable-demuxer=sdp --disable-parsers --enable-parser=aac --enable-parser=ac3 --enable-parser=h264 --enable-parser=mpegvideo --enable-parser=mpeg4video --disable-protocols --enable-protocol=file --enable-protocol=http --enable-protocol=pipe --enable-protocol=rtp --enable-protocol=tcp --enable-protocol=udp
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Aug 31 2010 11:29:05, gcc: 4.3.3
[video4linux2 @ 0x42d430][3]Capabilities: 5020001
Input #0, video4linux2, from '/dev/easycap0':
  Duration: N/A, start: 1283254106.450023, bitrate: 122880 kb/s
    Stream #0.0: Video: YUY2 / 0x32595559, yuyv422, 640x480, 122880 kb/s, 25 tbr, 1000k tbn, 25 tbc
[imgconvert @ 0x431f70]PIX_FMT_YUV420P will be used as an intermediate format for rescaling
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
    Stream #0.0: Video: mpeg4, yuv420p, 352x288, q=1-5, 200 kb/s, 1000k tbn, 15 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Unsupported codec (id=14) for input stream #0.0
ioctl(VIDIOC_QBUF)

and here is dmesg. I looks like framegraber opens correctly.

easycap: easycap_open: ==========OPEN=========
easycap: easycap_open: starting initialization
easycap: adjust_standard: user requests standard: PAL_BGHIN
easycap: adjust_format: sought:    640x480,UYVY(0x59565955),1=field,0x00=std mask
easycap: adjust_format: actioning: 640x480 PAL_BGHIN_AT_640x480_FMT_UYVY-n
easycap: adjust_brightness: adjusting brightness to  0x7F
easycap: adjust_contrast: adjusting contrast to  0x3F
easycap: adjust_saturation: adjusting saturation to  0x2F
easycap: adjust_hue: adjusting hue to  0x00
easycap: easycap_open: finished initialization
easycap: adjust_format: sought:    640x480,YU12(0x32315559),4=field,0x00=std mask
easycap: adjust_format: cannot do: 640x480 with standard mask 0x00
easycap: adjust_format: cannot do 640x... with standard mask 0x00
easycap: adjust_format: cannot do ...x480 with standard mask 0x00
easycap: adjust_format:            640x480 unmatched 
easycap: adjust_format: sought:    640x480,422P(0x50323234),4=field,0x00=std mask
easycap: adjust_format: cannot do: 640x480 with standard mask 0x00
easycap: adjust_format: cannot do 640x... with standard mask 0x00
easycap: adjust_format: cannot do ...x480 with standard mask 0x00
easycap: adjust_format:            640x480 unmatched 
easycap: adjust_format: sought:    640x480,YUYV(0x56595559),4=field,0x00=std mask
easycap: adjust_format: actioning: 640x480 PAL_BGHIN_AT_640x480_FMT_YUY2-i
easycap: easycap_ioctl: user requests input 0
easycap: easycap_ioctl: requested input already in effect
easycap: submit_video_urbs: submission of all video urbs
easycap: submit_video_urbs: ERROR: not ready to capture after waiting one second
easycap: submit_video_urbs: .....  continuing anyway
easycap: submit_video_urbs: submitted 16 video urbs
easycap: easycap_release: 
easycap: kill_video_urbs: killing video urbs
easycap: kill_video_urbs: 16 video urbs killed
easycap: easycap_release: ending successfully

and here is my ffsever.conf

root@OpenWrt:~# cat /etc/ffserver.conf
Port 8090 
# bind to all IPs aliased or not 
BindAddress 0.0.0.0 
# max number of simultaneous clients 
MaxClients 1000 
# max bandwidth per-client (kb/s) 
MaxBandwidth 10000 s
# Suppress that if you want to launch ffserver as a daemon. 
NoDaemon 

<Feed feed1.ffm> 
File /tmp/feed1.ffm 
FileMaxSize 5M 
</Feed> 

# mpeg
<Stream test.mpg> 
# the source feed 
Feed feed1.ffm 
# the output stream format - FLV = FLash Video 
Format mpegts
VideoCodec mpeg4
# this must match the ffmpeg -r argument 
VideoFrameRate 15 
# generally leave this is a large number 
VideoBufferSize 80000 
# another quality tweak 
VideoBitRate 200 
# quality ranges - 1-31 (1 = best, 31 = worst) 
VideoQMin 1 
VideoQMax 5 
VideoSize 640x480
# this sets how many seconds in past to start 
PreRoll 0 
# wecams don't have audio 
Noaudio 
</Stream>

Did I choose correct codec? Which is "good" for "slow" router CPU?  (fast encoder)
Thanks

BTW: here is thread on EasyCap driver forum: https://sourceforge.net/projects/easyca … dex/page/1

gsedej wrote:
Unsupported codec (id=14) for input stream #0.0

From ffmpeg-0.5.2/libavcodec/avcodec.h, it seems that the coded with id=14 is CODEC_ID_RAWVIDEO.

Hi again

I comiled ffmpeg again (and again...) so it includes as much as possible. I become really big, so I installed on external USB stick.
It still says can't find codec.

Was someone able to use Webcam with ffmpeg on openWRT?

Trying to capture from a UVC web cam connected via USB.

Coming to the same result as you, gsedej.

actually i am trying to capture from my external ip camera, the problem is ffmpeg has filters disabled.
I tried to enabled them but i get segmentation fault. So i have no idea how to fix your problem.

I've been working on ffmpeg as well. I'm not even trying to get as fancy as you guys, just want to convert a file.
After compiling with --enable-filters  and --enable-avfilter I was able to get ffmpeg at least running.
And now I'm also staring at the "segmentation fault" as well.

The discussion might have continued from here.