
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (57)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Possibilité de déploiement en ferme
12 avril 2011, parMediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...) -
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.
Sur d’autres sites (11560)
-
FFMPEG Unable to Decode Quicktime QDMC Stream (No decoder for stream)
9 janvier 2017, par mbmastWe are using FFMPEG to convert iPhone video to MP4. This requires an AAC decoder which is not included in any binary distributions of FFMPEG (due to licensing issues). The solution is to download the FFMPEG source and compile it yourself. I’ve done this, apparently incorrectly, as I cannot decode the audio stream. I am getting this error :
/usr/ffmpeg_builds/ffmpeg -y -i /home/domain/public_html/wp-content/uploads/celebs/main/step-2.mov -threads 12 -vcodec libx264 -acodec libfdk_aac -b:v 1000k -refs 6 -coder 1 -sc_threshold 40 -flags +loop -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -trellis 1 -b:a 128k -pass 1 -passlogfile /tmp/ffmpeg-passes57a054ee917c4ahl3t/pass-57a054ee91965 /home/domain/public_html/wp-content/uploads/celebs/main/testing-5.mp4
ffmpeg version N-81827-g81bab10 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libx264
libavutil 55. 32.100 / 55. 32.100
libavcodec 57. 60.100 / 57. 60.100
libavformat 57. 51.102 / 57. 51.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 63.100 / 6. 63.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 2.100 / 2. 2.100
libpostproc 54. 0.100 / 54. 0.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/domain/public_html/wp-content/uploads/celebs/main/step-2.mov':
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
Duration: 00:01:00.83, start: 0.000000, bitrate: 110 kb/s
Stream #0:0(eng): Video: svq1 (SVQ1 / 0x31515653), yuv410p, 160x120, 90 kb/s, 7.51 fps, 7.50 tbr, 600 tbn, 600 tbc (default)
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
handler_name : Apple Alias Data Handler
encoder : Sorenson Video
Stream #0:1(eng): Audio: qdmc (QDMC / 0x434D4451), 44100 Hz, mono (default)
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
handler_name : Apple Alias Data Handler
No decoder for stream #0:1, filtering impossible
Error opening filters!I suspect that I failed to compile and include the correct codec library when I built FFMPEG. The problem is I don’t know which library I should have built/included. I haven’t found anything that says to decode QDMC audio in FFMPEG you need the XXXXX library.
Here’s the complete list of decoders that my build supports :
/usr/ffmpeg_builds/ffmpeg -decoders
ffmpeg version N-81827-g81bab10 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libx264
libavutil 55. 32.100 / 55. 32.100
libavcodec 57. 60.100 / 57. 60.100
libavformat 57. 51.102 / 57. 51.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 63.100 / 6. 63.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 2.100 / 2. 2.100
libpostproc 54. 0.100 / 54. 0.100
Decoders:
V..... = Video
A..... = Audio
S..... = Subtitle
.F.... = Frame-level multithreading
..S... = Slice-level multithreading
...X.. = Codec is experimental
....B. = Supports draw_horiz_band
.....D = Supports direct rendering method 1
------
V....D 012v Uncompressed 4:2:2 10-bit
V....D 4xm 4X Movie
V....D 8bps QuickTime 8BPS video
V....D aasc Autodesk RLE
VF...D aic Apple Intermediate Codec
V....D alias_pix Alias/Wavefront PIX image
V....D amv AMV Video
V....D anm Deluxe Paint Animation
V....D ansi ASCII/ANSI art
VF...D apng APNG (Animated Portable Network Graphics) image
V....D asv1 ASUS V1
V....D asv2 ASUS V2
V....D aura Auravision AURA
V....D aura2 Auravision Aura 2
V....D avrn Avid AVI Codec
V....D avrp Avid 1:1 10-bit RGB Packer
V....D avs AVS (Audio Video Standard) video
V....D avui Avid Meridien Uncompressed
V....D ayuv Uncompressed packed MS 4:4:4:4
V....D bethsoftvid Bethesda VID video
V....D bfi Brute Force & Ignorance
V....D binkvideo Bink video
V....D bintext Binary text
V....D bmp BMP (Windows and OS/2 bitmap)
V....D bmv_video Discworld II BMV video
V....D brender_pix BRender PIX image
V....D c93 Interplay C93
V....D cavs Chinese AVS (Audio Video Standard) (AVS1-P2, JiZhun profile)
V....D cdgraphics CD Graphics video
V....D cdxl Commodore CDXL video
VF...D cfhd Cineform HD
V....D cinepak Cinepak
V....D cljr Cirrus Logic AccuPak
V....D cllc Canopus Lossless Codec
V....D eacmv Electronic Arts CMV video (codec cmv)
V....D cpia CPiA video format
V....D camstudio CamStudio (codec cscd)
V....D cyuv Creative YUV (CYUV)
V.S..D dds DirectDraw Surface image decoder
V....D dfa Chronomaster DFA
V.S..D dirac BBC Dirac VC-2
VFS..D dnxhd VC3/DNxHD
V....D dpx DPX (Digital Picture Exchange) image
V....D dsicinvideo Delphine Software International CIN video
V.S..D dvvideo DV (Digital Video)
V....D dxa Feeble Files/ScummVM DXA
V....D dxtory Dxtory
VFS..D dxv Resolume DXV
V....D escape124 Escape 124
V....D escape130 Escape 130
VFS..D exr OpenEXR image
VFS..D ffv1 FFmpeg video codec #1
VF..BD ffvhuff Huffyuv FFmpeg variant
V.S..D fic Mirillis FIC
V....D flashsv Flash Screen Video v1
V....D flashsv2 Flash Screen Video v2
V....D flic Autodesk Animator Flic video
V...BD flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)
VF...D fraps Fraps
V....D frwu Forward Uncompressed
V....D g2m Go2Meeting
V....D gif GIF (Graphics Interchange Format)
V....D h261 H.261
V...BD h263 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
V...BD h263i Intel H.263
V...BD h263p H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
VFS..D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
VFS..D hap Vidvox Hap decoder
VFS..D hevc HEVC (High Efficiency Video Coding)
V....D hnm4video HNM 4 video
V....D hq_hqa Canopus HQ/HQA
V.S..D hqx Canopus HQX
VF..BD huffyuv Huffyuv / HuffYUV
V....D idcinvideo id Quake II CIN video (codec idcin)
V....D idf iCEDraw text
V....D iff IFF ACBM/ANIM/DEEP/ILBM/PBM/RGB8/RGBN (codec iff_ilbm)
V....D indeo2 Intel Indeo 2
V....D indeo3 Intel Indeo 3
V....D indeo4 Intel Indeo Video Interactive 4
V....D indeo5 Intel Indeo Video Interactive 5
V....D interplayvideo Interplay MVE video
VFS..D jpeg2000 JPEG 2000
V....D jpegls JPEG-LS
V....D jv Bitmap Brothers JV video
V....D kgv1 Kega Game Video
V....D kmvc Karl Morton's video codec
VF...D lagarith Lagarith lossless
V....D loco LOCO
V....D m101 Matrox Uncompressed SD
V....D eamad Electronic Arts Madcow Video (codec mad)
VFS..D magicyuv MagicYUV video
VF...D mdec Sony PlayStation MDEC (Motion DECoder)
VF...D mimic Mimic
V....D mjpeg MJPEG (Motion JPEG)
V....D mjpegb Apple MJPEG-B
V....D mmvideo American Laser Games MM Video
V....D motionpixels Motion Pixels video
V.S.BD mpeg1video MPEG-1 video
V.S.BD mpeg2video MPEG-2 video
V.S.BD mpegvideo MPEG-1 video (codec mpeg2video)
VF..BD mpeg4 MPEG-4 part 2
V....D msa1 MS ATC Screen
V...BD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1
V...BD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2
V...BD msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)
V....D msrle Microsoft RLE
V....D mss1 MS Screen 1
V....D mss2 MS Windows Media Video V9 Screen
V....D msvideo1 Microsoft Video 1
V....D mszh LCL (LossLess Codec Library) MSZH
V....D mts2 MS Expression Encoder Screen
V....D mvc1 Silicon Graphics Motion Video Compressor 1
V....D mvc2 Silicon Graphics Motion Video Compressor 2
V....D mxpeg Mobotix MxPEG video
V....D nuv NuppelVideo/RTJPEG
V....D paf_video Amazing Studio Packed Animation File Video
V....D pam PAM (Portable AnyMap) image
V....D pbm PBM (Portable BitMap) image
V....D pcx PC Paintbrush PCX image
V....D pgm PGM (Portable GrayMap) image
V....D pgmyuv PGMYUV (Portable GrayMap YUV) image
V....D pictor Pictor/PC Paint
VF...D png PNG (Portable Network Graphics) image
V....D ppm PPM (Portable PixelMap) image
V.S..D prores ProRes
V.S..D prores_lgpl Apple ProRes (iCodec Pro) (codec prores)
V....D ptx V.Flash PTX image
V....D qdraw Apple QuickDraw
V....D qpeg Q-team QPEG
V....D qtrle QuickTime Animation (RLE) video
V....D r10k AJA Kona 10-bit RGB Codec
V....D r210 Uncompressed RGB 10-bit
V..... rawvideo raw video
V....D rl2 RL2 video
V....D roqvideo id RoQ video (codec roq)
V....D rpza QuickTime video (RPZA)
V....D rscc innoHeim/Rsupport Screen Capture Codec
V....D rv10 RealVideo 1.0
V....D rv20 RealVideo 2.0
VF...D rv30 RealVideo 3.0
VF...D rv40 RealVideo 4.0
V....D sanm LucasArts SANM/Smush video
V....D screenpresso Screenpresso
V....D sgi SGI image
V....D sgirle Silicon Graphics RLE 8-bit video
VF...D sheervideo BitJazz SheerVideo
V....D smackvid Smacker video (codec smackvideo)
V....D smc QuickTime Graphics (SMC)
V..... smvjpeg SMV JPEG
V....D snow Snow
V....D sp5x Sunplus JPEG (SP5X)
V....D sunrast Sun Rasterfile image
V....D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
V...BD svq3 Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
V....D targa Truevision Targa image
V....D targa_y216 Pinnacle TARGA CineWave YUV16
V....D tdsc TDSC
V....D eatgq Electronic Arts TGQ video (codec tgq)
V....D eatgv Electronic Arts TGV video (codec tgv)
VF..BD theora Theora
V....D thp Nintendo Gamecube THP video
V....D tiertexseqvideo Tiertex Limited SEQ video
VF...D tiff TIFF image
V....D tmv 8088flex TMV
V....D eatqi Electronic Arts TQI Video (codec tqi)
V....D truemotion1 Duck TrueMotion 1.0
V....D truemotion2 Duck TrueMotion 2.0
V....D truemotion2rt Duck TrueMotion 2.0 Real Time
V....D camtasia TechSmith Screen Capture Codec (codec tscc)
V....D tscc2 TechSmith Screen Codec 2
V....D txd Renderware TXD (TeXture Dictionary) image
V....D ultimotion IBM UltiMotion (codec ulti)
VF...D utvideo Ut Video
V....D v210 Uncompressed 4:2:2 10-bit
V....D v210x Uncompressed 4:2:2 10-bit
V....D v308 Uncompressed packed 4:4:4
V....D v408 Uncompressed packed QT 4:4:4:4
V....D v410 Uncompressed 4:4:4 10-bit
V....D vb Beam Software VB
VF...D vble VBLE Lossless Codec
V....D vc1 SMPTE VC-1
V....D vc1image Windows Media Video 9 Image v2
V....D vcr1 ATI VCR1
V....D xl Miro VideoXL (codec vixl)
V....D vmdvideo Sierra VMD video
V....D vmnc VMware Screen Codec / VMware Video
VF..BD vp3 On2 VP3
V....D vp5 On2 VP5
V....D vp6 On2 VP6
V.S..D vp6a On2 VP6 (Flash version, with alpha channel)
V....D vp6f On2 VP6 (Flash version)
V....D vp7 On2 VP7
VFS..D vp8 On2 VP8
VF...D vp9 Google VP9
VF...D webp WebP image
V...BD wmv1 Windows Media Video 7
V...BD wmv2 Windows Media Video 8
V....D wmv3 Windows Media Video 9
V....D wmv3image Windows Media Video 9 Image
V....D wnv1 Winnov WNV1
V....D vqavideo Westwood Studios VQA (Vector Quantized Animation) video (codec ws_vqa)
V....D xan_wc3 Wing Commander III / Xan
V....D xan_wc4 Wing Commander IV / Xxan
V....D xbin eXtended BINary text
V....D xbm XBM (X BitMap) image
V..... xface X-face image
V....D xwd XWD (X Window Dump) image
V....D y41p Uncompressed YUV 4:1:1 12-bit
V....D ylc YUY2 Lossless Codec
V..... yop Psygnosis YOP Video
V....D yuv4 Uncompressed packed 4:2:0
V....D zerocodec ZeroCodec Lossless Video
V....D zlib LCL (LossLess Codec Library) ZLIB
V....D zmbv Zip Motion Blocks Video
A....D 8svx_exp 8SVX exponential
A....D 8svx_fib 8SVX fibonacci
A....D aac AAC (Advanced Audio Coding)
A....D aac_fixed AAC (Advanced Audio Coding) (codec aac)
A....D libfdk_aac Fraunhofer FDK AAC (codec aac)
A....D aac_latm AAC LATM (Advanced Audio Coding LATM syntax)
A....D ac3 ATSC A/52A (AC-3)
A....D ac3_fixed ATSC A/52A (AC-3) (codec ac3)
A....D adpcm_4xm ADPCM 4X Movie
A....D adpcm_adx SEGA CRI ADX ADPCM
A....D adpcm_afc ADPCM Nintendo Gamecube AFC
A....D adpcm_aica ADPCM Yamaha AICA
A....D adpcm_ct ADPCM Creative Technology
A....D adpcm_dtk ADPCM Nintendo Gamecube DTK
A....D adpcm_ea ADPCM Electronic Arts
A....D adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
A....D adpcm_ea_r1 ADPCM Electronic Arts R1
A....D adpcm_ea_r2 ADPCM Electronic Arts R2
A....D adpcm_ea_r3 ADPCM Electronic Arts R3
A....D adpcm_ea_xas ADPCM Electronic Arts XAS
A....D g722 G.722 ADPCM (codec adpcm_g722)
A....D g726 G.726 ADPCM (codec adpcm_g726)
A....D g726le G.726 ADPCM little-endian (codec adpcm_g726le)
A....D adpcm_ima_amv ADPCM IMA AMV
A....D adpcm_ima_apc ADPCM IMA CRYO APC
A....D adpcm_ima_dat4 ADPCM IMA Eurocom DAT4
A....D adpcm_ima_dk3 ADPCM IMA Duck DK3
A....D adpcm_ima_dk4 ADPCM IMA Duck DK4
A....D adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
A....D adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
A....D adpcm_ima_iss ADPCM IMA Funcom ISS
A....D adpcm_ima_oki ADPCM IMA Dialogic OKI
A....D adpcm_ima_qt ADPCM IMA QuickTime
A....D adpcm_ima_rad ADPCM IMA Radical
A....D adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
A....D adpcm_ima_wav ADPCM IMA WAV
A....D adpcm_ima_ws ADPCM IMA Westwood
A....D adpcm_ms ADPCM Microsoft
A....D adpcm_mtaf ADPCM MTAF
A....D adpcm_psx ADPCM Playstation
A....D adpcm_sbpro_2 ADPCM Sound Blaster Pro 2-bit
A....D adpcm_sbpro_3 ADPCM Sound Blaster Pro 2.6-bit
A....D adpcm_sbpro_4 ADPCM Sound Blaster Pro 4-bit
A....D adpcm_swf ADPCM Shockwave Flash
A....D adpcm_thp ADPCM Nintendo THP
A....D adpcm_thp_le ADPCM Nintendo THP (little-endian)
A....D adpcm_vima LucasArts VIMA audio
A....D adpcm_xa ADPCM CDROM XA
A....D adpcm_yamaha ADPCM Yamaha
AF...D alac ALAC (Apple Lossless Audio Codec)
A....D amrnb AMR-NB (Adaptive Multi-Rate NarrowBand) (codec amr_nb)
A....D amrwb AMR-WB (Adaptive Multi-Rate WideBand) (codec amr_wb)
A....D ape Monkey's Audio
A....D atrac1 ATRAC1 (Adaptive TRansform Acoustic Coding)
A....D atrac3 ATRAC3 (Adaptive TRansform Acoustic Coding 3)
A....D atrac3plus ATRAC3+ (Adaptive TRansform Acoustic Coding 3+) (codec atrac3p)
A....D on2avc On2 Audio for Video Codec (codec avc)
A....D binkaudio_dct Bink Audio (DCT)
A....D binkaudio_rdft Bink Audio (RDFT)
A....D bmv_audio Discworld II BMV audio
A....D comfortnoise RFC 3389 comfort noise generator
A....D cook Cook / Cooker / Gecko (RealAudio G2)
A..... dsd_lsbf DSD (Direct Stream Digital), least significant bit first
A..... dsd_lsbf_planar DSD (Direct Stream Digital), least significant bit first, planar
A..... dsd_msbf DSD (Direct Stream Digital), most significant bit first
A..... dsd_msbf_planar DSD (Direct Stream Digital), most significant bit first, planar
A....D dsicinaudio Delphine Software International CIN audio
A....D dss_sp Digital Speech Standard - Standard Play mode (DSS SP)
A....D dst DST (Digital Stream Transfer)
A....D dca DCA (DTS Coherent Acoustics) (codec dts)
A....D dvaudio Ulead DV Audio
A....D eac3 ATSC A/52B (AC-3, E-AC-3)
A....D evrc EVRC (Enhanced Variable Rate Codec)
AF...D flac FLAC (Free Lossless Audio Codec)
A....D g723_1 G.723.1
A....D g729 G.729
A....D gsm GSM
A....D gsm_ms GSM Microsoft variant
A....D iac IAC (Indeo Audio Coder)
A....D imc IMC (Intel Music Coder)
A....D interplay_dpcm DPCM Interplay
A....D interplayacm Interplay ACM
A....D mace3 MACE (Macintosh Audio Compression/Expansion) 3:1
A....D mace6 MACE (Macintosh Audio Compression/Expansion) 6:1
A....D metasound Voxware MetaSound
A....D mlp MLP (Meridian Lossless Packing)
A....D mp1 MP1 (MPEG audio layer 1)
A....D mp1float MP1 (MPEG audio layer 1) (codec mp1)
A....D mp2 MP2 (MPEG audio layer 2)
A....D mp2float MP2 (MPEG audio layer 2) (codec mp2)
A....D mp3 MP3 (MPEG audio layer 3)
A....D mp3float MP3 (MPEG audio layer 3) (codec mp3)
A....D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)
A....D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3) (codec mp3adu)
A....D mp3on4 MP3onMP4
A....D mp3on4float MP3onMP4 (codec mp3on4)
A....D als MPEG-4 Audio Lossless Coding (ALS) (codec mp4als)
A....D mpc7 Musepack SV7 (codec musepack7)
A....D mpc8 Musepack SV8 (codec musepack8)
A....D nellymoser Nellymoser Asao
A....D opus Opus
A....D paf_audio Amazing Studio Packed Animation File Audio
A....D pcm_alaw PCM A-law / G.711 A-law
A....D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray media
A....D pcm_dvd PCM signed 16|20|24-bit big-endian for DVD media
A....D pcm_f32be PCM 32-bit floating point big-endian
A....D pcm_f32le PCM 32-bit floating point little-endian
A....D pcm_f64be PCM 64-bit floating point big-endian
A....D pcm_f64le PCM 64-bit floating point little-endian
A....D pcm_lxf PCM signed 20-bit little-endian planar
A....D pcm_mulaw PCM mu-law / G.711 mu-law
A....D pcm_s16be PCM signed 16-bit big-endian
A....D pcm_s16be_planar PCM signed 16-bit big-endian planar
A....D pcm_s16le PCM signed 16-bit little-endian
A....D pcm_s16le_planar PCM signed 16-bit little-endian planar
A....D pcm_s24be PCM signed 24-bit big-endian
A....D pcm_s24daud PCM D-Cinema audio signed 24-bit
A....D pcm_s24le PCM signed 24-bit little-endian
A....D pcm_s24le_planar PCM signed 24-bit little-endian planar
A....D pcm_s32be PCM signed 32-bit big-endian
A....D pcm_s32le PCM signed 32-bit little-endian
A....D pcm_s32le_planar PCM signed 32-bit little-endian planar
A....D pcm_s64be PCM signed 64-bit big-endian
A....D pcm_s64le PCM signed 64-bit little-endian
A....D pcm_s8 PCM signed 8-bit
A....D pcm_s8_planar PCM signed 8-bit planar
A....D pcm_u16be PCM unsigned 16-bit big-endian
A....D pcm_u16le PCM unsigned 16-bit little-endian
A....D pcm_u24be PCM unsigned 24-bit big-endian
A....D pcm_u24le PCM unsigned 24-bit little-endian
A....D pcm_u32be PCM unsigned 32-bit big-endian
A....D pcm_u32le PCM unsigned 32-bit little-endian
A....D pcm_u8 PCM unsigned 8-bit
A....D pcm_zork PCM Zork
A....D qcelp QCELP / PureVoice
A....D qdm2 QDesign Music Codec 2
A....D real_144 RealAudio 1.0 (14.4K) (codec ra_144)
A....D real_288 RealAudio 2.0 (28.8K) (codec ra_288)
A....D ralf RealAudio Lossless
A....D roq_dpcm DPCM id RoQ
A....D s302m SMPTE 302M
A....D sdx2_dpcm DPCM Squareroot-Delta-Exact
A....D shorten Shorten
A....D sipr RealAudio SIPR / ACELP.NET
A....D smackaud Smacker audio (codec smackaudio)
A....D sol_dpcm DPCM Sol
A..X.D sonic Sonic
AF...D tak TAK (Tom's lossless Audio Kompressor)
A....D truehd TrueHD
A....D truespeech DSP Group TrueSpeech
AF...D tta TTA (True Audio)
A....D twinvq VQF TwinVQ
A....D vmdaudio Sierra VMD audio
A....D vorbis Vorbis
A....D wavesynth Wave synthesis pseudo-codec
AF...D wavpack WavPack
A....D ws_snd1 Westwood Audio (SND1) (codec westwood_snd1)
A....D wmalossless Windows Media Audio Lossless
A....D wmapro Windows Media Audio 9 Professional
A....D wmav1 Windows Media Audio 1
A....D wmav2 Windows Media Audio 2
A....D wmavoice Windows Media Audio Voice
A....D xan_dpcm DPCM Xan
A....D xma1 Xbox Media Audio 1
A....D xma2 Xbox Media Audio 2
S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)
S..... ass ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub DVB subtitles (codec dvb_subtitle)
S..... dvdsub DVD subtitles (codec dvd_subtitle)
S..... cc_dec Closed Caption (EIA-608 / CEA-708) Decoder (codec eia_608)
S..... pgssub HDMV Presentation Graphic Stream subtitles (codec hdmv_pgs_subtitle)
S..... jacosub JACOsub subtitle
S..... microdvd MicroDVD subtitle
S..... mov_text 3GPP Timed Text subtitle
S..... mpl2 MPL2 subtitle
S..... pjs PJS subtitle
S..... realtext RealText subtitle
S..... sami SAMI subtitle
S..... stl Spruce subtitle format
S..... srt SubRip subtitle (codec subrip)
S..... subrip SubRip subtitle
S..... subviewer SubViewer subtitle
S..... subviewer1 SubViewer1 subtitle
S..... text Raw text subtitle
S..... vplayer VPlayer subtitle
S..... webvtt WebVTT subtitle
S..... xsub XSUBAny idea what I did wrong when building FFMPEG ?
Here’s a link to the video file that caused the problem : step-2.mov
-
Subtitling Sierra RBT Files
2 juin 2016, par Multimedia Mike — Game HackingThis is part 2 of the adventure started in my Subtitling Sierra VMD Files post. After I completed the VMD subtitling, The Translator discovered a wealth of animation files in a format called RBT (this apparently stands for “Robot” but I think “Ribbit” format could be more fun). What are we going to do ? We had come so far by solving the VMD subtitling problem for Phantasmagoria. It would be a shame if the effort ground to a halt due to this.
Fortunately, the folks behind the ScummVM project already figured out enough of the format to be able to decode the RBT files in Phantasmagoria.
In the end, I was successful in creating a completely standalone tool that can take a Robot file and a subtitle file and create a new Robot file with subtitles. The source code is here (subtitle-rbt.c). Here’s what the final result looks like :
“What’s in the refrigerator ?” I should note at this juncture that I am not sure if this particular Robot file even has sound or dialogue since I was conducting these experiments on a computer with non-working audio.
The RBT Format
I have created a new MultimediaWiki page describing the Robot Animation format based on the ScummVM source code. I have not worked with a format quite like this before. These are paletted animations which consist of a sequence of independent frames that are designed to be overlaid on top of static background. Because of these characteristics, each frame encodes its own unique dimensions and origin coordinate within the frame. While the Phantasmagoria VMD files are usually 288×144 (which are usually double-sized for the benefit of a 640×400 Super VGA canvas), these frames are meant to be plotted on a game field that was roughly 576×288 (288×144 doublesized).
For example, 2 minimalist animation frames from a desk investigation Robot file :
100×147
101×149As for compression, my first impression was that the algorithm was the same as VMD. This is wrong. It evidently uses an unmodified version of a standard algorithm called Lempel-Ziv-Stac (LZS). It shows up in several RFCs and was apparently used in MS-DOS’s transparent disk compression scheme.
Approach
Thankfully, many of the lessons I learned from the previous project are applicable to this project, including : subtitle library interfacing, subtitling in the paletted colorspace, and replacing encoded frames from the original file instead of trying to create a new file.Here is the pitch for this project :
- Create a C program that can traverse through an input file, piece by piece, and generate an output file. The result of this should be a bitwise identical file.
- Adapt the LZS compression decoding algorithm from ScummVM into the new tool. Make the tool dump raw Portable NetMap (PNM) files of varying dimensions and ensure that they look correct.
- Compress using LZS.
- Stretch the frames and draw subtitles.
- More compression. Find the minimum window for each frame.
Compression
Normally, my first goal is to decompress the video and store the data in a raw form. However, this turned out to be mathematically intractable. While the format does support both compressed and uncompressed frames (even though ScummVM indicates that the uncompressed path is yet unexercised), the goal of this project requires making the frames so large that they overflow certain parameters of the file.A Robot file has a sequence of frames and 2 tables describing the size of each frame. One table describes the entire frame size (audio + video) while the second table describes just the video frame size. Since these tables only use 16 bits to specify a size, the maximum frame size is 65536 bytes. Leaving space for the audio portion of the frame, this only leaves a per-frame byte budget of about 63000 bytes for the video. Expanding the frame to 576×288 (165,888 pixels) would overflow this limit.
Anyway, the upshot is that I needed to compress the data up front.
Fortunately, the LZS compressor is pretty straightforward, at least if you have experience writing VLC-oriented codecs. While the algorithm revolves around back references, my approach was to essentially write an RLE encoder. My compressor would search for runs of data (plentiful when I started to stretch the frame for subtitling purposes). When a run length of n=3 or more of the same pixel is found, encode the pixel by itself, and then store a back reference of offset -1 and length (n-1). It took a little while to iron out a few problems, but I eventually got it to work perfectly.
I have to say, however, that the format is a little bit weird in how it codes very large numbers. The length encoding is somewhat Golomb-like, i.e., smaller values are encoded with fewer bits. However, when it gets to large numbers, it starts encoding counts of 15 as blocks of 1111. For example, 24 is bigger than 7. Thus, emit 1111 into the bitstream and subtract 8 from 23 -> 16. Still bigger than 15, so stuff another 1111 into the bitstream and subtract 15. Now we’re at 1, so stuff 0001. So 24 is 11111111 0001. 12 bits is not too horrible. But the total number of bytes (value / 30). So a value of 300 takes around 10 bytes (80 bits) to encode.
Palette Slices
As in the VMD subtitling project, I took the subtitle color offered in the subtitle spec file as a suggestion and used Euclidean distance to match to the closest available color in the palette. One problem, however, is that the palette is a lot smaller in these animations. According to my notes, for the set of animations I scanned, only about 80 colors were specified, starting at palette index 55. I hypothesize that different slices of the palette are reserved for different uses. E.g., animation, background, and user interface. Thus, there is a smaller number of colors to draw upon for subtitling purposes.Scaling
One bit of residual weirdness in this format is the presence of a per-frame scale factor. While most frames set this to 100 (100% scale), I have observed 70%, 80%, and 90%. ScummVM is a bit unsure about how to handle these, so I am as well. However, I eventually realized I didn’t really need to care, at least not when decoding and re-encoding the frame. Just preserve the scale factor. I intend to modify the tool further to take scale factor into account when creating the subtitle.The Final Resolution
Right around the time that I was composing this post, The Translator emailed me and notified me that he had found a better way to subtitle the Robot files by modifying the scripts, rendering my entire approach moot. The result is much cleaner :
Turns out that the engine supported subtitles all along
It’s a good thing that I enjoyed the challenge or I might be annoyed at this point.
See Also
- Subtitling Sierra VMD Files : My effort to subtitle the main FMV files found in Sierra games.
The post Subtitling Sierra RBT Files first appeared on Breaking Eggs And Making Omelettes.
-
Subtitling Sierra VMD Files
1er juin 2016, par Multimedia Mike — Game HackingI was contacted by a game translation hobbyist from Spain (henceforth known as The Translator). He had set his sights on Sierra’s 7-CD Phantasmagoria. This mammoth game was driven by a lot of FMV files and animations that have speech. These require language translation in the form of video subtitling. He’s lucky that he found possibly the one person on the whole internet who has just the right combination of skill, time, and interest to pull this off. And why would I care about helping ? I guess I share a certain camaraderie with game hackers. Don’t act so surprised. You know what kind of stuff I like to work on.
The FMV format used in this game is VMD, which makes an appearance in numerous Sierra titles. FFmpeg already supports decoding this format. FFmpeg also supports subtitling video. So, ideally, all that’s necessary to support this goal is to add a muxer for the VMD format which can encode raw video and audio, which the format supports. Implement video compression as extra credit.
The pipeline that I envisioned looks like this :
VMD Subtitling Process
“Trivial !” I surmised. I just never learn, do I ?
The Plan
So here’s my initial pitch, outlining the work I estimated that I would need to do towards the stated goal :- Create a new file muxer that produces a syntactically valid VMD file with bogus video and audio data. Make sure it works with both FFmpeg’s playback system as well as the proper Phantasmagoria engine.
- Create a new video encoder that essentially operates in pass-through mode while correctly building a palette.
- Create a new basic encoder for the video frames.
A big unknown for me was exactly how subtitle handling operates in FFmpeg. Thanks to this project, I now know. I was concerned because I was pretty sure that font rendering entails anti-aliasing which bodes poorly for keeping the palette count under 256 unique colors.
Computer Science Puzzle
When pondering how to process the palette, I was excited for the opportunity to exercise actual computer science. FFmpeg converts frames from paletted frames to full RGB frames. Then it needs to convert them back to paletted frames. I had a vague recollection of solving this problem once before when I was experimenting with a new paletted video codec. I seem to recall that I did the palette conversion in a very naive manner. I just used a static 256-element array and processed each RGB pixel of the frame, seeing if the value already occurred in the table (O(n) lookup) and adding it otherwise.
There are more efficient algorithms, however, such as hash tables and trees. Somewhere along the line, FFmpeg helpfully acquired a rarely-used tree data structure, which was perfect for this project.
So I was pretty pleased with this optimization. Too bad this wouldn’t survive to the end of the effort.
Another palette-related challenge was the fact that a group of pictures would be accumulating a new palette but that palette needed to be recorded before the group. Thus, the muxer needed to have extra logic to rewind the file when the video encoder transmitted a palette change.
Video Compression
VMD has a few methods in its compression toolbox. It can use interframe differencing, it has some RLE, or it can code a frame raw. It can also use a custom LZ-like format on top of these. For early prototypes, I elected to leave each frame coded raw. After the concept was proved, I implemented the frame differencing.
Top frame compared with the middle frame yields the bottom frame : red pixels indicate changesEncoding only those red dots in between vast runs of unchanged pixels yielded a vast measurable improvement. The next step was to try wiring up FFmpeg’s existing LZ compression facilities to the encoder. This turned out to be implausible since VMD’s LZ variant has nothing to do with anything FFmpeg already provides. Fortunately, the LZ piece is not absolutely required and the frame differencing + RLE provides plenty of compression.
Subtitling
I’ve never done anything, multimedia programming-wise, concerning subtitles. I guess all the entertainment I care about has always been in my native tongue. What a good excuse to program outside of my comfort zone !First, I needed to know how to access FFmpeg’s subtitling facilities. Fortunately, The Translator did the legwork on this matter so I didn’t have to figure it out.
However, I intuitively had misgivings about this phase. I had heard that the subtitling process performs anti-aliasing. That means that the image would need to be promoted to a higher colorspace for this phase and that the anti-aliasing process would likely push the color count way past 256. Some quick tests revealed this to be the case, as the running color count would leap by several hundred colors as soon as the palette accounting algorithm encountered a subtitle.
So I dug into the subtitle subsystem. I discovered that the subtitle library operates by creating a linked list of subtitle bitmaps that the client app must render. The bitmaps are comprised of 8-bit alpha transparency values that must be composited onto the target frame (i.e., 0 = transparent, 255 = 100% opaque). For example, the letter ‘H’ :
(with 00s removed) 13 F8 41 00 00 00 00 68 E4 | 13 F8 41 68 E4 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 14 FF DC D0 D0 D0 D0 E4 EC | 14 FF DC D0 D0 D0 D0 E4 EC 14 FF 7E 50 50 50 50 9A EC | 14 FF 7E 50 50 50 50 9A EC 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 14 FF 44 00 00 00 00 6C EC | 14 FF 44 6C EC 11 E0 3B 00 00 00 00 5E CE | 11 E0 3B 5E CE
To get around the color explosion problem, I chose a threshold value and quantized values above and below to 255 and 0, respectively. Further, the process chooses an appropriate color from the existing palette rather than introducing any new colors.
Muxing Matters
In order to force VMD into a general purpose media framework, a lot of special information needs to be passed around. Like many paletted codecs, the palette needs to be transmitted from the file demuxer to the video decoder via some side channel. For re-encoding, this also implies that the palette needs to make the trip from the video encoder to the file muxer. As if this wasn’t enough, individual VMD frames have even more data that needs to be ferried between the muxer and codec levels, including frame change boundaries. FFmpeg provides methods to do these things, but I could not always rely on the systems to relay the data in all cases. I was probably doing something wrong ; I accept that. Instead, I just packed all the information at the front of an encoded frame and split it apart in the muxer.I could not quite figure out how to get the audio and video muxed correctly. As a result, neither FFmpeg nor the Phantasmagoria engine could replay the files correctly.
Plan B
Since I was having so much trouble creating an entirely new VMD file, likely due to numerous unknown bits of the file format, I thought of another angle : re-use the existing VMD file. For this approach, I kept the video encoder and file muxer that I created in the initial phase, but modified the file muxer to emit a special intermediate file. Then, I created a Python tool to repackage the original VMD file using compressed video data in the intermediate file.For this phase, I also implemented a command line switch for FFmpeg to disable subtitle blending, to make the feature feel like less of an unofficial hack, as though this nonsense would ever have a chance of being incorporated upstream.
At this point, I was seeing some success with the complete, albeit roundabout, subtitling process. I constructed a subtitle file using “Spanish I Learned From Mexican Telenovelas” and the frames turned out fairly readable :
“she cheated on him”
“he’s a scumbag” … these random subtitles could fit surprisingly well !
The few files that I tested appeared to work fine. But then I handed off my work to The Translator and he immediately found a bunch of problems. According to my notes, the problems mostly took the form of flashing, solid color frames. Further, I found tiny, mostly imperceptible flaws in my RLE compressor, usually only detectable by running strict comparison tools ; but I wasn’t satisfied.
At this point, I think I attempted to just encode the entire palette at the front of each frame, as allowed by the format, but that did not seem to fix any problems. My notes are not completely clear on this matter (likely because I was still trying to figure out the exact problem), but I think it had to do with FFmpeg inserting extra video frames in order to even out gaps in the video framerate.
Sigh, Plan C
At this point, I was getting tired of trying to force FFmpeg to do this. So I decided to minimize its involvement using lessons learned up to this point.The next pitch :
- Create a new C program that can open an existing VMD file and output an identical VMD file. I know this sounds easy, but the specific method of copying entails interpreting individual parts of the file and writing those individual parts to the new file. This is in preparation for…
- Import the VMD video decoder functions directly into the program to decode the individual video frames and re-encode them, replacing the video frames as the file is rewritten.
- Wire up the subtitle system. During the adventure to disable subtitle blending, I accidentally learned enough about interfacing to the subtitle library to just invoke it directly.
- Rewrite the RLE method so that it is 100% correct.
Off to work I went. That part about lifting the existing VMD decoder functions out of their libavcodec nest turned out to not be that straightforward. As an alternative, I modified the decoder to dump the raw frames to an intermediate file. In doing so, I think I was able to avoid the issue of the duplicated frames that plagued the previous efforts.
Also, remember how I was really pleased with the palette conversion technique in which I was able to leverage computer science big-O theory ? By this stage, I had no reason to convert the paletted video to RGB in the first place ; all of the decoding, subtitling and re-encoding operates in the paletted colorspace.
This approach seemed to work pretty well. The final program is subtitle-vmd.c. The process is still a little weird. The modifications in my own FFmpeg fork are necessary to create an intermediate file that the new C tool can operate with.
Next Steps
The Translator has found some assorted bugs and corner cases that still need to be ironed out. Further, for extra credit, I need find the change windows for each frame to improve compression just a little more. I don’t think I will be trying for LZ compression, though.However, almost as soon as I had this whole system working, The Translator informed me that there is another, different movie format in play in the Phantasmagoria engine called ROBOT, with an extension of RBT. Fortunately, enough of the algorithms have been reverse engineered and re-implemented in ScummVM that I was able to sort out enough details for another subtitling project. That will be the subject of a future post.
See Also :
- Subtitling Sierra RBT Files : The followup in which I discuss how to scribble text on the other animation format
The post Subtitling Sierra VMD Files first appeared on Breaking Eggs And Making Omelettes.