
Recherche avancée
Autres articles (89)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne file d’attente stockée dans la base de donnée
Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
Support de tous types de médias
10 avril 2011Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)
Sur d’autres sites (5325)
-
ffmpeg image to video sequence stops after 10
18 mai 2012, par JimProbably a fast anwser, but my first time trying to do this. I have 77 jpeg pictures, I have renamed them to be 000.jpg - 076.jpg. The next step is using ffmpeg and here is my command statement :
ffmpeg -f image2 -r .1 -i %d.jpg -r 25 test.avi
It creates an avi with 10 images for 10seconds each, why only 10 ? I've tried other iterations of %d.jpg in the ffmpeg command with no success.
thanks for the help all !
-Jim
Here is the listing of the directory with the images :
ls -l
total 77472
-rwxr-xr-x 1 jim jim 2329065 May 17 16:31 000.jpg
-rwxr-xr-x 1 jim jim 716563 May 17 16:31 001.jpg
-rwxr-xr-x 1 jim jim 716626 May 17 16:31 002.jpg
-rwxr-xr-x 1 jim jim 726686 May 17 16:31 003.jpg
-rwxr-xr-x 1 jim jim 739312 May 17 16:31 004.jpg
-rwxr-xr-x 1 jim jim 720249 May 17 16:31 005.jpg
-rwxr-xr-x 1 jim jim 666757 May 17 16:31 006.jpg
-rwxr-xr-x 1 jim jim 656259 May 17 16:31 007.jpg
-rwxr-xr-x 1 jim jim 664960 May 17 16:31 008.jpg
-rwxr-xr-x 1 jim jim 740801 May 17 16:31 009.jpg
-rwxr-xr-x 1 jim jim 882502 May 17 16:31 010.jpg
-rwxr-xr-x 1 jim jim 631117 May 17 16:31 011.jpg
-rwxr-xr-x 1 jim jim 730331 May 17 16:31 018.jpg
-rwxr-xr-x 1 jim jim 725132 May 17 16:31 019.jpg
-rwxr-xr-x 1 jim jim 729626 May 17 16:31 020.jpg
-rwxr-xr-x 1 jim jim 731980 May 17 16:31 021.jpg
-rwxr-xr-x 1 jim jim 671597 May 17 16:31 022.jpg
-rwxr-xr-x 1 jim jim 681978 May 17 16:31 023.jpg
-rwxr-xr-x 1 jim jim 686600 May 17 16:31 024.jpg
-rwxr-xr-x 1 jim jim 675316 May 17 16:31 025.jpg
-rwxr-xr-x 1 jim jim 681826 May 17 16:31 026.jpg
-rwxr-xr-x 1 jim jim 740998 May 17 16:31 027.jpg
-rwxr-xr-x 1 jim jim 568480 May 17 16:31 028.jpg
-rwxr-xr-x 1 jim jim 747400 May 17 16:31 029.jpg
-rwxr-xr-x 1 jim jim 630995 May 17 16:31 030.jpg
-rwxr-xr-x 1 jim jim 689926 May 17 16:31 031.jpg
-rwxr-xr-x 1 jim jim 685054 May 17 16:31 032.jpg
-rwxr-xr-x 1 jim jim 710620 May 17 16:31 033.jpg
-rwxr-xr-x 1 jim jim 658365 May 17 16:31 034.jpg
-rwxr-xr-x 1 jim jim 657037 May 17 16:31 035.jpg
-rwxr-xr-x 1 jim jim 772135 May 17 16:31 036.jpg
-rwxr-xr-x 1 jim jim 741759 May 17 16:31 037.jpg
-rwxr-xr-x 1 jim jim 807470 May 17 16:31 038.jpg
-rwxr-xr-x 1 jim jim 748423 May 17 16:31 039.jpg
-rwxr-xr-x 1 jim jim 712377 May 17 16:31 040.jpg
-rwxr-xr-x 1 jim jim 715804 May 17 16:31 041.jpg
-rwxr-xr-x 1 jim jim 701025 May 17 16:31 042.jpg
-rwxr-xr-x 1 jim jim 759446 May 17 16:31 043.jpg
-rwxr-xr-x 1 jim jim 621801 May 17 16:31 044.jpg
-rwxr-xr-x 1 jim jim 720843 May 17 16:31 045.jpg
-rwxr-xr-x 1 jim jim 704002 May 17 16:31 046.jpg
-rwxr-xr-x 1 jim jim 696075 May 17 16:31 047.jpg
-rwxr-xr-x 1 jim jim 723685 May 17 16:31 048.jpg
-rwxr-xr-x 1 jim jim 732332 May 17 16:31 049.jpg
-rwxr-xr-x 1 jim jim 747235 May 17 16:31 050.jpg
-rwxr-xr-x 1 jim jim 883655 May 17 16:31 051.jpg
-rwxr-xr-x 1 jim jim 1750723 May 17 16:31 052.jpg
-rwxr-xr-x 1 jim jim 1002588 May 17 16:31 053.jpg
-rwxr-xr-x 1 jim jim 540666 May 17 16:31 054.jpg
-rwxr-xr-x 1 jim jim 1876002 May 17 16:31 055.jpg
-rwxr-xr-x 1 jim jim 1893761 May 17 16:31 056.jpg
-rwxr-xr-x 1 jim jim 1979442 May 17 16:31 057.jpg
-rwxr-xr-x 1 jim jim 1766249 May 17 16:31 058.jpg
-rwxr-xr-x 1 jim jim 2085989 May 17 16:31 059.jpg
-rwxr-xr-x 1 jim jim 883871 May 17 16:31 060.jpg
-rwxr-xr-x 1 jim jim 755714 May 17 16:31 061.jpg
-rwxr-xr-x 1 jim jim 797146 May 17 16:31 062.jpg
-rwxr-xr-x 1 jim jim 2431531 May 17 16:31 065.jpg
-rwxr-xr-x 1 jim jim 2413333 May 17 16:31 066.jpg
-rwxr-xr-x 1 jim jim 2449278 May 17 16:31 067.jpg
-rwxr-xr-x 1 jim jim 2458183 May 17 16:31 068.jpg
-rwxr-xr-x 1 jim jim 2514419 May 17 16:31 069.jpg
-rwxr-xr-x 1 jim jim 2477737 May 17 16:31 070.jpg
-rwxr-xr-x 1 jim jim 2471347 May 17 16:31 071.jpg
-rwxr-xr-x 1 jim jim 2384936 May 17 16:31 072.jpg
-rwxr-xr-x 1 jim jim 2459983 May 17 16:31 073.jpg
-rwxr-xr-x 1 jim jim 2501286 May 17 16:31 074.jpg
-rwxr-xr-x 1 jim jim 2367710 May 17 16:31 075.jpg
-rwxr-xr-x 1 jim jim 2455564 May 17 16:31 076.jpgFFMPEG Command and OUTPUT :
ffmpeg -v verbose -f image2 -r .1 -i %03d.jpg -r 25 test.avi
ffmpeg version 0.8.1-4:0.8.1-0ubuntu1, Copyright (c) 2000-2011 the Libav developers
built on Mar 22 2012 05:09:06 with gcc 4.6.3
configuration: --extra-version='4:0.8.1-0ubuntu1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libfreetype --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avutil configuration: --extra-version='4:0.8.1ubuntu1+medibuntu1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libfreetype --enable-vaapi --enable-libopenjpeg --enable-libfaac --enable-nonfree --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libopencore-amrnb --enable-version3 --enable-libopencore-amrwb --enable-version3 --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avcodec configuration: --extra-version='4:0.8.1ubuntu1+medibuntu1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libfreetype --enable-vaapi --enable-libopenjpeg --enable-libfaac --enable-nonfree --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libopencore-amrnb --enable-version3 --enable-libopencore-amrwb --enable-version3 --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil 51. 22. 1 / 51. 22. 1
libavcodec 53. 35. 0 / 53. 35. 0
libavformat 53. 21. 0 / 53. 21. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 15. 0 / 2. 15. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 52. 0. 0 / 52. 0. 0
This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes).
[image2 @ 0x1bef9c0] max_analyze_duration reached
Seems stream 0 codec frame rate differs from container frame rate: 0.10 (1/10) -> 0.50 (1/2)
Input #0, image2, from '%03d.jpg':
Duration: 00:02:00.00, start: 0.000000, bitrate: N/A
Stream #0.0: Video: mjpeg, yuvj440p, 1920x2560, 0.10 fps, 0.50 tbr, 0.10 tbn, 0.10 tbc
File 'test.avi' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuvj440p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x1bf0100] w:1920 h:2560 pixfmt:yuvj440p
[avsink @ 0x1bf13c0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x1bf1ae0] w:1920 h:2560 fmt:yuvj440p -> w:1920 h:2560 fmt:yuv420p flags:0x4
Output #0, avi, to 'test.avi':
Metadata:
ISFT : Lavf53.21.0
Stream #0.0: Video: mpeg4, yuv420p, 1920x2560, q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
[buffer @ 0x1bf0100] Changing frame properties on the fly is not supported.
Last message repeated 10 times
frame= 1 fps= 0 q=5.7 Lsize= 97kB time=0.04 bitrate=19823.2kbits/s
video:91kB audio:0kB global headers:0kB muxing overhead 6.106282%Now test.avi is only 99Kbs and doesn't play anything.
-
so Confused, why my build of libffmpeg.so > 17M ?
24 février 2012, par ghostI did build ffmpeg for Android in winxp and scientific linux , ffmpeg is in dolphin player — an open source video player (http://code.google.com/p/dolphin-player/), and i just build the ffmpeg, its seems like the same as in rockplayer 1.7.0, they all use build_andriod.sh below, it worked in both winxp and linux,
and all successfully got bin/ffmpeg (less than 5MB), but libffmpeg.so ( > 17MB), when put libffmpeg.so in dolphin-player libs , player can't work, the size 17MB is too large, the original libffmpeg.so in olphin-player libs is less than 5MB, please give some advice.#!/bin/bash
######################################################
# FFmpeg builds script for Android+ARM platform
#
# This script is released under term of
# CDDL (http://www.opensource.org/licenses/cddl1)
# Wrote by pinxue (~@gmail.com) from RockPlayer.com
# 2010-8 ~ 2011-4
######################################################
######################################################
# Usage:
# put this script in top of FFmpeg source tree
# ./build_android
#
# It generates binary for following architectures:
# ARMv6
# ARMv6+VFP
# ARMv7+VFM-ïd16 (Tegra2)
# ARMv7+Neon (Cortex-A8)
#
# Customizing:
# 1. Feel free to change ./configure parameters for more features
# 2. To adapt other ARM variants
# set $CPU and $OPTIMIZE_CFLAGS
# call build_one
######################################################
export TMPDIR=D:/tmp/android
export NDK=D:/android-ndk-r4
#PLATFORM=$NDK/build/platforms/android-8/arch-arm/
PLATFORM=$NDK/build/platforms/android-8/arch-arm
#PREBUILT=$NDK/build/prebuilt/darwin-x86/arm-eabi-4.4.0
PREBUILT=$NDK/build/prebuilt/windows/arm-eabi-4.4.0
function build_one
{
# -fasm : required. Android header file uses asm keyword instead of __asm__ , but most of c dialect (like ansi,c99,gnu99) implies -fno-asm.
# ~/android/android-ndk-r4/build/platforms/android-5/arch-arm//usr/include/asm/byteorder.h: In function '___arch__swab32':
# ~/android/android-ndk-r4/build/platforms/android-5/arch-arm//usr/include/asm/byteorder.h:25: error: expected ')' before ':' token
# -fno-short-enums : optimized. Else FFmpeg obj will generate a huge number of warning for variable-size enums,
# though we may suppress them by --no-enum-size-warning, it would be better to avoid it.
# .../ld: warning: cmdutils.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail
# --extra-libs="-lgcc" : required. Else cannot solve some runtime function symbols
# ... undefined reference to `__aeabi_f2uiz'
# --enable-protocols : required. Without this option, the file open always fails mysteriously.
# FFmpeg's av_open_input_file will invoke file format probing functions, but because most of useful demuxers has flag of zero
# which cause them are ignored during file format probling and fall to url stream parsing,
# if protocols are disabled, the file:// url cannot be opened as well.
# $PREBUILT/bin/arm-eabi-ar d libavcodec/libavcodec.a inverse.o : required.
# FFmpeg includes two copies of inverse.c both in libavutil and libavcodec for performance consideration (not sure the benifit yet)
# Without this step, final ld of generating libffmpeg.so will fail silently, if invoke ld through gcc, gcc will collect more reasonable error message.
# -llog: debug only, FFmpeg itself doesn't require it at all.
# With this option, we may simply includes "utils/Log.h" and use LOGx() to observe FFmpeg's behavior
# PS, it seems the toolchain implies -DNDEBUG somewhere, it would be safer to use following syntax
# #ifdef NDEBUG
# #undef NDEBUG
# #define HAVE_NDEBUG
# #endif
# #include "utils/Log.h"
# #ifdef HAVE_NDEBUG
# #define NDEBUG
# #undef HAVE_NDEBUG
# #endif
# --whole-archive : required. Else ld generate a small .so file (about 15k)
# --no-stdlib : required. Android doesn't use standard c runtime but invited its own wheal (bionic libc) because of license consideration.
# space before \ of configure lines: required for some options. Else next line will be merged into previous lines's content and cause problem.
# Especially the --extra-cflags, the next line will pass to gcc in this case and configure will say gcc cannot create executable.
# many options mentioned by articles over internet are implied by -O2 or -O3 already, need not repeat at all.
# two or three common optimization cflags are omitted because not sure about the trade off yet. invoke NDK build system with V=1 to find them.
# -Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x mentioned by almost every articles over internet, but it is not required to specify at all.
# -Dipv6mr_interface=ipv6mr_ifindex : required. Android inet header doesn't use ipv6mr_interface which is required by rfc, seems it generate this user space header file directly from kernel header file, but Linux kernel has decided to keep its own name for ever and ask user space header to use rfc name.
# HAVE_SYS_UIO_H : required. Else:
# In file included from ~/android/android-ndk-r4/build/platforms/android-5/arch-arm//usr/include/linux/socket.h:29,
# from ~/android/android-ndk-r4/build/platforms/android-5/arch-arm//usr/include/sys/socket.h:33,
# from libavformat/network.h:35,
# from libavformat/utils.c:46:
#~/android/android-ndk-r4/build/platforms/android-5/arch-arm//usr/include/linux/uio.h:19: error: redefinition of 'struct iovec'
#
# --disable-doc : required because of strange bug of toolchain.
#
#
#--extra-ldflags=-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"
#
./configure --target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=arm \
--cc=$PREBUILT/bin/arm-eabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-eabi- \
--nm=$PREBUILT/bin/arm-eabi-nm \
--sysroot=$PLATFORM \
--extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \
--disable-shared \
--enable-static \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--enable-parsers \
--disable-encoders \
--enable-decoders \
--disable-muxers \
--enable-demuxers \
--enable-swscale \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-network \
--enable-indevs \
--disable-bsfs \
--disable-filters \
--enable-protocols \
--enable-asm \
--disable-doc \
$ADDITIONAL_CONFIGURE_FLAG
##make clean
make -j4 install
$PREBUILT/bin/arm-eabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-eabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-eabi/4.4.0/libgcc.a
}
#arm v6
CPU=armv6
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
#arm v7vfp
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
PREFIX=./android/$CPU-vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one
#arm v7n
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
PREFIX=./android/$CPU-neon
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one
#arm v6+vfp
CPU=armv6
OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
PREFIX=./android/${CPU}_vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one -
Simply beyond ridiculous
For the past few years, various improvements on H.264 have been periodically proposed, ranging from larger transforms to better intra prediction. These finally came together in the JCT-VC meeting this past April, where over two dozen proposals were made for a next-generation video coding standard. Of course, all of these were in very rough-draft form ; it will likely take years to filter it down into a usable standard. In the process, they’ll pick the most useful features (hopefully) from each proposal and combine them into something a bit more sane. But, of course, it all has to start somewhere.
A number of features were common : larger block sizes, larger transform sizes, fancier interpolation filters, improved intra prediction schemes, improved motion vector prediction, increased internal bit depth, new entropy coding schemes, and so forth. A lot of these are potentially quite promising and resolve a lot of complaints I’ve had about H.264, so I decided to try out the proposal that appeared the most interesting : the Samsung+BBC proposal (A124), which claims compression improvements of around 40%.
The proposal combines a bouillabaisse of new features, ranging from a 12-tap interpolation filter to 12thpel motion compensation and transforms as large as 64×64. Overall, I would say it’s a good proposal and I don’t doubt their results given the sheer volume of useful features they’ve dumped into it. I was a bit worried about complexity, however, as 12-tap interpolation filters don’t exactly scream “fast”.
I prepared myself for the slowness of an unoptimized encoder implementation, compiled their tool, and started a test encode with their recommended settings.
I waited. The first frame, an I-frame, completed.
I took a nap.
I waited. The second frame, a P-frame, was done.
I played a game of Settlers.
I waited. The third frame, a B-frame, was done.
I worked on a term paper.
I waited. The fourth frame, a B-frame, was done.
After a full 6 hours, 8 frames had encoded. Yes, at this rate, it would take a full two weeks to encode 10 seconds of HD video. On a Core i7. This is not merely slow ; this is over 1000 times slower than x264 on “placebo” mode. This is so slow that it is not merely impractical ; it is impossible to even test. This encoder is apparently designed for some sort of hypothetical future computer from space. And word from other developers is that the Intel proposal is even slower.
This has led me to suspect that there is a great deal of cheating going on in the H.265 proposals. The goal of the proposals, of course, is to pick the best feature set for the next generation video compression standard. But there is an extra motivation : organizations whose features get accepted get patents on the resulting standard, and thus income. With such large sums of money in the picture, dishonesty becomes all the more profitable.
There is a set of rules, of course, to limit how the proposals can optimize their encoders. If different encoders use different optimization techniques, the results will no longer be comparable — remember, they are trying to compare compression features, not methods of optimizing encoder-side decisions. Thus all encoders are required to use a constant quantizer, specified frame types, and so forth. But there are no limits on how slow an encoder can be or what algorithms it can use.
It would be one thing if the proposed encoder was a mere 10 times slower than the current reference ; that would be reasonable, given the low level of optimization and higher complexity of the new standard. But this is beyond ridiculous. With the prize given to whoever can eke out the most PSNR at a given quantizer at the lowest bitrate (with no limits on speed), we’re just going to get an arms race of slow encoders, with every company trying to use the most ridiculous optimizations possible, even if they involve encoding the frame 100,000 times over to choose the optimal parameters. And the end result will be as I encountered here : encoders so slow that they are simply impossible to even test.
Such an arms race certainly does little good in optimizing for reality where we don’t have 30 years to encode an HD movie : a feature that gives great compression improvements is useless if it’s impossible to optimize for in a reasonable amount of time. Certainly once the standard is finalized practical encoders will be written — but it makes no sense to optimize the standard for a use-case that doesn’t exist. And even attempting to “optimize” anything is difficult when encoding a few seconds of video takes weeks.
Update : The people involved have contacted me and insist that there was in fact no cheating going on. This is probably correct ; the problem appears to be that the rules that were set out were simply not strict enough, making many changes that I would intuitively consider “cheating” to be perfectly allowed, and thus everyone can do it.
I would like to apologize if I implied that the results weren’t valid ; they are — the Samsung-BBC proposal is definitely one of the best, which is why I picked it to test with. It’s just that I think any situation in which it’s impossible to test your own software is unreasonable, and thus the entire situation is an inherently broken one, given the lax rules, slow baseline encoder, and no restrictions on compute time.