Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
FFmpeg capabillities when compiled in LGPL mode
4 novembre 2013, par powerXI'm searching all over the web to find out what capabillities of the FFmpeg library one loses when he compiles is under the LGPL license. I went deeper on that question, downloaded and checked the license of every library inside FFmpeg and receive that the following internal libs are under the GPL license:
frei0r,gnutls,lame,libass,libiconv,rtmpdump,schroedinger,vid.stab,x264,xavs,xvid
and the following are under the LGPL license:
bzip2,fontconfig,libbluray,libgsm,libtheora,libvorbis,libvpx,opus,soxr,twolame
Now, I can go and read the documentation(if any) of those libraries(and I did) but it still vague about what capabillities are lost when using it under the LGPL license.
-
FFMPEG Invalid value '1' for option 'loop'
4 novembre 2013, par helloworldI am trying to run this code (It did work on my previously server, but now i keep getting this annoying error):
ffmpeg -loop 1 -r 25 -t 322 -i /home/kampmann/public_html/m/xxx/movie_10262.jpg -q:v 1 -an /home/kampmann/public_html/m/xxxs/573240.mp4 2>&1
Error: Invalid value '1' for option 'loop'
Here is my output.
FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6) configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab libavutil 50.15. 1 / 50.15. 1 libavcodec 52.72. 2 / 52.72. 2 libavformat 52.64. 2 / 52.64. 2 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1.19. 0 / 1.19. 0 libswscale 0.11. 0 / 0.11. 0 libpostproc 51. 2. 0 / 51. 2. 0 Invalid value '1' for option 'loop'
-
Odd X server error with ffmpeg
4 novembre 2013, par jhc
I am building a weather data acquisition system. One of the things I would like to do would be to animate the satellite data that is arriving every 15 minutes. In fact, I have already devised a script (calledanimate
) that successfully joins eight hours worth of PNG images into an AVI video file. This runs fine when run manually from the terminal.Unfortunately, the same cannot be said when run from my (as in my user, not root) crontab.
Below is the cron job that I mentioned:
1,16,31,46 * * * * /home/daniella/bin/anim_all > /home/daniella/logs/anim_all.log 2>&1
anim_all
simply calls animate for each distinct data product:#!/bin/bash set -x cd /home/daniella/data/imager rm -rf HRIT_MSG3_*.avi animate HRIT_MSG3_CTT animate HRIT_MSG3_IR108 animate HRIT_MSG3_VIS006 animate HRIT_MSG3_WV062
And animate itself calls
ffmpeg
.#!/bin/bash set -x cd /home/daniella/data/imager product=$1 hl="$product.8hl" declare -i i=0 for file in $(cat $hl); do link=$(printf "images%02d.png" $i) ln -sf $file $link i=$((i+1)) echo $i done ffmpeg -sameq -r 15 -i images%02d.png $product.avi rm -rf images*.png
Just to be clear, the .8hl file is simply a list of PNG file paths that refer to that last 8 hours of data. Since there is new data every 15 minutes, that is a text file with 32 lines. Finally, this is the error that is returned when examining anim_all.log (referred in the crontab) file.
+ animate HRIT_MSG3_CTT animate: unable to open X server `' @ animate.c/AnimateImageCommand/365. + animate HRIT_MSG3_IR108 animate: unable to open X server `' @ animate.c/AnimateImageCommand/365. + animate HRIT_MSG3_VIS006 animate: unable to open X server `' @ animate.c/AnimateImageCommand/365. + animate HRIT_MSG3_WV062 animate: unable to open X server `' @ animate.c/AnimateImageCommand/365.
Please note that
anim_all
works fine, when called manually from the terminal. This error exists only when called by cron. I would imagine that this has to do with environment variables, but I have sourced my.bashrc
inside the script to no prevail.EDIT - Investigating the
animate.c
file itself (see the full code here), at lines 365-368, there is this:if (display == (Display *) NULL) ThrowAnimateException(XServerError,"UnableToOpenXServer", XDisplayName(server_name)); (void) XSetErrorHandler(XError);
In response, I have attempted to export the
$DISPLAY
variable to 127.0.0.0:0 in theanimate
script, but this has not worked. -
Getting “field has incomplete type” and "conflicting types"
4 novembre 2013, par VietI'm trying build pjsip from source with video support by gcc on ubuntu. After i success full run ./configure and make dep, i run make and i have error below:
../src/pjmedia/ffmpeg_util.c:46:18: error: field ‘codec_id’ has incomplete type ../src/pjmedia/ffmpeg_util.c:148:13: error: conflicting types for ‘pjmedia_format_id_to_CodecID’ ../src/pjmedia/ffmpeg_util.h:23:13: note: previous declaration of ‘pjmedia_format_id_to_CodecID’ was here ../src/pjmedia/ffmpeg_util.c: In function ‘pjmedia_format_id_to_CodecID’: ../src/pjmedia/ffmpeg_util.c:154:35: warning: comparison between pointer and integer [enabled by default] ../src/pjmedia/ffmpeg_util.c:155:6: error: dereferencing pointer to incomplete type ../src/pjmedia/ffmpeg_util.c:155:6: warning: statement with no effect [-Wunused-value] ../src/pjmedia/ffmpeg_util.c:160:5: error: dereferencing pointer to incomplete type ../src/pjmedia/ffmpeg_util.c:160:5: warning: statement with no effect [-Wunused-value] ../src/pjmedia/ffmpeg_util.c: At top level: ../src/pjmedia/ffmpeg_util.c:164:55: error: parameter 1 (‘codec_id’) has incomplete type
Here is the code in ffmpeg_util.h and ffmpeg_util.c
ffmpeg_util.h
#ifndef __PJMEDIA_FFMPEG_UTIL_H__ #define __PJMEDIA_FFMPEG_UTIL_H__ #include
format.h> #ifdef _MSC_VER # ifndef __cplusplus # define inline _inline # endif # pragma warning(disable:4244) /* possible loss of data */ #endif #include avutil.h> #include avcodec.h> void pjmedia_ffmpeg_add_ref(); void pjmedia_ffmpeg_dec_ref(); pj_status_t pjmedia_format_id_to_PixelFormat(pjmedia_format_id fmt_id, enum PixelFormat *pixel_format); pj_status_t PixelFormat_to_pjmedia_format_id(enum PixelFormat pf, pjmedia_format_id *fmt_id); pj_status_t pjmedia_format_id_to_CodecID(pjmedia_format_id fmt_id, enum CodecID *codec_id); pj_status_t CodecID_to_pjmedia_format_id(enum CodecID codec_id, pjmedia_format_id *fmt_id); #endif /* __PJMEDIA_FFMPEG_UTIL_H__ */ ffmpeg_util.c
#include
types.h> #include errno.h> #include log.h> #include string.h> #if PJMEDIA_HAS_LIBAVFORMAT && PJMEDIA_HAS_LIBAVUTIL #include "ffmpeg_util.h" #include avformat.h> #define MAKE_VER(mj,mn,mi) ((mj << 16) | (mn << 8) | (mi << 0)) #define VER_AT_LEAST(mj,mn,mi) (MAKE_VER(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MICRO) >= \ MAKE_VER(mj,mn,mi)) /* Conversion table between pjmedia_format_id and PixelFormat */ static const struct ffmpeg_fmt_table_t { pjmedia_format_id id; enum PixelFormat pf; } ffmpeg_fmt_table[] = { { PJMEDIA_FORMAT_RGBA, PIX_FMT_RGBA}, { PJMEDIA_FORMAT_RGB24,PIX_FMT_BGR24}, { PJMEDIA_FORMAT_BGRA, PIX_FMT_BGRA}, #if VER_AT_LEAST(51,20,1) { PJMEDIA_FORMAT_GBRP, PIX_FMT_GBR24P}, #endif { PJMEDIA_FORMAT_AYUV, PIX_FMT_NONE}, { PJMEDIA_FORMAT_YUY2, PIX_FMT_YUYV422}, { PJMEDIA_FORMAT_UYVY, PIX_FMT_UYVY422}, { PJMEDIA_FORMAT_I420, PIX_FMT_YUV420P}, //{ PJMEDIA_FORMAT_YV12, PIX_FMT_YUV420P}, { PJMEDIA_FORMAT_I422, PIX_FMT_YUV422P}, { PJMEDIA_FORMAT_I420JPEG, PIX_FMT_YUVJ420P}, { PJMEDIA_FORMAT_I422JPEG, PIX_FMT_YUVJ422P}, }; /* Conversion table between pjmedia_format_id and CodecID */ static const struct ffmpeg_codec_table_t { pjmedia_format_id id; enum CodecID codec_id; } ffmpeg_codec_table[] = { {PJMEDIA_FORMAT_H261, CODEC_ID_H261}, {PJMEDIA_FORMAT_H263, CODEC_ID_H263}, {PJMEDIA_FORMAT_H263P, CODEC_ID_H263P}, {PJMEDIA_FORMAT_H264, CODEC_ID_H264}, {PJMEDIA_FORMAT_MPEG1VIDEO, CODEC_ID_MPEG1VIDEO}, {PJMEDIA_FORMAT_MPEG2VIDEO, CODEC_ID_MPEG2VIDEO}, {PJMEDIA_FORMAT_MPEG4, CODEC_ID_MPEG4}, {PJMEDIA_FORMAT_MJPEG, CODEC_ID_MJPEG} }; static int pjmedia_ffmpeg_ref_cnt; static void ffmpeg_log_cb(void* ptr, int level, const char* fmt, va_list vl); void pjmedia_ffmpeg_add_ref() { if (pjmedia_ffmpeg_ref_cnt++ == 0) { av_log_set_level(AV_LOG_ERROR); av_log_set_callback(&ffmpeg_log_cb); av_register_all(); } } void pjmedia_ffmpeg_dec_ref() { if (pjmedia_ffmpeg_ref_cnt-- == 1) { /* How to shutdown ffmpeg? */ } if (pjmedia_ffmpeg_ref_cnt < 0) pjmedia_ffmpeg_ref_cnt = 0; } static void ffmpeg_log_cb(void* ptr, int level, const char* fmt, va_list vl) { const char *LOG_SENDER = "ffmpeg"; enum { LOG_LEVEL = 5 }; char buf[100]; int bufsize = sizeof(buf), len; pj_str_t fmt_st; /* Custom callback needs to filter log level by itself */ if (level > av_log_get_level()) return; /* Add original ffmpeg sender to log format */ if (ptr) { AVClass* avc = *(AVClass**)ptr; len = pj_ansi_snprintf(buf, bufsize, "%s: ", avc->item_name(ptr)); bufsize -= len; } /* Copy original log format */ len = pj_ansi_strlen(fmt); if (len > bufsize-1) len = bufsize-1; pj_memcpy(buf+sizeof(buf)-bufsize, fmt, len); bufsize -= len; /* Trim log format */ pj_strset(&fmt_st, buf, sizeof(buf)-bufsize); pj_strrtrim(&fmt_st); buf[fmt_st.slen] = '\0'; pj_log(LOG_SENDER, LOG_LEVEL, buf, vl); } pj_status_t pjmedia_format_id_to_PixelFormat(pjmedia_format_id fmt_id, enum PixelFormat *pixel_format) { unsigned i; for (i=0; iid==fmt_id && t->pf != PIX_FMT_NONE) { *pixel_format = t->pf; return PJ_SUCCESS; } } *pixel_format = PIX_FMT_NONE; return PJ_ENOTFOUND; } pj_status_t PixelFormat_to_pjmedia_format_id(enum PixelFormat pf, pjmedia_format_id *fmt_id) { unsigned i; for (i=0; ipf == pf) { if (fmt_id) *fmt_id = t->id; return PJ_SUCCESS; } } return PJ_ENOTFOUND; } pj_status_t pjmedia_format_id_to_CodecID(pjmedia_format_id fmt_id, enum CodecID *codec_id) { unsigned i; for (i=0; iid==fmt_id && t->codec_id != PIX_FMT_NONE) { *codec_id = t->codec_id; return PJ_SUCCESS; } } *codec_id = PIX_FMT_NONE; return PJ_ENOTFOUND; } pj_status_t CodecID_to_pjmedia_format_id(enum CodecID codec_id, pjmedia_format_id *fmt_id) { unsigned i; for (i=0; icodec_id == codec_id) { if (fmt_id) *fmt_id = t->id; return PJ_SUCCESS; } } return PJ_ENOTFOUND; } #ifdef _MSC_VER # pragma comment( lib, "avformat.lib") # pragma comment( lib, "avutil.lib") #endif #endif /* #if PJMEDIA_HAS_LIBAVFORMAT && PJMEDIA_HAS_LIBAVUTIL */ Help me fix this error!
-
Aforge FFMpeg DLL Location Issue
4 novembre 2013, par Sam35I'm using AForge FFMPEG libraries for video compression in .Net.Currently I've put the ffmpeg & Aforge libraries in the location which the application(.exe) exists.
I need to put these libraries in a common place.i've tried to put these libraries inside system32 folder. It is not working.
Is there any ways to put the Aforge & FFMpeg Libraries in a common place other than application(.exe) directory?