
Recherche avancée
Médias (1)
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
Autres articles (76)
-
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 ;
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)
Sur d’autres sites (13216)
-
No sounds on Apple devices after encoding videos [migrated]
15 décembre 2013, par RicardoI'm having a problem setting up a media server.
Everything works just great except the sound of Apple devices, I'm not sure if that's something with "mute" on iOS or our codecs are just not compatible with iOS.OS :
Ubuntu 12.04
FFMPEG Config :
ffmpeg version 0.10.8-7:0.10.8-1~lucid1 Copyright 2000-2013 the FFmpeg developers
built on Sep 5 2013 19:50:14 with gcc 4.4.3
configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.8-1~lucid1' --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static
avcodec configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.8-1~lucid1' --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb
libavutil 51. 35.100 / 51. 35.100
libavcodec 53. 61.100 / 53. 61.100
libavformat 53. 32.100 / 53. 32.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 61.100 / 2. 61.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
Hyper fast Audio and Video encoderCodecs :
D..... = Decoding supported
.E.... = Encoding supported
..V... = Video codec
..A... = Audio codec
..S... = Subtitle codec
...S.. = Supports draw_horiz_band
....D. = Supports direct rendering method 1
.....T = Supports weird frame truncation
------
D V D 4xm 4X Movie
D V D 8bps QuickTime 8BPS video
D A D 8svx_exp 8SVX exponential
D A D 8svx_fib 8SVX fibonacci
EV a64multi Multicolor charset for Commodore 64
EV a64multi5 Multicolor charset for Commodore 64, extended with 5th color (colram)
DEA D aac Advanced Audio Coding
D A D aac_latm AAC LATM (Advanced Audio Codec LATM syntax)
D V D aasc Autodesk RLE
DEA D ac3 ATSC A/52A (AC-3)
EA ac3_fixed ATSC A/52A (AC-3)
D A D adpcm_4xm ADPCM 4X Movie
DEA D adpcm_adx SEGA CRI ADX ADPCM
D A D adpcm_ct ADPCM Creative Technology
D A D adpcm_ea ADPCM Electronic Arts
D A D adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
D A D adpcm_ea_r1 ADPCM Electronic Arts R1
D A D adpcm_ea_r2 ADPCM Electronic Arts R2
D A D adpcm_ea_r3 ADPCM Electronic Arts R3
D A D adpcm_ea_xas ADPCM Electronic Arts XAS
D A D adpcm_ima_amv ADPCM IMA AMV
D A D adpcm_ima_apc ADPCM IMA CRYO APC
D A D adpcm_ima_dk3 ADPCM IMA Duck DK3
D A D adpcm_ima_dk4 ADPCM IMA Duck DK4
D A D adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
D A D adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
D A D adpcm_ima_iss ADPCM IMA Funcom ISS
DEA D adpcm_ima_qt ADPCM IMA QuickTime
D A D adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
DEA D adpcm_ima_wav ADPCM IMA WAV
D A D adpcm_ima_ws ADPCM IMA Westwood
DEA D adpcm_ms ADPCM Microsoft
D A D adpcm_sbpro_2 ADPCM Sound Blaster Pro 2-bit
D A D adpcm_sbpro_3 ADPCM Sound Blaster Pro 2.6-bit
D A D adpcm_sbpro_4 ADPCM Sound Blaster Pro 4-bit
DEA D adpcm_swf ADPCM Shockwave Flash
D A D adpcm_thp ADPCM Nintendo Gamecube THP
D A D adpcm_xa ADPCM CDROM XA
DEA D adpcm_yamaha ADPCM Yamaha
DEA D alac ALAC (Apple Lossless Audio Codec)
D A D als MPEG-4 Audio Lossless Coding (ALS)
D A D amrnb Adaptive Multi-Rate NarrowBand
D A D amrwb Adaptive Multi-Rate WideBand
DEV amv AMV Video
D V D anm Deluxe Paint Animation
D V D ansi ASCII/ANSI art
D A D ape Monkey's Audio
DES ass Advanced SubStation Alpha subtitle
DEV D asv1 ASUS V1
DEV D asv2 ASUS V2
D A D atrac1 Atrac 1 (Adaptive TRansform Acoustic Coding)
D A D atrac3 Atrac 3 (Adaptive TRansform Acoustic Coding 3)
D V D aura Auravision AURA
D V D aura2 Auravision Aura 2
DEV D avrp Avid 1:1 10-bit RGB Packer
D V D avs AVS (Audio Video Standard) video
D V D bethsoftvid Bethesda VID video
D V D bfi Brute Force & Ignorance
D A D binkaudio_dct Bink Audio (DCT)
D A D binkaudio_rdft Bink Audio (RDFT)
D V binkvideo Bink video
D V D bintext Binary text
DEV D bmp BMP image
D A D bmv_audio Discworld II BMV audio
D V bmv_video Discworld II BMV video
D V D c93 Interplay C93
D V D camstudio CamStudio
D V D camtasia TechSmith Screen Capture Codec
D V D cavs Chinese AVS video (AVS1-P2, JiZhun profile)
D V D cdgraphics CD Graphics video
D V D cinepak Cinepak
DEV D cljr Cirrus Logic AccuPak
D A D cook COOK
D V D cyuv Creative YUV (CYUV)
DEA D dca DCA (DTS Coherent Acoustics)
D V D dfa Chronomaster DFA
D V dirac BBC Dirac VC-2
DEV D dnxhd VC3/DNxHD
DEV dpx DPX image
D A D dsicinaudio Delphine Software International CIN audio
D V D dsicinvideo Delphine Software International CIN video
DES dvbsub DVB subtitles
DES dvdsub DVD subtitles
DEV D dvvideo DV (Digital Video)
D V D dxa Feeble Files/ScummVM DXA
D V D dxtory Dxtory
DEA D eac3 ATSC A/52 E-AC-3
D V D eacmv Electronic Arts CMV video
D V D eamad Electronic Arts Madcow Video
D V D eatgq Electronic Arts TGQ video
D V eatgv Electronic Arts TGV video
D V D eatqi Electronic Arts TQI Video
D V D escape124 Escape 124
D V D escape130 Escape 130
DEV D ffv1 FFmpeg video codec #1
DEVSD ffvhuff Huffyuv FFmpeg variant
DEA D flac FLAC (Free Lossless Audio Codec)
DEV D flashsv Flash Screen Video
DEV D flashsv2 Flash Screen Video Version 2
D V D flic Autodesk Animator Flic video
DEVSD flv Flash Video (FLV) / Sorenson Spark / Sorenson H.263
D V D fraps Fraps
D V D frwu Forward Uncompressed
DEA D g722 G.722 ADPCM
DEA g723_1 G.723.1
DEA D g726 G.726 ADPCM
D A D g729 G.729
DEV D gif GIF (Graphics Interchange Format)
D A D gsm GSM
D A D gsm_ms GSM Microsoft variant
DEV D h261 H.261
DEVSDT h263 H.263 / H.263-1996
D VSD h263i Intel H.263
EV h263p H.263+ / H.263-1998 / H.263 version 2
D V D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
D V D h264_vdpau H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)
DEVSD huffyuv Huffyuv / HuffYUV
D V D idcinvideo id Quake II CIN video
D V D idf iCEDraw text
D V D iff_byterun1 IFF ByteRun1
D V D iff_ilbm IFF ILBM
D A D imc IMC (Intel Music Coder)
D V D indeo2 Intel Indeo 2
D V indeo3 Intel Indeo 3
D V indeo4 Intel Indeo Video Interactive 4
D V indeo5 Intel Indeo Video Interactive 5
D A D interplay_dpcm DPCM Interplay
D V D interplayvideo Interplay MVE video
DEV j2k JPEG 2000
DEV D jpegls JPEG-LS
D V D jv Bitmap Brothers JV video
D V kgv1 Kega Game Video
D V D kmvc Karl Morton's video codec
D V D lagarith Lagarith lossless
DEA D libgsm libgsm GSM
DEA D libgsm_ms libgsm GSM Microsoft variant
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
DEA D libopencore_amrnb OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band
D A D libopencore_amrwb OpenCORE Adaptive Multi-Rate (AMR) Wide-Band
DEV D libopenjpeg OpenJPEG based JPEG 2000 encoder
DEV libschroedinger libschroedinger Dirac 2.2
DEA D libspeex libspeex Speex
EV libtheora libtheora Theora
EA libvorbis libvorbis Vorbis
DEV libvpx libvpx VP8
EV libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
EV libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB
EV ljpeg Lossless JPEG
D V D loco LOCO
D A D mace3 MACE (Macintosh Audio Compression/Expansion) 3:1
D A D mace6 MACE (Macintosh Audio Compression/Expansion) 6:1
D V D mdec Sony PlayStation MDEC (Motion DECoder)
D V D mimic Mimic
DEV D mjpeg MJPEG (Motion JPEG)
D V D mjpegb Apple MJPEG-B
D A D mlp MLP (Meridian Lossless Packing)
D V D mmvideo American Laser Games MM Video
D V D motionpixels Motion Pixels video
D A D mp1 MP1 (MPEG audio layer 1)
D A D mp1float MP1 (MPEG audio layer 1)
DEA D mp2 MP2 (MPEG audio layer 2)
D A D mp2float MP2 (MPEG audio layer 2)
D A D mp3 MP3 (MPEG audio layer 3)
D A D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3float MP3 (MPEG audio layer 3)
D A D mp3on4 MP3onMP4
D A D mp3on4float MP3onMP4
D A D mpc7 Musepack SV7
D A D mpc8 Musepack SV8
DEVSDT mpeg1video MPEG-1 video
D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
DEVSDT mpeg2video MPEG-2 video
DEVSDT mpeg4 MPEG-4 part 2
D V DT mpeg4_vdpau MPEG-4 part 2 (VDPAU)
D VSDT mpegvideo MPEG-1 video
D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
D VSDT mpegvideo_xvmc MPEG-1/2 video XvMC (X-Video Motion Compensation)
DEVSD msmpeg4 MPEG-4 part 2 Microsoft variant version 3
D VSD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1
DEVSD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2
D V D msrle Microsoft RLE
DEV D msvideo1 Microsoft Video-1
D V D mszh LCL (LossLess Codec Library) MSZH
D V D mxpeg Mobotix MxPEG video
DEA D nellymoser Nellymoser Asao
D V D nuv NuppelVideo/RTJPEG
DEV D pam PAM (Portable AnyMap) image
DEV D pbm PBM (Portable BitMap) image
DEA D pcm_alaw PCM A-law
D A D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray media
D A D pcm_dvd PCM signed 20|24-bit big-endian
DEA D pcm_f32be PCM 32-bit floating point big-endian
DEA D pcm_f32le PCM 32-bit floating point little-endian
DEA D pcm_f64be PCM 64-bit floating point big-endian
DEA D pcm_f64le PCM 64-bit floating point little-endian
D A D pcm_lxf PCM signed 20-bit little-endian planar
DEA D pcm_mulaw PCM mu-law
DEA D pcm_s16be PCM signed 16-bit big-endian
DEA D pcm_s16le PCM signed 16-bit little-endian
D A D pcm_s16le_planar PCM 16-bit little-endian planar
DEA D pcm_s24be PCM signed 24-bit big-endian
DEA D pcm_s24daud PCM D-Cinema audio signed 24-bit
DEA D pcm_s24le PCM signed 24-bit little-endian
DEA D pcm_s32be PCM signed 32-bit big-endian
DEA D pcm_s32le PCM signed 32-bit little-endian
DEA D pcm_s8 PCM signed 8-bit
D A D pcm_s8_planar PCM signed 8-bit planar
DEA D pcm_u16be PCM unsigned 16-bit big-endian
DEA D pcm_u16le PCM unsigned 16-bit little-endian
DEA D pcm_u24be PCM unsigned 24-bit big-endian
DEA D pcm_u24le PCM unsigned 24-bit little-endian
DEA D pcm_u32be PCM unsigned 32-bit big-endian
DEA D pcm_u32le PCM unsigned 32-bit little-endian
DEA D pcm_u8 PCM unsigned 8-bit
D A D pcm_zork PCM Zork
DEV D pcx PC Paintbrush PCX image
DEV D pgm PGM (Portable GrayMap) image
DEV D pgmyuv PGMYUV (Portable GrayMap YUV) image
D S pgssub HDMV Presentation Graphic Stream subtitles
D V D pictor Pictor/PC Paint
DEV D png PNG image
DEV D ppm PPM (Portable PixelMap) image
DEV D prores Apple ProRes
D V D prores_lgpl Apple ProRes (iCodec Pro)
D V D ptx V.Flash PTX image
D A D qcelp QCELP / PureVoice
D A D qdm2 QDesign Music Codec 2
D V D qdraw Apple QuickDraw
D V D qpeg Q-team QPEG
DEV D qtrle QuickTime Animation (RLE) video
DEV D r10k AJA Kona 10-bit RGB Codec
DEV D r210 Uncompressed RGB 10-bit
DEV rawvideo raw video
DEA D real_144 RealAudio 1.0 (14.4K) encoder
D A D real_288 RealAudio 2.0 (28.8K)
D V D rl2 RL2 video
DEA D roq_dpcm id RoQ DPCM
DEV D roqvideo id RoQ video
D V D rpza QuickTime video (RPZA)
DEV D rv10 RealVideo 1.0
DEV D rv20 RealVideo 2.0
D V D rv30 RealVideo 3.0
D V D rv40 RealVideo 4.0
D A D s302m SMPTE 302M
DEV sgi SGI image
D A D shorten Shorten
D A D sipr RealAudio SIPR / ACELP.NET
D A D smackaud Smacker audio
D V D smackvid Smacker video
D V D smc QuickTime Graphics (SMC)
DEV D snow Snow
D A D sol_dpcm DPCM Sol
DEA D sonic Sonic
EA sonicls Sonic lossless
D V D sp5x Sunplus JPEG (SP5X)
DES srt SubRip subtitle
D V D sunrast Sun Rasterfile image
DEV D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
D VSD svq3 Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
DEV D targa Truevision Targa image
D VSD theora Theora
D V D thp Nintendo Gamecube THP video
D V D tiertexseqvideo Tiertex Limited SEQ video
DEV D tiff TIFF image
D V D tmv 8088flex TMV
D A D truehd TrueHD
D V D truemotion1 Duck TrueMotion 1.0
D V D truemotion2 Duck TrueMotion 2.0
D A D truespeech DSP Group TrueSpeech
D A D tta True Audio (TTA)
D A D twinvq VQF TwinVQ
D V D txd Renderware TXD (TeXture Dictionary) image
D V D ultimotion IBM UltiMotion
D V D utvideo Ut Video
DEV D v210 Uncompressed 4:2:2 10-bit
D V D v210x Uncompressed 4:2:2 10-bit
DEV D v308 Uncompressed packed 4:4:4
DEV D v410 Uncompressed 4:4:4 10-bit
D V vb Beam Software VB
D V D vble VBLE Lossless Codec
D V D vc1 SMPTE VC-1
D V D vc1_vdpau SMPTE VC-1 VDPAU
D V D vc1image Windows Media Video 9 Image v2
D V D vcr1 ATI VCR1
D A D vmdaudio Sierra VMD audio
D V D vmdvideo Sierra VMD video
D V D vmnc VMware Screen Codec / VMware Video
DEA D vorbis Vorbis
D VSD vp3 On2 VP3
D V D vp5 On2 VP5
D V D vp6 On2 VP6
D V D vp6a On2 VP6 (Flash version, with alpha channel)
D V D vp6f On2 VP6 (Flash version)
D V D vp8 On2 VP8
D V D vqavideo Westwood Studios VQA (Vector Quantized Animation) video
D A D wavesynth Wave synthesis pseudo-codec
D A D wavpack WavPack
D A wmalossless Windows Media Audio 9 Lossless
D A D wmapro Windows Media Audio 9 Professional
DEA D wmav1 Windows Media Audio 1
DEA D wmav2 Windows Media Audio 2
D A D wmavoice Windows Media Audio Voice
DEVSD wmv1 Windows Media Video 7
DEVSD wmv2 Windows Media Video 8
D V D wmv3 Windows Media Video 9
D V D wmv3_vdpau Windows Media Video 9 VDPAU
D V D wmv3image Windows Media Video 9 Image
D V D wnv1 Winnov WNV1
D A D ws_snd1 Westwood Audio (SND1)
D A D xan_dpcm DPCM Xan
D V D xan_wc3 Wing Commander III / Xan
D V D xan_wc4 Wing Commander IV / Xxan
D V D xbin eXtended BINary text
D V D xl Miro VideoXL
DES xsub DivX subtitles (XSUB)
DEV D xwd XWD (X Window Dump) image
DEV D y41p Uncompressed YUV 4:1:1 12-bit
D V yop Psygnosis YOP Video
DEV D yuv4 Uncompressed packed 4:2:0
DEV D zlib LCL (LossLess Codec Library) ZLIB
DEV D zmbv Zip Motion Blocks VideoLibrary we use to convert :
public function getAvailableAudioCodecs()
{
return array('libvo_aacenc', 'libfaac', 'libmp3lame');
}By default I use 'libmp3lame' now because 'libfaac' is not supported by ffmpeg
and when Im trying to encode sound by libfaac I'm getting that codec not foundThanks in advance !
-
ffmpeg : handle videos with changing resolution
5 mars 2021, par mSourireI write a program, which concatenates input list of videos programmatically. The problem is that these videos are parts of a recorded stream, and their resolution may change few times within the same file.
Currently, if that happens, ffmpeg fails, saying that it's not possible to concat files with different resolutions. Is there a way to make ffmpeg handling this automatically ? A good solution would be selective scaling of frames with unexpected resolution.


Here is a listing :


ffmpeg -y -i 1.mkv -i 1.mka
-max_muxing_queue_size 10000
-preset veryfast -r 30 -crf 20 -b:a 96000 -vbr on
-strict experimental
-filter_complex '
color=black:s=320x240:d=7ms[black0];
aevalsrc=0:d=15ms[silence1];
[black0][0]concat=n=2:v=1:a=0[video];
[1][silence1]concat=n=2:v=0:a=1[audio]'
-map [video] -map [audio] -c:v libvpx -c:a libopus output.webm

ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
 built with Apple clang version 11.0.0 (clang-1100.0.33.17)
 configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1_9 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack
 libavutil 56. 51.100 / 56. 51.100
 libavcodec 58. 91.100 / 58. 91.100
 libavformat 58. 45.100 / 58. 45.100
 libavdevice 58. 10.100 / 58. 10.100
 libavfilter 7. 85.100 / 7. 85.100
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
Input #0, matroska,webm, from '1.mkv':
 Metadata:
 encoder : GStreamer matroskamux version 1.8.1.1
 creation_time : 2021-03-02T13:44:03.000000Z
 Duration: 00:01:48.41, start: 0.710000, bitrate: 757 kb/s
 Stream #0:0(eng): Video: vp8, yuv420p(progressive), 320x240, SAR 1:1 DAR 4:3, 120 tbr, 1k tbn, 1k tbc (default)
 Metadata:
 title : Video
Input #1, matroska,webm, from '1.mka':
 Metadata:
 encoder : GStreamer matroskamux version 1.8.1.1
 creation_time : 2021-03-02T13:44:03.000000Z
 Duration: 00:01:48.40, start: 0.703000, bitrate: 38 kb/s
 Stream #1:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
 Metadata:
 title : Audio
Codec AVOption preset (Configuration preset) specified for output file #0 (output.webm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
 Stream #0:0 (vp8) -> concat:in1:v0
 Stream #1:0 (opus) -> concat:in0:a0
 concat -> Stream #0:0 (libvpx)
 concat -> Stream #0:1 (libopus)
Press [q] to stop, [?] for help
[libvpx @ 0x7fe08a80bc00] v1.9.0
[libvpx @ 0x7fe08a80bc00] Bitrate not specified for constrained quality mode, using default of 256kbit/sec
Output #0, webm, to 'output.webm':
 Metadata:
 encoder : Lavf58.45.100
 Stream #0:0: Video: vp8 (libvpx), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 256 kb/s, 30 fps, 1k tbn, 30 tbc (default)
 Metadata:
 encoder : Lavc58.91.100 libvpx
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
 Stream #0:1: Audio: opus (libopus), 48000 Hz, stereo, flt, 96 kb/s (default)
 Metadata:
 encoder : Lavc58.91.100 libopus
[Parsed_color_0 @ 0x7fe089815940] EOF timestamp not reliable
[Parsed_concat_2 @ 0x7fe088501980] Input link in0:v0 parameters (size 640x480, SAR 1:1) do not match the corresponding output link in0:v0 parameters (320x240, SAR 1:1)
[Parsed_concat_2 @ 0x7fe088501980] Failed to configure output pad on Parsed_concat_2
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
[libopus @ 0x7fe08a810c00] 1 frames left in the queue on closing
Conversion failed!



Here is the only such video with "floating" resolution, which cannot be concatenated with 320x240 color filter.


-
Video fingerprinting not working for the video
2 septembre 2024, par Veer PratapI implemented video fingerprinting, and it works well when the videos are exactly the same, producing a similarity score of 1. However, I encounter an issue when comparing videos that have been merged in different orders. For instance, if I merge video1 and video2 to create a new video and then merge them in reverse order (video2 + video1), the system fails to detect any matching frames between the two resulting videos.


The challenge lies in comparing frames between videos regardless of their timing or order. How can I modify the comparison process to ensure that frames are matched correctly even when the order of video segments changes ?


use ffmpeg_next::{codec, format, frame, media, packet, Error};
use sha2::{Digest, Sha256};
use std::collections::HashSet;

pub fn extract_frames(video_path: &str) -> Result>, Error> {
 ffmpeg_next::init()?;
 let mut ictx = format::input(&video_path)?;
 let input_stream_index = ictx
 .streams()
 .best(media::Type::Video)
 .ok_or(Error::StreamNotFound)?
 .index();
 let codec_params = ictx
 .stream(input_stream_index)
 .ok_or(Error::StreamNotFound)?
 .parameters();
 let codec = codec::Id::from(codec_params.id());
 let mut decoder = codec::Context::from_parameters(codec_params)?
 .decoder()
 .video()?;
 let mut frame = frame::Video::empty();
 let mut frames = Vec::new();
 let mut packet_count = 0;
 let mut frame_count = 0;

 for (stream, packet) in ictx.packets() {
 packet_count += 1;
 if stream.index() == input_stream_index {
 decoder.send_packet(&packet)?;
 while let Ok(()) = decoder.receive_frame(&mut frame) {
 let frame_data = frame.data(0).to_vec();
 frames.push(frame_data);
 frame_count += 1;
 eprintln!("Extracted frame {}", frame_count);
 }
 }
 }
 eprintln!(
 "Processed {} packets and extracted {} frames",
 packet_count, frame_count
 );
 Ok(frames)
}

pub fn hash_frame(frame: &[u8]) -> Vec<u8> {
 let mut hasher = Sha256::new();
 hasher.update(frame);
 hasher.finalize().to_vec()
}

/// Generates a vector of fingerprints for the given video frames.
///
/// This function takes a vector of frames (each represented as a vector of bytes)
/// and generates a fingerprint for each frame using the SHA-256 hash function.
///
/// # Arguments
///
/// * `frames` - A vector of video frames, where each frame is a `Vec<u8>` representing the frame's raw data.
///
/// # Returns
///
/// * `Vec>` - A vector of fingerprints, where each fingerprint is a `Vec<u8>` representing the SHA-256 hash of the corresponding frame.
pub fn generate_fingerprints(frames: Vec>) -> Vec> {
 frames.into_iter().map(|frame| hash_frame(&frame)).collect()
}

/// Compares two videos by extracting frames and generating fingerprints, then computing the similarity between the two sets of fingerprints.
///
/// This function extracts frames from the two provided video files, generates fingerprints for each frame,
/// and compares the fingerprints to determine the similarity between the two videos.
///
/// # Arguments
///
/// * `video_path1` - A string slice that holds the path to the first video file.
/// * `video_path2` - A string slice that holds the path to the second video file.
///
/// # Returns
///
/// * `Result>` - The similarity score between the two videos as a floating-point value (0.0 to 1.0).
/// Returns an error if there is an issue with extracting frames or generating fingerprints.
///
/// # Errors
///
/// This function will return an error if:
/// * There is an issue with opening or reading the video files.
/// * There is an issue with extracting frames from the video files.
/// * There is an issue with generating fingerprints from the frames.
pub fn compare_videos(
 video_path1: &str,
 video_path2: &str,
) -> Result> {
 println!("Comparing videos: {} and {}", video_path1, video_path2);
 let frames1 = extract_frames(video_path1)?;
 let frames2 = extract_frames(video_path2)?;

 let fingerprints1: HashSet<_> = generate_fingerprints(frames1).into_iter().collect();
 let fingerprints2: HashSet<_> = generate_fingerprints(frames2).into_iter().collect();

 println!("Number of fingerprints in video 1: {}", fingerprints1.len());
 println!("Number of fingerprints in video 2: {}", fingerprints2.len());

 if !fingerprints1.is_empty() && !fingerprints2.is_empty() {
 println!(
 "Sample fingerprint from video 1: {:?}",
 fingerprints1.iter().take(1).collect::>()
 );
 println!(
 "Sample fingerprint from video 2: {:?}",
 fingerprints2.iter().take(1).collect::>()
 );
 }

 // Calculate Jaccard similarity
 let intersection_size = fingerprints1.intersection(&fingerprints2).count();
 let union_size = fingerprints1.union(&fingerprints2).count();

 println!("Intersection size: {}", intersection_size);
 println!("Union size: {}", union_size);

 let similarity = if union_size == 0 {
 0.0
 } else {
 intersection_size as f64 / union_size as f64
 };

 println!("Similarity score: {}", similarity);

 Ok(similarity)
}

</u8></u8></u8>