
Recherche avancée
Autres articles (102)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.
Sur d’autres sites (15645)
-
Building ffmpeg on Windows from Chromium - make : *** No rule to make target 'libavcodec\avcodec-57.dll'. Stop
14 septembre 2016, par Catalin FratilaI am trying to compile ffmpeg on a Windows machine, using mingw64 and msys2.
But when I run : "build_ffmpeg.py win ia32" (same result with x64), I get :
/c/libchromiumcontent/src/third_party/ffmpeg/chromium/scripts
$ ./build_ffmpeg.py win ia32
install prefix /usr/local
source path /c/libchromiumcontent/src/third_party/ffmpeg
C compiler gcc
C library mingw64
ARCH x86 (generic)
big-endian no
runtime cpu detection yes
yasm yes
MMX enabled yes
MMXEXT enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
AESNI enabled yes
AVX enabled yes
XOP enabled yes
FMA3 enabled yes
FMA4 enabled yes
i686 features enabled yes
CMOV is fast yes
EBX available yes
EBP available yes
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support no
new filter support no
network support no
threading support w32threads
safe bitstream reader yes
SDL support no
opencl enabled no
texi2html enabled no
perl enabled no
pod2man enabled no
makeinfo enabled no
makeinfo supports HTML no
Enabled programs:
External libraries:
Enabled decoders:
pcm_alaw pcm_f32le pcm_mulaw pcm_s16be pcm_s16le pcm_s24be pcm_s24le pcm_s32le pcm_u8 vorbis
Enabled encoders:
Enabled hwaccels:
Enabled parsers:
opus vorbis
Enabled demuxers:
matroska ogg wav
Enabled muxers:
Enabled protocols:
Enabled filters:
Enabled bsfs:
Enabled indevs:
Enabled outdevs:
License: LGPL version 2.1 or later
Creating config.mak, config.h, and doc/config.texi...
make: *** No rule to make target 'libavcodec\avcodec-57.dll'. Stop.
System information:
Host OS : win
Target OS : win
Host arch : x64
Target arch : ia32
Parallel jobs : 4
Chromium configure/build:
Running ['sh.exe', 'C:\\libchromiumcontent\\src\\third_party\\ffmpeg\\configure', '--disable-everything', '--disable-all', '--disable-doc', '--disable-htmlpages', '--disable-manpages', '--disable-podpages', '--disable-txtpages', '--disable-static', '--enable-avcodec', '--enable-avformat', '--enable-avutil', '--enable-fft', '--enable-rdft', '--enable-static', '--disable-bzlib', '--disable-error-resilience', '--disable-iconv', '--disable-lzo', '--disable-network', '--disable-schannel', '--disable-sdl', '--disable-symver', '--disable-xlib', '--disable-zlib', '--disable-securetransport', '--disable-d3d11va', '--disable-dxva2', '--disable-vaapi', '--disable-vda', '--disable-vdpau', '--disable-videotoolbox', '--enable-decoder=vorbis', '--enable-decoder=pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le', '--enable-decoder=pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw', '--enable-demuxer=ogg,matroska,wav', '--enable-parser=opus,vorbis', '--optflags="-O2"', '--enable-decoder=theora,vp8', '--enable-parser=vp3,vp8', '--toolchain=msvc', '--cpu=opteron', '--enable-yasm', '--extra-cflags=-IC:\\libchromiumcontent\\src\\third_party\\ffmpeg\\chromium/include/win', '--target-os=mingw32', '--enable-memalign-hack', '--cc=gcc-sjlj']
Running ['make', '-j4', 'libavcodec\\avcodec-57.dll', 'libavformat\\avformat-57.dll', 'libavutil\\avutil-55.dll']
Traceback (most recent call last):
File "./build_ffmpeg.py", line 631, in <module>
sys.exit(main(sys.argv[1:]))
File "./build_ffmpeg.py", line 596, in main
configure_args)
File "./build_ffmpeg.py", line 588, in do_build_ffmpeg
options.config_only, branding, configure_flags)
File "./build_ffmpeg.py", line 217, in BuildFFmpeg
['make', '-j%d' % parallel_jobs] + libraries, cwd=config_dir)
File "./build_ffmpeg.py", line 92, in PrintAndCheckCall
subprocess.check_call(argv, *args, **kwargs)
File "C:\Python27\lib\subprocess.py", line 541, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-j4', 'libavcodec\\avcodec-57.dll', 'libavformat\\avformat-57.dll', 'libavutil\\avutil-55.dll']' returned non-zero exit status 2
</module>Has anyone seen this issue before ? Have all the pre-requisites from here : https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
Thanks.
-
ffmpeg how to ignore initial empty audio frames when decoding to loop a sound
1er décembre 2020, par cs guyI am trying to loop a ogg sound file. The goal is to make a loopable audio interface for my mobile app.


I decode the given ogg file into a buffer and that buffer is sent to audio card for playing. All good until it the audio finishes (end of file). When it finishes I use
av_seek_frame(avFormatContext, streamInfoIndex, 0, AVSEEK_FLAG_FRAME);
to basically loop back to beginning. And continue decoding into writing to the same buffer. At first sight I thought this would give me perfect loops. One problem I had was, the decoder in the end gives me extra empty frames. So I ignored them by keeping track of how many samples are decoded :

durationInMillis = avFormatContext->duration * 1000;
numOfTotalSamples =
 (uint64_t) avFormatContext->duration *
 (uint64_t) pLocalCodecParameters->sample_rate *
 (uint64_t) pLocalCodecParameters->channels /
 (uint64_t) AV_TIME_BASE;



When the threshold is reached I ignore the frames sent by the codec. I thought this was it and ran some test. I recorded 5 minutes of my app and in the end I compared the results in FL studio by customly adding the same sound clip several times to match the length of my audio recording :


Here it is after 5 minutes :




In the first loops the difference is very low I thought it was working and I used this for several days until I tested this on 5 minute recording. As the looping approached to 5 minutes mark the difference got very huge. My code is not looping the audio correctly. I suspect that the codec is adding 1 or 2 empty frames at the very beginning in each loop caused by
av_seek_frame
knowing that a frame can contain up several audio samples. These probably accumulate and cause the mismatch.

My question is : how can I drop the empty frames that is sent by codec while decoding so that I can create a perfect loop of the audio ?


My code is below here. Please be aware that I deleted lots of if checks that was inteded for safety to make it more readable in the code below, these removed checks are always false so it doesnt matter for the reader.


helper.cpp


int32_t
outputAudioFrame(AVCodecContext *avCodecContext, AVFrame *avResampledDecFrame, int32_t &ret,
 LockFreeQueue<float> *&buffer, int8_t *&mediaLoadPointer,
 AVFrame *avDecoderFrame, SwrContext *swrContext,
 std::atomic_bool *&signalExitFuture,
 uint64_t &currentNumSamples, uint64_t &numOfTotalSamples) {
 // resampling is done here but its boiler code so I removed it.
 auto *floatArrPtr = (float *) (avResampledDecFrame->data[0]);

 int32_t numOfSamples = avResampledDecFrame->nb_samples * avResampledDecFrame->channels;

 for (int32_t i = 0; i < numOfSamples; i++) {
 if (currentNumSamples == numOfTotalSamples) {
 break;
 }

 buffer->push(*floatArrPtr);
 currentNumSamples++;
 floatArrPtr++;
 }

 return 0;
}



int32_t decode(int32_t &ret, AVCodecContext *avCodecContext, AVPacket *avPacket,
 LockFreeQueue<float> *&buffer,
 AVFrame *avDecoderFrame,
 AVFrame *avResampledDecFrame,
 std::atomic_bool *&signalExitFuture,
 int8_t *&mediaLoadPointer, SwrContext *swrContext,
 uint64_t &currentNumSamples, uint64_t &numOfTotalSamples) {
 
 ret = avcodec_send_packet(avCodecContext, avPacket);
 if (ret < 0) {
 LOGE("decode: Error submitting a packet for decoding %s", av_err2str(ret));
 return ret;
 }

 // get all the available frames from the decoder
 while (ret >= 0) {

 // submit the packet to the decoder
 ret = avcodec_receive_frame(avCodecContext, avDecoderFrame);
 if (ret < 0) {
 // those two return values are special and mean there is no output
 // frame available, but there were no errors during decoding
 if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) {
 //LOGD("avcodec_receive_frame returned special %s", av_err2str(ret));
 return 0;
 }

 LOGE("avcodec_receive_frame Error during decoding %s", av_err2str(ret));
 return ret;
 }

 ret = outputAudioFrame(avCodecContext, avResampledDecFrame, ret, buffer,
 mediaLoadPointer, avDecoderFrame, swrContext, signalExitFuture,
 currentNumSamples, numOfTotalSamples);

 av_frame_unref(avDecoderFrame);
 av_frame_unref(avResampledDecFrame);

 if (ret < 0)
 return ret;
 }

 return 0;
}
</float></float>


Main.cpp


while (!*signalExitFuture) {
 while ((ret = av_read_frame(avFormatContext, avPacket)) >= 0) {

 ret = decode(ret, avCodecContext, avPacket, buffer, avDecoderFrame,
 avResampledDecFrame, signalExitFuture,
 mediaLoadPointer, swrContext,
 currentNumSamples, numOfTotalSamples);

 // The packet must be freed with av_packet_unref() when it is no longer needed.
 av_packet_unref(avPacket);

 if (ret < 0) {
 LOGE("Error! %s", av_err2str(ret));

 goto cleanup;
 }
 }

 if (ret == AVERROR_EOF) {

 ret = av_seek_frame(avFormatContext, streamInfoIndex, 0, AVSEEK_FLAG_FRAME);

 currentNumSamples = 0;
 avcodec_flush_buffers(avCodecContext);
 }
 }



-
Alfresco fails to create video thumbnail
17 octobre 2019, par DeckardAs error log says :
Empty input file ...
It turned out that the source image forImageMagick
is zero sized. (/data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_source_8718262212685093199.jpg
). When I manually replace the source image to normal image and execute the command again, there’s no error.command: /data/was/alfresco/common/bin/convert /data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_source_8718262212685093199.jpg[0] -auto-orient -resize "100x100>" -strip -quiet /data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_target_7652060684136589026.png
So I think the source image is maybe made by
FFMPEG
by capturing some frame of the video.
And theFFMPEG
somehow failed to do it. Not sure my guess is right...But my
FFMPEG
works good asffmpeg -version
shows proper version info. AndFFMPEG
is run byroot
and the Alfresco daemon instance is run byroot
. It seems that there’s nothing wrong.Please review it. Here’s the whole Alfresco-share log :
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 09160037 Content conversion failed:
reader: ContentAccessor[ contentUrl=store:///data/was/alfresco/tomcat/temp/Alfresco/ComplextTransformer_intermediate_mp4_262176879279399174.jpg, mimetype=image/jpeg, size=0, encoding=UTF-8, locale=en_US]
writer: ContentAccessor[ contentUrl=store:///data/was/alfresco/tomcat/temp/Alfresco/FailoverTransformer_intermediate_ComplexContentTransformer_5223852355212570043.png, mimetype=image/png, size=0, encoding=UTF-8, locale=en_US]
options: {use=doclib, contentReaderNodeRef=null, contentWriterNodeRef=null, sourceContentProperty=null, imageAutoOrient=true, targetContentProperty=null, commandOptions=, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], includeEmbedded=null}
limits: {timeoutMs=120000, pageLimit=1}
at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:350)
at org.alfresco.repo.content.transform.ComplexContentTransformer.transformInternal(ComplexContentTransformer.java:492)
at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:272)
... 32 more
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 09160036 Failed to perform ImageMagick transformation:
Execution result:
os: Linux
command: /data/was/alfresco/common/bin/convert /data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_source_8718262212685093199.jpg[0] -auto-orient -resize "100x100>" -strip -quiet /data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_target_7652060684136589026.png
succeeded: false
exit code: 1
out:
err: .convert.bin: Empty input file `/data/was/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_source_8718262212685093199.jpg' @ error/jpeg.c/JPEGErrorHandler/331.
.convert.bin: NoImageForProperty "%w" @ warning/property
at org.alfresco.repo.content.transform.magick.ImageMagickContentTransformerWorker.transformInternal(ImageMagickContentTransformerWorker.java:205)
at org.alfresco.repo.content.transform.magick.AbstractImageMagickContentTransformerWorker.transform(AbstractImageMagickContentTransformerWorker.java:284)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.alfresco.repo.management.subsystems.SubsystemProxyFactory$1.invoke(SubsystemProxyFactory.java:79)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy28.transform(Unknown Source)
at org.alfresco.repo.content.transform.ProxyContentTransformer.transformInternal(ProxyContentTransformer.java:107)
at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:272)
... 34 moreIn alfresco-global.properties :
ffmpeg.exe=/usr/local/bin/ffmpeg/ffmpeg
* Update As Robert suggested, TransFormer log level changed to debug.
But the log is too long to paste here. There’s 30,000 characters limit of body in SO which github doesn’t have.
So please refer to github issue, I pasted the log there.
https://github.com/Alfresco/share/issues/127