Recherche avancée

Médias (91)

Autres articles (47)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (7563)

  • Hardsub issue with ffmpeg

    27 octobre 2013, par user2925649

    I am trying to hardsub subtitle files on videos with ffmpeg. The video is creating properly but I can't see any text on it. I am on Windows.

    Test with .srt file

    ffmpeg started on 2013-10-27 at 19:27:24
    Report written to "ffmpeg-20131027-192724.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "subtitles=altyazi2895625.srt" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi5795186.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'subtitles=altyazi2895625.srt'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position before avformat_find_stream_info() is 667830
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Applying option vf (video filters) with argument subtitles=altyazi2895625.srt.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Successfully openened the file.
    [subtitles @ 003fd840] Setting 'filename' to value 'altyazi2895625.srt'
    [Parsed_subtitles_0 @ 0079a180] Raster: FreeType 2.4.10
    [Parsed_subtitles_0 @ 0079a180] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_subtitles_0 @ 0079a180] Initialized
    [Parsed_subtitles_0 @ 0079a180] No usable fontconfig configuration file found, using fallback.
    [srt @ 007ac380] Format srt probed with size=2048 and score=100
    [srt @ 007ac380] File position before avformat_find_stream_info() is 280
    [srt @ 007ac380] All info found
    [srt @ 007ac380] Estimating duration from bitrate, this may be inaccurate
    [srt @ 007ac380] File position after avformat_find_stream_info() is 280
    [Parsed_subtitles_0 @ 0079a180] Event: [Script Info]

    ScriptType: v4.00+



    [V4+ Styles]

    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

    Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0



    [Events]

    Format: Layer, Start, End, Style, Text

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
    [Parsed_subtitles_0 @ 0079a180] [00798cb0] Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0
    [Parsed_subtitles_0 @ 0079a180] Name = Default
    [Parsed_subtitles_0 @ 0079a180] FontName = Arial
    [Parsed_subtitles_0 @ 0079a180] FontSize = 16
    [Parsed_subtitles_0 @ 0079a180] PrimaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] SecondaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] OutlineColour = &H0
    [Parsed_subtitles_0 @ 0079a180] BackColour = &H0
    [Parsed_subtitles_0 @ 0079a180] Bold = 0
    [Parsed_subtitles_0 @ 0079a180] Italic = 0
    [Parsed_subtitles_0 @ 0079a180] Underline = 0
    [Parsed_subtitles_0 @ 0079a180] BorderStyle = 1
    [Parsed_subtitles_0 @ 0079a180] Outline = 1
    [Parsed_subtitles_0 @ 0079a180] Shadow = 0
    [Parsed_subtitles_0 @ 0079a180] Alignment = 2
    [Parsed_subtitles_0 @ 0079a180] MarginL = 10
    [Parsed_subtitles_0 @ 0079a180] MarginR = 10
    [Parsed_subtitles_0 @ 0079a180] MarginV = 10
    [Parsed_subtitles_0 @ 0079a180] Encoding = 0
    [Parsed_subtitles_0 @ 0079a180] Event format: Layer, Start, End, Style, Text
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:01.48,0:00:04.02,Default,{\c&HFF00&}VimeoSrtPlayer Example{\c}

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:01.48
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:04.02
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = {\c&HFF00&}VimeoSrtPlayer Example{\c}
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:05.05,0:00:09.55,Default,Support for {\i1}italic{\i0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:05.05
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:09.55
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\i1}italic{\i0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:09.38,0:00:13.75,Default,Support for {\b1}bold{\b0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:09.38
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:13.75
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\b1}bold{\b0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:14.81,0:00:16.14,Default,Multi\NLine\NSupport ;)

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:14.81
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:16.14
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Multi\NLine\NSupport ;)
    [AVIOContext @ 007ac920] Statistics: 280 bytes read, 0 seeks
    [buffer @ 003fd960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 003fd960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 003fd960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 003fd960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 003fd960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 003fd960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 007a9fc0] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 003fd9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 003fd9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 007aee60] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 00796340] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 00796340] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 00796340] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 007aef20] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 007aef80] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 01c87260] detected 1 logical cores
    [mpeg2video @ 01c87260] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 007929a0] detected 1 logical cores
    [mpeg @ 00798580] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_subtitles_0 @ 0079a180] Neither PlayResX nor PlayResY defined. Assuming 384x288
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00798580] First SCR: 0 First DTS: 45000
    [Parsed_subtitles_0 @ 0079a180] color: FF0000
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject
    ...
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 007aa0e0] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 007aeec0] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps= 93 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 003fff40] Statistics: 711491 bytes read, 2 seeks

    Test with .ass file

    ffmpeg started on 2013-10-27 at 19:48:45
    Report written to "ffmpeg-20131027-194845.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "ass=altyazi5334240.ass" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi7055475.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'ass=altyazi5334240.ass'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position before avformat_find_stream_info() is 667830
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Applying option vf (video filters) with argument ass=altyazi5334240.ass.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Successfully openened the file.
    [ass @ 0060d840] Setting 'filename' to value 'altyazi5334240.ass'
    [Parsed_ass_0 @ 00725ce0] Raster: FreeType 2.4.10
    [Parsed_ass_0 @ 00725ce0] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_ass_0 @ 00725ce0] Initialized
    [Parsed_ass_0 @ 00725ce0] No usable fontconfig configuration file found, using fallback.
    [Parsed_ass_0 @ 00725ce0] File size: 1440
    [Parsed_ass_0 @ 00725ce0] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    [Parsed_ass_0 @ 00725ce0] [0073a030] Style: Default,Arial,16,&H00FFFFFF,&H000000FF,&H32202255,&HC8333CBA,0,0,0,0,100,100,0,0,1,3,1,2,100,100,50,1
    [Parsed_ass_0 @ 00725ce0] Name = Default
    [Parsed_ass_0 @ 00725ce0] FontName = Arial
    [Parsed_ass_0 @ 00725ce0] FontSize = 16
    [Parsed_ass_0 @ 00725ce0] PrimaryColour = &H00FFFFFF
    [Parsed_ass_0 @ 00725ce0] SecondaryColour = &H000000FF
    [Parsed_ass_0 @ 00725ce0] OutlineColour = &H32202255
    [Parsed_ass_0 @ 00725ce0] BackColour = &HC8333CBA
    [Parsed_ass_0 @ 00725ce0] Bold = 0
    [Parsed_ass_0 @ 00725ce0] Italic = 0
    [Parsed_ass_0 @ 00725ce0] Underline = 0
    [Parsed_ass_0 @ 00725ce0] StrikeOut = 0
    [Parsed_ass_0 @ 00725ce0] ScaleX = 100
    [Parsed_ass_0 @ 00725ce0] ScaleY = 100
    [Parsed_ass_0 @ 00725ce0] Spacing = 0
    [Parsed_ass_0 @ 00725ce0] Angle = 0
    [Parsed_ass_0 @ 00725ce0] BorderStyle = 1
    [Parsed_ass_0 @ 00725ce0] Outline = 3
    [Parsed_ass_0 @ 00725ce0] Shadow = 1
    [Parsed_ass_0 @ 00725ce0] Alignment = 2
    [Parsed_ass_0 @ 00725ce0] MarginL = 100
    [Parsed_ass_0 @ 00725ce0] MarginR = 100
    [Parsed_ass_0 @ 00725ce0] MarginV = 50
    [Parsed_ass_0 @ 00725ce0] Encoding = 1
    [Parsed_ass_0 @ 00725ce0] Event format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:10.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}This line is 10 seconds long but will disappear and reappear alongside other subs.
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:01.50
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:05.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:06.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:07.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:09.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Added subtitle file: 'altyazi5334240.ass' (2 styles, 8 events)
    [buffer @ 0060d960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 0060d960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 0060d960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 0060d960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 0060d960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 0060d960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 0073c360] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 0060d9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 0060d9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 0073de00] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 007262a0] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 007262a0] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 007262a0] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 0073dec0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 0073df20] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 0081fc00] detected 1 logical cores
    [mpeg2video @ 0081fc00] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 00722980] detected 1 logical cores
    [mpeg @ 00728560] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00728560] First SCR: 0 First DTS: 45000
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 0073c480] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 0073de60] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps=139 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 00721ea0] Statistics: 711491 bytes read, 2 seeks
  • Queue in Python processing more than one video at a time ? [closed]

    12 novembre 2024, par Mateus Coelho

    I have an raspberry pi, that i proccess videos, rotate and put 4 water marks, but, when i run into the raspberry pi, it uses 100% of 4CPUS threads and it reboots. I solved this using -threads 1, to prevent the usage of just one of the 4 CPUS cores, it worked.

    


    I made a Queue to procces one at a time, because i have 4 buttons that trigger the videos. But, when i send more then 3 videos to the Queue, the rasp still reboots, and im monitoring the CPU usage, is 100% for only one of the four CPUS
enter image description here

    


    But, if i send 4 or 5 videos to the thread folder, it completly reboots, and the most awkward, its after the reboot, it made its way to proceed all the videos.

    


    
import os
import time
import subprocess
from google.cloud import storage
import shutil

QUEUE_DIR = "/home/abidu/Desktop/ApertaiRemoteClone"
ERROR_VIDEOS_DIR = "/home/abidu/Desktop/ApertaiRemoteClone/ErrorVideos"
CREDENTIALS_PATH = "/home/abidu/Desktop/keys.json"
BUCKET_NAME = "videos-283812"

def is_valid_video(file_path):
    try:
        result = subprocess.run(
            ['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', file_path],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )
        return result.returncode == 0
    except Exception as e:
        print(f"Erro ao verificar o vídeo: {e}")
        return False

def overlay_images_on_video(input_file, image_files, output_file, positions, image_size=(100, 100), opacity=0.7):
    inputs = ['-i', input_file]
    for image in image_files:
        if image:
            inputs += ['-i', image]
    filter_complex = "[0:v]transpose=2[rotated];"
    current_stream = "[rotated]"
    for i, (x_offset, y_offset) in enumerate(positions):
        filter_complex += f"[{i+1}:v]scale={image_size[0]}:{image_size[1]},format=rgba,colorchannelmixer=aa={opacity}[img{i}];"
        filter_complex += f"{current_stream}[img{i}]overlay={x_offset}:{y_offset}"
        if i < len(positions) - 1:
            filter_complex += f"[tmp{i}];"
            current_stream = f"[tmp{i}]"
        else:
            filter_complex += ""
    command = ['ffmpeg', '-y', '-threads', '1'] + inputs + ['-filter_complex', filter_complex, '-threads', '1', output_file]

    try:
        result = subprocess.run(command, check=True)
        result.check_returncode()  # Verifica se o comando foi executado com sucesso
        print(f"Vídeo processado com sucesso: {output_file}")
    except subprocess.CalledProcessError as e:
        print(f"Erro ao processar o vídeo: {e}")
        if "moov atom not found" in str(e):
            print("Vídeo corrompido ou sem o moov atom. Pulando o arquivo.")
        raise  # Relança a exceção para ser tratada no nível superior

def process_and_upload_video():
    client = storage.Client.from_service_account_json(CREDENTIALS_PATH)
    bucket = client.bucket(BUCKET_NAME)
    
    while True:
        # Aguarda 10 segundos antes de verificar novos vídeos
        time.sleep(10)

        # Verifica se há arquivos no diretório de fila
        queue_files = [f for f in os.listdir(QUEUE_DIR) if f.endswith(".mp4")]
        
        if queue_files:
            video_file = os.path.join(QUEUE_DIR, queue_files[0])  # Pega o primeiro vídeo na fila
            
            # Define o caminho de saída após o processamento com o mesmo nome do arquivo de entrada
            output_file = os.path.join(QUEUE_DIR, "processed_" + os.path.basename(video_file))
            if not is_valid_video(video_file):
                print(f"Arquivo de vídeo inválido ou corrompido: {video_file}. Pulando.")
                os.remove(video_file)  # Remove arquivo corrompido
                continue

            # Processa o vídeo com a função overlay_images_on_video
            try:
                overlay_images_on_video(
                    video_file,
                    ["/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image1.png", 
                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image2.png", 
                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image3.png", 
                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image4.png"],
                    output_file,
                    [(10, 10), (35, 1630), (800, 1630), (790, 15)],
                    image_size=(250, 250),
                    opacity=0.8
                )
                
                if os.path.exists(output_file):
                    blob = bucket.blob(os.path.basename(video_file).replace("-", "/"))
                    blob.upload_from_filename(output_file, content_type='application/octet-stream')
                    print(f"Uploaded {output_file} to {BUCKET_NAME}")
                    os.remove(video_file)
                    os.remove(output_file)
                    print(f"Processed and deleted {video_file} and {output_file}.")
            
            except subprocess.CalledProcessError as e:
                print(f"Erro ao processar {video_file}: {e}")
                
                move_error_video_to_error_directory(video_file)

                continue  # Move para o próximo vídeo na fila após erro

def move_error_video_to_error_directory(video_file):
    print(f"Movendo arquivo de vídeo com erro {video_file} para {ERROR_VIDEOS_DIR}")

    if not os.path.exists(ERROR_VIDEOS_DIR):
        os.makedirs(ERROR_VIDEOS_DIR)
                
    shutil.move(video_file, ERROR_VIDEOS_DIR)

if __name__ == "__main__":
    process_and_upload_video()



    


  • RTSP to HLS conversion with error on some devices

    2 septembre 2024, par Wallace Ketler

    I'm trying to convert, on a node server, RTSP IP camera devices to HLS to run livestreams on the web. The following code works well for some RTSP devices, but for others I encounter problems.

    


       function startLive(rtspUrl, outputDir, id_local, id_camera) {
        return new Promise((resolve, reject) => {
            const processKey = `${id_local}_${id_camera}`;
            if (ffmpegProcesses[processKey]) {
                return reject(new Error('Conversão já está em andamento para esta câmera'));
            }
        
            const process = ffmpeg(rtspUrl)
                .inputOptions([
                    '-rtsp_transport', 'tcp',
                    '-fflags', 'nobuffer',
                    '-max_delay', '1000000',
                    '-analyzeduration', '1000000',
                    '-probesize', '1000000',
                    '-flush_packets', '1',
                    '-avioflags', 'direct'
                ])
                .outputOptions([
                    '-c:v', 'libx264',
                    '-preset', 'ultrafast',
                    '-tune', 'zerolatency',
                    '-c:a', 'aac',
                    '-hls_time', '10',
                    '-hls_flags', 'delete_segments',
                    '-hls_list_size', '5',
                    '-hls_wrap', '5',
                    '-strict', '-2'
                ])
                .output(path.join(outputDir, 'stream.m3u8'))
                .on('start', (commandLine) => {
                    console.log('Spawned FFmpeg with command: ' + commandLine);
                })
                .on('stderr', (stderrLine) => {
                    console.log('FFmpeg stderr: ' + stderrLine);
                })
                .on('end', () => {
                    console.log('Conversão concluída');
                    delete ffmpegProcesses[processKey]; 
                    resolve();
                })
                .on('error', (err, stdout, stderr) => {
                    console.error('Erro na conversão', err);
                    console.error('FFmpeg stdout:', stdout);
                    console.error('FFmpeg stderr:', stderr);
                    delete ffmpegProcesses[processKey]; 
                    reject(err);
                })
                .run();
    
            ffmpegProcesses[processKey] = process; 
        });
    }


    


    When the conversion succeeds, it continues indefinitely with the logs :

    


    FFmpeg stderr: frame=   61 fps= 48 q=13.0 size=N/A time=00:00:02.03 bitrate=N/A dup=60 drop=0 speed= 1.6x    
FFmpeg stderr: frame=   75 fps= 42 q=17.0 size=N/A time=00:00:02.52 bitrate=N/A dup=62 drop=0 speed=1.41x    
FFmpeg stderr: frame=   91 fps= 39 q=16.0 size=N/A time=00:00:03.04 bitrate=N/A dup=65 drop=0 speed=1.31x    
FFmpeg stderr: frame=  108 fps= 38 q=15.0 size=N/A time=00:00:03.60 bitrate=N/A dup=68 drop=0 speed=1.27x    
FFmpeg stderr: frame=  121 fps= 36 q=24.0 size=N/A time=00:00:04.03 bitrate=N/A dup=70 drop=0 speed=1.21x    
FFmpeg stderr: frame=  138 fps= 36 q=16.0 size=N/A time=00:00:04.60 bitrate=N/A dup=73 drop=0 speed= 1.2x    
FFmpeg stderr: frame=  152 fps= 35 q=17.0 size=N/A time=00:00:05.08 bitrate=N/A dup=75 drop=0 speed=1.17x    
FFmpeg stderr: frame=  168 fps= 35 q=16.0 size=N/A time=00:00:05.60 bitrate=N/A dup=78 drop=0 speed=1.15x    
FFmpeg stderr: frame=  183 fps= 34 q=21.0 size=N/A time=00:00:06.11 bitrate=N/A dup=80 drop=0 speed=1.13x    
FFmpeg stderr: frame=  198 fps= 34 q=16.0 size=N/A time=00:00:06.60 bitrate=N/A dup=83 drop=0 speed=1.12x    
FFmpeg stderr: frame=  215 fps= 33 q=16.0 size=N/A time=00:00:07.16 bitrate=N/A dup=86 drop=0 speed=1.11x    
FFmpeg stderr: frame=  230 fps= 33 q=16.0 size=N/A time=00:00:07.66 bitrate=N/A dup=88 drop=0 speed= 1.1x    
FFmpeg stderr: frame=  246 fps= 33 q=19.0 size=N/A time=00:00:08.20 bitrate=N/A dup=91 drop=0 speed= 1.1x    


    


    And with the segments saved in the folder configured as output. But for certain devices, after creating the stream.m3u8 file and saving the first segment, the conversion is considered finished and falls into .on('end') . The error log is as follows :

    


    FFmpeg stderr: frame=    0 fps=0.0 q=0.0 size=N/A time=00:00:01.12 bitrate=N/A speed=2.08x    
FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening 'my_path/stream0.ts' for writing
FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening 'my_path/stream.m3u8.tmp' for writing
FFmpeg stderr: frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:01.37 bitrate=N/A speed= 2.5x    
FFmpeg stderr: video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
FFmpeg stderr: [aac @ 0x55e00dfff840] Qavg: 65536.000
FFmpeg stderr: 
Conversão concluída


    


    The muxing overhead: unknown only appears when the error occurs and the conversion is complete.

    


    I've already tried changing the video and audio encoders, as well as the various input and output parameters of the conversion. I also tried updating ffmpeg (it's already on the latest version, using fluent-ffmpeg, "fluent-ffmpeg": "^2.1.3",)

    


    I would like to understand why this happens on some devices and how to fix it. Thanks.