Recherche avancée

Médias (91)

Autres articles (25)

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

Sur d’autres sites (3917)

  • Is there any possibility to transcode a h264 hls/m3u8 live stream into another HEVC (h265) hls/m3u8 live stream using FFmpeg in real time ?

    2 septembre 2024, par Ghenadie Pripa

    The command I used :

    


    ffmpeg -i  https://tezaurtv.md/wp-content/uploads/live/index.m3u8 -c:v libx265 -b:v 1500k -tag:v hvc1 -c:a aac -b:a 128k -f hls -hls_time 10 -hls_list_size 10 -hls_flags delete_segments+append_list+program_date_time -hls_playlist_type event -hls_segment_type mpegts -hls_segment_filename "D:/BRUT/HLS/test/stream_%d.ts" -vsync 2 -rtbufsize 500M -loglevel debug D:/BRUT/HLS/test/stream.m3u8


    


    I tried a lot of commands and parameters but nothing helps. The experiment is on local Windows. Transcode with ffmpeg and play with FFplay.

    


    The problem is the following : After I start stream.m3u8 to play after a few seconds the picture and sound stops. What is wrong in the FFmpeg command ?

    


    ffmpeg version 7.0.2-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)


    


    ffplay version 7.0.2-full_build-www.gyan.dev Copyright (c) 2003-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)


    


    An error from FFplay :

    


    [hevc @ 0000023d8c320940] Output frame with POC 239.
[hevc @ 0000023d8c320940] Decoded frame with POC 241.
[hevc @ 0000023d8c320e40] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c320e40] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c320e40] Output frame with POC 240.
[hevc @ 0000023d8c320e40] Decoded frame with POC 240.
[hevc @ 0000023d855aae80] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d855aae80] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d855aae80] Output frame with POC 241.
[hevc @ 0000023d855aae80] Decoded frame with POC 242.
[hevc @ 0000023d8c2cab40] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2cab40] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2cab40] Output frame with POC 242.
[hevc @ 0000023d8c2cab40] Decoded frame with POC 247.
[hevc @ 0000023d8c2da9c0] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2da9c0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2da9c0] Output frame with POC 243.
[hevc @ 0000023d8c2da9c0] Decoded frame with POC 245.
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c327040] Statistics: 207 bytes read, 0 seeks
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')sq=    0B
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c326980] Statistics: 207 bytes read, 0 seeks
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c326f00] Statistics: 207 bytes read, 0 seeks
  11.30 A-V:-18.499 fd=   3 aq=    0KB vq=    0KB sq=    0B


    


    I tried to transcode in real time hls h264 to hls 265.

    


  • Why when using ffmpeg to create in real time avi video file from images the avi file is playing with purple noisy color ?

    30 juin 2015, par Brubaker Haim

    This is my Ffmpeg class i did some time ago

    using System;
    using System.Windows.Forms;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Drawing;
    using System.IO.Pipes;
    using System.Runtime.InteropServices;
    using System.Diagnostics;
    using System.IO;
    using DannyGeneral;

    namespace Manager
    {
       class Ffmpeg
       {
           NamedPipeServerStream p;
           String pipename = "mytestpipe";
           System.Diagnostics.Process process;
           string ffmpegFileName = "ffmpeg.exe";
           string workingDirectory;

           public Ffmpeg()
           {
               workingDirectory = Path.GetDirectoryName(Application.ExecutablePath);
               Logger.Write("workingDirectory: " + workingDirectory);
               if (!Directory.Exists(workingDirectory))
               {
                   Directory.CreateDirectory(workingDirectory);
               }
               ffmpegFileName = Path.Combine(workingDirectory, ffmpegFileName);
               Logger.Write("FfmpegFilename: " + ffmpegFileName);
           }

           public void Start(string pathFileName, int BitmapRate)
           {
               try
               {

                   string outPath = pathFileName;
                   p = new NamedPipeServerStream(pipename, PipeDirection.Out, 1, PipeTransmissionMode.Byte);

                   ProcessStartInfo psi = new ProcessStartInfo();
                   psi.WindowStyle = ProcessWindowStyle.Hidden;
                   psi.UseShellExecute = false;
                   psi.CreateNoWindow = false;
                   psi.FileName = ffmpegFileName;
                   psi.WorkingDirectory = workingDirectory;
                   psi.Arguments = @"-f rawvideo -pix_fmt yuv420p -video_size 1920x1080 -i \\.\pipe\mytestpipe -map 0 -c:v mpeg4 -r " + BitmapRate + " " + outPath;
                   process = Process.Start(psi);
                   process.EnableRaisingEvents = false;
                   psi.RedirectStandardError = true;
                   p.WaitForConnection();
               }
               catch (Exception err)
               {
                   Logger.Write("Exception Error: " + err.ToString());
               }
           }

           public void PushFrame(Bitmap bmp)
           {
               try
               {
                   int length;
                   // Lock the bitmap's bits.
                   //bmp = new Bitmap(1920, 1080);
                   Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
                   //Rectangle rect = new Rectangle(0, 0, 1280, 720);
                   System.Drawing.Imaging.BitmapData bmpData =
                       bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
                       bmp.PixelFormat);

                   int absStride = Math.Abs(bmpData.Stride);
                   // Get the address of the first line.
                   IntPtr ptr = bmpData.Scan0;

                   // Declare an array to hold the bytes of the bitmap.
                   //length = 3 * bmp.Width * bmp.Height;
                   length = absStride * bmpData.Height;
                   byte[] rgbValues = new byte[length];

                   //Marshal.Copy(ptr, rgbValues, 0, length);
                   int j = bmp.Height - 1;
                   for (int i = 0; i < bmp.Height; i++)
                   {
                       IntPtr pointer = new IntPtr(bmpData.Scan0.ToInt32() + (bmpData.Stride * j));
                       System.Runtime.InteropServices.Marshal.Copy(pointer, rgbValues, absStride * (bmp.Height - i - 1), absStride);
                       j--;
                   }
                   p.Write(rgbValues, 0, length);
                   bmp.UnlockBits(bmpData);
               }
               catch(Exception err)
               {
                   Logger.Write("Error: " + err.ToString());
               }

           }

           public void Close()
           {
               p.Close();
           }
       }
    }

    And i’m using it in form1 in a button click event :

    private void button1_Click(object sender, EventArgs e)
           {
               timer1.Start();
           }

    the directroy screenshots is where i’m taking a screenshot every 100ms in the timer1 tick event :

       ScreenShot shot = new ScreenShot();
       public static int counter = 0;
       private void timer1_Tick(object sender, EventArgs e)
       {
           counter++;
           shot.GetScreenShot(@"e:\screenshots\", "screenshot");
           if (counter == 1200)
           {
               timer1.Stop();
           }
       }

    I’m calling the method PushFrame from inside the ScreenShot class where i save the screenshots.

    Ffmpeg fmpeg;

    Then :

    fmpeg = new Ffmpeg();
    fmpeg.Start(@"e:\screenshots\test.avi", 25);

    And :

    public Bitmap GetScreenShot(string folder, string name)
       {
           _screenShot = new Bitmap(GetScreen());
           System.GC.Collect();
           System.GC.WaitForPendingFinalizers();
           string ingName = folder + name + Elgato_Video_Capture.counter.ToString("D6") + ".bmp";
           _screenShot.Save(ingName);
           fmpeg.PushFrame(_screenShot);
           _screenShot.Dispose();

           return _screenShot;
       }

    All the images on the hard disk are fine i can edit/open them and watch them no problems.
    They are also same size.

    The result in the end is one big avi file 1.08 GB size.
    But when i play it i see many windows running inside very fast and all painted with noisy purple color.

    Here a screenshot from the video file when playing it :

    avi file playing screenshot

    I think the problem is somewhere in the Ffmpeg class where i give parameters to the ffmpeg.exe

    psi.Arguments = @"-f rawvideo -pix_fmt yuv420p -video_size 1920x1080 -i \\.\pipe\mytestpipe -map 0 -c:v mpeg4 -r " + BitmapRate + " " + outPath;

    Not sure what make this avi file to look like that.

    This is the video file the result i got : https://www.youtube.com/watch?v=fdxPus-Xv1k&feature=youtu.be

  • unable to download youtube video portion via extracted video URL from youtube-dl and ffmpeg

    29 juillet 2020, par karma

    I've read the following link, and did :

    


    youtube-dl --rm-cache-dir


    


    But it still give me 403 forbidden.

    


    This is my process :

    


    youtube-dl -g https://www.youtube.com/watch?v=kGDgGsrA78s


    


    It gave me a result like this :

    


    https://r2---sn-uigxxi0ujipnvo-q2ne.googlevideo.com/videoplayback?expire=1596034295&ei=lzghX6SHKMOD8QPlx5SQBw&ip=223.255.228.87&id=o-AK6cYo88zJXe5Xb4y1QsXspuRnVCy-zPFpMaHcAaTQ-_&itag=137&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&source=youtube&requiressl=yes&mh=DA&mm=31%2C29&mn=sn-uigxxi0ujipnvo-q2ne%2Csn-npoe7nlz&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=173750&vprv=1&mime=video%2Fmp4&gir=yes&clen=456970484&dur=1389.955&lmt=1521825834085900&mt=1596012582&fvip=5&keepalive=yes&fexp=23883098&c=WEB&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAMvZrHYvC1YrkvtARzhjyD8dnMnlefobGrOFM1rX6QZPAiEAqqeIsKdZ19y-SlHf-l8YwTx2yYbo1p5sFlVoC87oXEQ%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgAIwAVMPrcMhAL476uN_ZzWj8vKPGGW58KCpHBYBsKeICICRgVWgthNvgbGl8VgQwscjJ0n8ib4XBNjRxRgSg2T5r&ratebypass=yes
https://r2---sn-uigxxi0ujipnvo-q2ne.googlevideo.com/videoplayback?expire=1596034295&ei=lzghX6SHKMOD8QPlx5SQBw&ip=223.255.228.87&id=o-AK6cYo88zJXe5Xb4y1QsXspuRnVCy-zPFpMaHcAaTQ-_&itag=140&source=youtube&requiressl=yes&mh=DA&mm=31%2C29&mn=sn-uigxxi0ujipnvo-q2ne%2Csn-npoe7nlz&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=173750&vprv=1&mime=audio%2Fmp4&gir=yes&clen=22077901&dur=1390.039&lmt=1521818817521456&mt=1596012582&fvip=5&keepalive=yes&fexp=23883098&c=WEB&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhANHMaZK4jYg7p4t2dID3d21VRv18I1nhBtXqYRSZo0C7AiAEjO8LwjhXeNQiKqdiZFQ_DsHuXT4rgvPnNQhaDGj9hg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgAIwAVMPrcMhAL476uN_ZzWj8vKPGGW58KCpHBYBsKeICICRgVWgthNvgbGl8VgQwscjJ0n8ib4XBNjRxRgSg2T5r&ratebypass=yes


    


    The result gave me two URL, so I only copy the first line and since what I want is just to copy a few minutes video portion - so in ffmpeg :

    


    ffmpeg -ss 00:00:15.00 -i https://r2---sn-uigxxi0ujipnvo-q2ne.googlevideo.com/videoplayback?expire=1596034295&ei=lzghX6SHKMOD8QPlx5SQBw&ip=223.255.228.87&id=o-AK6cYo88zJXe5Xb4y1QsXspuRnVCy-zPFpMaHcAaTQ-_&itag=140&source=youtube&requiressl=yes&mh=DA&mm=31%2C29&mn=sn-uigxxi0ujipnvo-q2ne%2Csn-npoe7nlz&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=173750&vprv=1&mime=audio%2Fmp4&gir=yes&clen=22077901&dur=1390.039&lmt=1521818817521456&mt=1596012582&fvip=5&keepalive=yes&fexp=23883098&c=WEB&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhANHMaZK4jYg7p4t2dID3d21VRv18I1nhBtXqYRSZo0C7AiAEjO8LwjhXeNQiKqdiZFQ_DsHuXT4rgvPnNQhaDGj9hg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgAIwAVMPrcMhAL476uN_ZzWj8vKPGGW58KCpHBYBsKeICICRgVWgthNvgbGl8VgQwscjJ0n8ib4XBNjRxRgSg2T5r&ratebypass=yes -t 00:00:10.00 -c copy out.mp4


    


    But then the result in command prompt is like this :

    


    ffmpeg version N-93300-g96451477b9 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20190212
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 47.103 / 58. 47.103
  libavformat    58. 26.101 / 58. 26.101
  libavdevice    58.  6.101 / 58.  6.101
  libavfilter     7. 48.100 /  7. 48.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
[https @ 0000020137c895c0] HTTP error 403 Forbidden
https://r2---sn-uigxxi0ujipnvo-q2ne.googlevideo.com/videoplayback?expire=1596034295: Server returned 403 Forbidden (access denied)
'ei' is not recognized as an internal or external command,
operable program or batch file.
'ip' is not recognized as an internal or external command,
operable program or batch file.
'id' is not recognized as an internal or external command,
operable program or batch file.
.... and so on....


    


    BTW, I've also tried to copy the second URL, still 403 error.
    
I also tried to copy both URL, still 403 error.

    


    On the other hand, when I tried to paste the URL into Internet Download Manager,
    
IDM directly recognized the URL and I can download the file via IDM.

    


    Is there a way to resolve this ?

    


    Any kind of respond would be greatly appreciated.
    
Thank you in advanced.

    


    EDIT :
I'm very sorry for my ignorant.
    
It turn out I need to put apostrophe at the beginning and at the end of the URL :).

    


    Dear moderator, please close this thread.
    
Thank you for you all.