openwrt에서 웹캠으로 ffmpeg로 동영상 저장을 시도하려는 데 에러가 발생합니다.

sky_cloud의 이미지

현재 모르는 것이 많아서
너무나 초보적인 문제를 올리게 되네요......
웹캠에서 ffmpeg로 동영상 켭쳐를 하려는 데 에러가 나옵니다.

root@OpenWrt:/# ffmpeg -an -f video4linux -s 640x480 -b 800k -r 15 -i /dev/video0 -vcodec mpeg4 -f mpegvideo myvideo.avi

FFmpeg version SVN-r12898, Copyright (c) 2000-2008 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-ffmpeg --enable-ffserver --enable-gpl --enable-libfaad --disable-mmx --disable-mmx2 --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 Mar 20 2010 06:59:40, gcc: 4.3.3
Input #0, video4linux, from '/dev/video0':
Duration: N/A, bitrate: 73728 kb/s
Stream #0.0: Video: YUY2 / 0x32595559, yuyv422, 640x480, 73728 kb/s, 15.00 tb(r)
Unable to find a suitable output format for 'myvideo.avi'

에러상으로는 output 포멧을 못 찾아서 발생하는 에러같은 데
무엇이 잘 못되었나요?

wputer의 이미지

파일명을 myvideo.mp4나
myvideo.mpeg4로 해보세요

sky_cloud의 이미지

파일명를 바꾸어도 변함이 없고
output에 -vcodec을 libx264나 다른 코덱으로 바꾸어도 안되고 -f로 format 지정해도 안되네요

리눅스상에서 동작되는 인터넷상의 예제를 그대로 해도 안되는 것을 보니
뭔가 잘못하고 있는것이 있나봐요

wputer의 이미지

x264는 라이브러리가 설치가 안된거 같아요 x264 라이브러리 설치하고 해보세요

chanik의 이미지

'-f mpegvideo' 옵션이 문제를 일으키는 것 같습니다.

ffmpeg -formats 명령으로 사용중인 ffmpeg 빌드의 지원포맷을 볼 수 있는데,
아래의 예를 보시면 mpegvideo 포맷은 디먹스만 지원하고 먹스는 지원하지 않는 것으로 나오죠.

$ ffmpeg -formats
.
.
File formats:
 D. = Demuxing supported
 .E = Muxing supported
 --
.
.
  E mp4             MP4 format
 D  mpc             Musepack
 D  mpc8            Musepack SV8
 DE mpeg            MPEG-1 System format
  E mpeg1video      raw MPEG-1 video
  E mpeg2video      raw MPEG-2 video
 DE mpegts          MPEG-2 transport stream format
 D  mpegtsraw       MPEG-2 raw transport stream format
 D  mpegvideo       raw MPEG video
.
.

출력에 사용할 먹스포맷은 굳이 지정하지 않아도 ffmpeg이 출력파일명을 보고 알아서 유추해냅니다.
myvideo.avi라고 하면 avi 먹스를 해 주고, myvideo.mp4라고 하면 mp4 포맷으로 먹스해줍니다.

요컨데, 사용하신 명령에서 -f mpegvideo 옵션을 빼고 시도해 보세요.

그런데, OpenWRT 실행하시는 환경의 MIPS CPU 성능이 PC처럼 높지는 않을텐데
VGA급 실시간 MPEG4 인코딩이 가능할지가 우려되는군요..

chanik의 이미지

제 이전 댓글은 제가 쓰는 x86 리눅스 환경에서 간단히 테스트해보고 올린 것입니다.
-f mpegvideo 옵션만 제거하면 출력파일 이름에 따라서 알아서 동작하더군요.

그런데, 지금 사용하시는 ffmpeg의 빌드옵션을 살펴보니, 인코더와 먹서가 모두 꺼진 상태네요.
아래와 같은 동작을 원하시는 것 같은데요;
[1] video4linux 장치로부터 프레임을 읽어들여
[2] 640x480 MPEG4로 실시간 인코딩하고
[3] .avi 또는 .mp4로 저장

지금 쓰시는 ffmpeg은 [2]와 [3] 모두 지원하지 않는 상태같습니다.
--disable-encoders, --disable-muxers 등 인코더와 먹서를 모두 끄는 빌드옵션만 있고
켜는 옵션은 --enable-muxer=ffm 하나 뿐이군요. 디코딩 전용으로 빌드된 것이죠.

인코더와 먹서가 켜진 ffmpeg 빌드를 찾거나, 직접 켜고 빌드하셔야 할 것 같습니다.
그 문제를 해결하고 나면 CPU 성능이 발목을 잡을 것 같네요..

sky_cloud의 이미지

ffmpeg 패키지가 openwrt로 나온 것은

몇가지 옵션이 없다고는 알고있었으나 그런 문제가 있었네요

빌드를 시도해보고 그래도 작동이 제대로 안되면 다른 방법으로 해야겠네요

환경 조건이 까다로우니 생각보다 보통의 리눅스에서의 기능과 동작에 차이가 크군요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.