Recherche avancée

Médias (17)

Mot : - Tags -/wired

Autres articles (75)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • MediaSPIP Player : problèmes potentiels

    22 février 2011, par

    Le lecteur ne fonctionne pas sur Internet Explorer
    Sur Internet Explorer (8 et 7 au moins), le plugin utilise le lecteur Flash flowplayer pour lire vidéos et son. Si le lecteur ne semble pas fonctionner, cela peut venir de la configuration du mod_deflate d’Apache.
    Si dans la configuration de ce module Apache vous avez une ligne qui ressemble à la suivante, essayez de la supprimer ou de la commenter pour voir si le lecteur fonctionne correctement : /** * GeSHi (C) 2004 - 2007 Nigel McNie, (...)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

Sur d’autres sites (12538)

  • FFmpeg fails to draw text

    6 avril 2024, par Edoardo Balducci

    I've rarely used ffmpeg before, so, sorry If the question is too dumb.
I have a problem adding a text layer to a video frame using ffmpeg.

    


    This is my current code :

    


    import subprocess
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtWidgets import QLabel

class VideoThumbnailLabel(QLabel):
    def __init__(self, file_path, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.video = video
        video_duration = self.get_video_duration(file_path)
        thumbnail_path = self.get_thumbnail(file_path, video_duration)
        if thumbnail_path:
            self.setPixmap(QPixmap(thumbnail_path).scaled(160, 90, Qt.KeepAspectRatio))
        self.setToolTip(f"{video.title}\n{video.description}")

    def get_video_duration(self, video_path):
        """Returns the duration of the video in seconds."""
        command = [
            'ffprobe', '-v', 'error', '-show_entries',
            'format=duration', '-of',
            'default=noprint_wrappers=1:nokey=1', video_path
        ]
        try:
            result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
            if result.returncode != 0:
                print(f"ffprobe error: {result.stderr}")
                return 0
            duration = float(result.stdout)
            return int(duration)  # Returning duration as an integer for simplicity
        except Exception as e:
            print(f"Error getting video duration: {e}")
            return 0

    def get_thumbnail(self, video_path, duration):
        """Generates a thumbnail with the video duration overlaid."""
        output_path = "thumbnail.jpg"  # Temporary thumbnail file
        duration_str = f"{duration // 3600:02d}:{(duration % 3600) // 60:02d}:{duration % 60:02d}"
        command = [
            'ffmpeg', '-i', video_path,
            '-ss', '00:00:01',  # Time to take the screenshot
            '-frames:v', '1',  # Number of frames to capture
            '-vf', f"drawtext=text='Duration: {duration_str}':x=10:y=10:fontsize=24:fontcolor=white",
            '-q:v', '2',  # Output quality
            '-y',  # Overwrite output files without asking
            output_path
        ]
        try:
            result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            if result.returncode != 0:
                print(f"ffmpeg error: {result.stderr}")
                return None
            return output_path
        except Exception as e:
            print(f"Error generating thumbnail with duration: {e}")
            return None


    


    and it is used like this :

    


    for i, video in enumerate(self.videos):
    video_widget = VideoThumbnailLabel(video.file)
    video_widget.mousePressEvent = lambda event, v=video: self.onThumbnailClick(
        v
    )
    self.layout.addWidget(video_widget, i // 3, i % 3)


    


    I'm facing a problem where I am not able to get the thumbnail if I try to add the duration (I've tested it without the draw filter and worked fine)

    


    I get this error (from the result.returncode) that I'm not able to comprehend :

    


    ffmpeg error: b"ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers\n  built with Apple clang version 15.0.0 (clang-1500.1.0.2.5)\n  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.1.1_4 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --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-libopenvino --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon\n  libavutil      58. 29.100 / 58. 29.100\n  libavcodec     60. 31.102 / 60. 31.102\n  libavformat    60. 16.100 / 60. 16.100\n  libavdevice    60.  3.100 / 60.  3.100\n  libavfilter     9. 12.100 /  9. 12.100\n  libswscale      7.  5.100 /  7.  5.100\n  libswresample   4. 12.100 /  4. 12.100\n  libpostproc    57.  3.100 / 57.  3.100\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/edoardo/Projects/work/test/BigBuckBunny.mp4':\n  Metadata:\n    major_brand     : mp42\n    minor_version   : 0\n    compatible_brands: isomavc1mp42\n    creation_time   : 2010-01-10T08:29:06.000000Z\n  Duration: 00:09:56.47, start: 0.000000, bitrate: 2119 kb/s\n  Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)\n    Metadata:\n      creation_time   : 2010-01-10T08:29:06.000000Z\n      handler_name    : (C) 2007 Google Inc. v08.13.2007.\n      vendor_id       : [0][0][0][0]\n  Stream #0:1[0x2](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1991 kb/s, 24 fps, 24 tbr, 24k tbn (default)\n    Metadata:\n      creation_time   : 2010-01-10T08:29:06.000000Z\n      handler_name    : (C) 2007 Google Inc. v08.13.2007.\n      vendor_id       : [0][0][0][0]\n[Parsed_drawtext_0 @ 0x60000331cd10] Both text and text file provided. Please provide only one\n[AVFilterGraph @ 0x600002018000] Error initializing filters\n[vost#0:0/mjpeg @ 0x13ce0c7e0] Error initializing a simple filtergraph\nError opening output file thumbnail.jpg.\nError opening output files: Invalid argument\n"


    


    I've installed both ffmpeg and ffmprobe in my machine :

    


    ┌(edoardomacbook-air)-[~/Projects/work/tests-scripts]                                                                                                                                   
└─ $ ffmpeg -version && ffprobe -version                                                                                                                                                              2 ⚙ 
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.1.0.2.5)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.1.1_4 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --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-libopenvino --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil      58. 29.100 / 58. 29.100
libavcodec     60. 31.102 / 60. 31.102
libavformat    60. 16.100 / 60. 16.100
libavdevice    60.  3.100 / 60.  3.100
libavfilter     9. 12.100 /  9. 12.100
libswscale      7.  5.100 /  7.  5.100
libswresample   4. 12.100 /  4. 12.100
libpostproc    57.  3.100 / 57.  3.100
ffprobe version 6.1.1 Copyright (c) 2007-2023 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.1.0.2.5)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.1.1_4 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --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-libopenvino --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil      58. 29.100 / 58. 29.100
libavcodec     60. 31.102 / 60. 31.102
libavformat    60. 16.100 / 60. 16.100
libavdevice    60.  3.100 / 60.  3.100
libavfilter     9. 12.100 /  9. 12.100
libswscale      7.  5.100 /  7.  5.100
libswresample   4. 12.100 /  4. 12.100
libpostproc    57.  3.100 / 57.  3.100


    


    Does anyone see the problem ?

    



    


    P.S. : I know that I havent provided a minimal reproducible example, but since I don't know where the problem lies I didn't want to exclude anything

    


  • ffmpeg API : handle frame loss in hevc encoding

    8 janvier 2024, par Mario

    Everything works fine until the introduction of frame->pts increment due to frame loss.

    


    Below is the regular progression without frame->pts increments :

    


    


    frame->pts=8 pkt->pts=512 pkt->dts=-512 pkt->flags=1
    
frame->pts=9 pkt->pts=2560 pkt->dts=0 pkt->flags=0
    
frame->pts=10 pkt->pts=1536 pkt->dts=512 pkt->flags=0
    
frame->pts=11 pkt->pts=1024 pkt->dts=1024 pkt->flags=0
    
frame->pts=12 pkt->pts=2048 pkt->dts=1536 pkt->flags=0
    
frame->pts=13 pkt->pts=4608 pkt->dts=2048 pkt->flags=0
    
frame->pts=14 pkt->pts=3584 pkt->dts=2560 pkt->flags=0
    
frame->pts=15 pkt->pts=3072 pkt->dts=3072 pkt->flags=0
    
frame->pts=16 pkt->pts=4096 pkt->dts=3584 pkt->flags=0
    
frame->pts=17 pkt->pts=6656 pkt->dts=4096 pkt->flags=0
    
frame->pts=18 pkt->pts=5632 pkt->dts=4608 pkt->flags=0

    


    


    When I introduce the frame->pts increment it happens :

    


    


    frame->pts=15 pkt->pts=512 pkt->dts=-512 pkt->flags=1
    
frame->pts=17 pkt->pts=4608 pkt->dts=2048 pkt->flags=0
    
frame->pts=19 pkt->pts=2560 pkt->dts=1536 pkt->flags=0
    
[mp4 @ 0x7eff842222c0] Application provided invalid, non monotonically increasing dts to muxer in stream 0 : 2048 >= 1536

    


    


    So I wrote the following code as a "quick" solution (between av_packet_rescale_ts() and av_interleaved_write_frame()) :

    


       av_packet_rescale_ts(pkt, c->time_base, st->time_base);  
   ...
   if (pkt->dts<=previous_dts)  
     {  
      if (pkt->pts<=previous_pts)  
        {  
         pkt->pts=previous_dts+1+pkt->pts-pkt->dts;  
        }  
       pkt->dts=previous_dts+1;  
     }  
   previous_dts=pkt->dts;  
   previous_pts=pkt->pts;  
   ...
   ret = av_interleaved_write_frame(fmt_ctx, pkt);  


    


    Now I no longer have the error, but the values are :

    


    


    frame->pts=15 pkt->pts=512 pkt->dts=-512 pkt->flags=1
    
changed frame->pts=15 pkt->pts=512 pkt->dts=1 pkt->flags=1
    
frame->pts=17 pkt->pts=4608 pkt->dts=2048 pkt->flags=0
    
frame->pts=19 pkt->pts=2560 pkt->dts=1536 pkt->flags=0
    
changed frame->pts=19 pkt->pts=3073 pkt->dts=2049 pkt->flags=0
    
frame->pts=21 pkt->pts=1536 pkt->dts=1536 pkt->flags=0
    
changed frame->pts=21 pkt->pts=2050 pkt->dts=2050 pkt->flags=0
    
frame->pts=23 pkt->pts=4096 pkt->dts=3584 pkt->flags=0
    
frame->pts=25 pkt->pts=8704 pkt->dts=6144 pkt->flags=0
    
frame->pts=27 pkt->pts=6656 pkt->dts=5632 pkt->flags=0
    
changed frame->pts=27 pkt->pts=7169 pkt->dts=6145 pkt->flags=0
    
frame->pts=29 pkt->pts=5632 pkt->dts=5632 pkt->flags=0
    
changed frame->pts=29 pkt->pts=6146 pkt->dts=6146 pkt->flags=0
    
frame->pts=31 pkt->pts=7680 pkt->dts=7168 pkt->flags=0
    
frame->pts=33 pkt->pts=12800 pkt->dts=10240 pkt->flags=0
    
frame->pts=35 pkt->pts=10752 pkt->dts=9728 pkt->flags=0
    
changed frame->pts=35 pkt->pts=11265 pkt->dts=10241 pkt->flags=0
    
frame->pts=37 pkt->pts=9728 pkt->dts=9728 pkt->flags=0
    
changed frame->pts=37 pkt->pts=10242 pkt->dts=10242 pkt->flags=0

    


    


    What is the correct way to handle frame loss scenario ?
Is there a way to inform the encoder about frame loss ?

    


    The encoder is "hevc_qsv" and the output format is mov (.mp4).

    


  • FFMPEG error when saving NDI stream to mp4

    22 septembre 2020, par user1163234

    I am trying to record a NDI stream to a MP4 file(I want to stream the mp4 to rtmp endpoint after saving file). However I am getting this error when running this class. https://github.com/WalkerKnapp/devolay/blob/master/examples/src/main/java/com/walker/devolayexamples/recording/RecordingExample.java

    


    Error :

    


    Connecting to source: DESKTOP-GQNH46Q (Ari PC output)
[file @ 0x7fb4f2d48540] Setting default whitelist 'file,crypto'
x265 [info]: HEVC encoder version 0.0
x265 [info]: build info [Mac OS X][clang 8.1.0][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [info]: Main profile, Level-3.1 (Main tier)
x265 [info]: Thread pool created using 8 threads
x265 [info]: Slices                              : 1
x265 [info]: frame threads / pool features       : 1 / wpp(12 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 3
x265 [info]: Keyframe min / max / scenecut / bias: 1 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
x265 [info]: References / ref-limit  cu / depth  : 3 / off / on
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 2 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress            : CRF-28.0 / 0.60
x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip signhide tmvp b-intra
x265 [info]: tools: strong-intra-smoothing lslices=4 deblock sao
[SWR @ 0x7fb4f8893000] Using fltp internally between filters
[mp4 @ 0x7fb4f3820200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 135 >= 107
Failed to write video flush packet, skipping: Invalid argument
configurationVersion:                1
general_profile_space:               0
general_tier_flag:                   0
general_profile_idc:                 1
general_profile_compatibility_flags: 0x60000000
general_constraint_indicator_flags:  0x900000000000
general_level_idc:                   93
min_spatial_segmentation_idc:        0
parallelismType:                     0
chromaFormat:                        1
bitDepthLumaMinus8:                  0
bitDepthChromaMinus8:                0
avgFrameRate:                        0
constantFrameRate:                   0
numTemporalLayers:                   1
temporalIdNested:                    1
lengthSizeMinusOne:                  3
numOfArrays:                         4
array_completeness[0]:               0
NAL_unit_type[0]:                    32
numNalus[0]:                         1
nalUnitLength[0][0]:                 24
array_completeness[1]:               0
NAL_unit_type[1]:                    33
numNalus[1]:                         1
nalUnitLength[1][0]:                 41
array_completeness[2]:               0
NAL_unit_type[2]:                    34
numNalus[2]:                         1
nalUnitLength[2][0]:                 7
array_completeness[3]:               0
NAL_unit_type[3]:                    39
numNalus[3]:                         1
nalUnitLength[3][0]:                 2050
[AVIOContext @ 0x7fb4f2d48640] Statistics: 2 seeks, 4 writeouts
x265 [info]: frame I:      1, Avg QP:14.03  kb/s: 16.33   
x265 [info]: frame P:     36, Avg QP:21.67  kb/s: 0.04    
x265 [info]: frame B:     73, Avg QP:24.22  kb/s: 0.03    
x265 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x265 [info]: consecutive B-frames: 28.9% 13.2% 18.4% 2.6% 36.8% 

encoded 110 frames in 15.13s (7.27 fps), 0.18 kb/s, Avg QP:23.29
[aac @ 0x7fb4f6aa6200] Qavg: 65536.000