Recherche avancée

Médias (1)

Mot : - Tags -/ticket

Autres articles (8)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

  • 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 (...)

  • Qualité du média après traitement

    21 juin 2013, par

    Le bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
    Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...)

Sur d’autres sites (3997)

  • Adding album cover art to FLAC audio files using `ffmpeg`

    27 décembre 2022, par user5395338

    I have ripped files from an audio CD I just bought. I ripped using the Music app on my Macbook Pro, Catalina 10.15.6 - output format was .wav as there was no option for FLAC. My plan was to change format using ffmpeg :

    


    % ffmpeg -v
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers


    


    Except for the "album cover artwork" addition, the .wav-to-.flac conversion implemented in the short bash script below seems to have worked as expected :

    


    #!/bin/bash
for file in *.wav
do
echo $file 
ffmpeg -loglevel quiet -i "$file" -ar 48000 -c:a flac -disposition:v AnotherLand.png -vsync 0 -c:v png "${file/%.wav/.flac}"
done


    


    A script very similar to this one worked some time ago on a series of FLAC-to-FLAC conversions I had to do to reduce the bit depth. However, in that case, the original FLAC files already had the artwork embedded. Since this script produced usable audio files, I decided that I would try adding the artwork with a second ffmpeg command.

    


    I did some research, which informed me that there have been issues with ffmpeg (1, 2, 3, 4) on adding album artwork to FLAC files.

    


    I have tried several commands given in the references above, but still have not found a way to add album artwork to my FLAC files. The following command was a highly upvoted answer, which I felt would work, but didn't :

    


    % ffmpeg -i "01 Grave Walker.flac" -i ./AnotherLand.png -map 0:0 -map 1:0 -codec copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" output.flac

...


Input #0, flac, from '01 Grave Walker.flac':
  Metadata:
    encoder         : Lavf58.76.100
  Duration: 00:06:59.93, start: 0.000000, bitrate: 746 kb/s
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s16
Input #1, png_pipe, from './AnotherLand.png':
  Duration: N/A, bitrate: N/A
  Stream #1:0: Video: png, rgba(pc), 522x522, 25 fps, 25 tbr, 25 tbn, 25 tbc
File 'output.flac' already exists. Overwrite? [y/N] y
[flac @ 0x7fb4d701e800] Video stream #1 is not an attached picture. Ignoring
Output #0, flac, to 'output.flac':
  Metadata:
    encoder         : Lavf58.76.100
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s16
  Stream #0:1: Video: png, rgba(pc), 522x522, q=2-31, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Metadata:
      title           : Album cover
      comment         : Cover (front)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)

...



    


    I don't understand the error message : Video stream #1 is not an attached picture. It seems to imply that that the artwork is "attached" (embedded ???) in the input file, but as I've specified the artwork is a separate file, this makes no sense to me.

    


  • I have a log file with RTP packets : now what ?

    9 mai 2012, par Brannon

    I have a log file with RTP packets coming off of a black box device. I also have a corresponding SDP file (RTSP DESCRIBE) for that. I need to convert this file into some kind of playable video file. Can I pass these two files to FFMpeg or VLC or something else and have it mux that data into something playable ?

    As an alternate plan, I can loop through the individual packets in code and do something with each packet. However, it seems that there are existing libraries for parsing this data. And it seems to do it by hand would be asking for a large project. Is there some kind of video file format that is a pretty raw mix of SDP and RTP ? Thanks for your time.

    Is there a way for FFmpeg or VLC to open an SDP file and then get their input packets through STDIN ?

    I generally use C#, but I could use C if necessary.

    Update 1 : Here is my unworking code. I'm trying to get some kind of output to play with ffplay, but I haven't had any luck yet. It gives me invalid data errors. It does go over all the data correctly as far as I can tell. My output is nearly as big as my input (at about 4MB).

       public class RtpPacket2
       {
           public byte VersionPXCC;
           public byte MPT;
           public ushort Sequence; // length?
           public uint Timestamp;
           public uint Ssrc;
           public int Version { get { return VersionPXCC >> 6; } }
           public bool Padding { get { return (VersionPXCC & 32) > 0; } }
           public bool Extension { get { return (VersionPXCC & 16) > 0; } }
           public int CsrcCount { get { return VersionPXCC & 0xf; } } // ItemCount
           public bool Marker { get { return (MPT & 0x80) > 0; } }
           public int PayloadType { get { return MPT & 0x7f; } } // PacketType
       }


       static void Main(string[] args)
       {
           if (args.Length != 2)
           {
               Console.WriteLine("Usage: <input rtp="rtp" file="file" /> <output 3gp="3gp" file="file">");
               return;
           }
           var inputFile = args[0];
           var outputFile = args[1];
           if(File.Exists(outputFile)) File.Delete(outputFile);

           // FROM the SDP : fmtp 96 profile-level-id=4D0014;packetization-mode=0
           var sps = Convert.FromBase64String("Z0LAHoiLUFge0IAAA4QAAK/IAQ=="); //      BitConverter.ToString(sps)  "67-42-C0-1E-88-8B-50-58-1E-D0-80-00-03-84-00-00-AF-C8-01"  string
           var pps = Convert.FromBase64String("aM44gA=="); //      BitConverter.ToString(pps)  "68-CE-38-80"   string
           var sep = new byte[] { 00, 00, 01 };

           var packet = new RtpPacket2();
           bool firstFrame = true;
           using (var input = File.OpenRead(inputFile))
           using (var reader = new BinaryReader(input))
           using (var output = File.OpenWrite(outputFile))
           {
               //output.Write(header, 0, header.Length);
               output.Write(sep, 0, sep.Length);
               output.Write(sps, 0, sps.Length);
               output.Write(sep, 0, sep.Length);
               output.Write(pps, 0, pps.Length);
               output.Write(sep, 0, sep.Length);
               while (input.Position &lt; input.Length)
               {
                   var size = reader.ReadInt16();
                   packet.VersionPXCC = reader.ReadByte();
                   packet.MPT = reader.ReadByte();
                   packet.Sequence = reader.ReadUInt16();
                   packet.Timestamp = reader.ReadUInt32();
                   packet.Ssrc = reader.ReadUInt32();
                   if (packet.PayloadType == 96)
                   {
                       if (packet.CsrcCount > 0 || packet.Extension) throw new NotImplementedException();

                       var header0 = reader.ReadByte();
                       var header1 = reader.ReadByte();

                       var fragmentType = header0 &amp; 0x1F; // should be 28 for video
                       if(fragmentType != 28) // 28 for video?
                       {
                           input.Position += size - 14;
                           continue;
                       }
                       var nalUnit = header0 &amp; ~0x1F;
                       var nalType = header1 &amp; 0x1F;
                       var start = (header1 &amp; 0x80) > 0;
                       var end = (header1 &amp; 0x40) > 0;

                       if(firstFrame)
                       {
                           output.Write(sep, 0, sep.Length);
                           output.WriteByte((byte)(nalUnit | fragmentType));
                           firstFrame = false;
                       }

                       for (int i = 0; i &lt; size - 14; i++)
                           output.WriteByte(reader.ReadByte());
                       if (packet.Marker)
                           firstFrame = true;
                   }
                   else input.Position += size - 12;
               }
           }
       }
    </output>
  • Why does my Blink based browser play hide and seek ?

    21 janvier 2016, par Caius Jard

    We have a C# tool (that I wrote) that records online broadcasts taking place a custom written (that we wrote) flash app. (There are no DRM or copyright issues here.)

    We’ve coded up a system whereby this tool is installed on a Windows Server 2012 R2 Amazon AWS instance. After we boot the instance, the tool loads, waits for the right time to start recording, launches a browser and passes the command line argument of the URL to access the broadcast. The browser will then load the flash app and the interview audio and video will start arriving at the browser instance on AWS

    By way of a virtual audio cable driver, screen / audio capture directshow filters and ffmpeg a screen recording is taken. The C# tool calls ffmpeg and ffmpeg will record the screen reliably for the entire interview, then the tool shuts the whole thing down

    The problem I’m having is that both Chrome and Electron browser sometimes simply don’t draw themselves on the screen so all ffmpeg ends up recording is a blank desktop and the audio of the broadcast (hence, the browser IS running)

    We found this out when recordings started turning up with X hours of merely recording the windows desktop and the tool’s main window with a countdown timer.

    A screenshotting facility was built into the tool and added to its web control interface, and this way we can test whether the browser is visible - a human looks at the screenshot of every broadcast, just after recording has started (the browser is supposed to be on show by this time)

    We notice that 50% of the time, the browser isn’t drawing itself on screen. By 50% I mean that every other recording that the AWS instance carries out, will be blank : AWS starts, records ok, shuts down. AWS starts again an hour later for a different broadcast, recording is blank, shuts down.. Starts/ok/shutdown. Starts/blank/shutdown. Repeat ad infinitum

    What’s even more strange is that if I run VNCviewer on my dev machine and connect up to an instance that is having a problem, the instant that the VNC connection is up and the remote desktop is showing on my screen, the browser suddenly appears as if nothing was ever wrong. A screenshot from before the VNC connect shows blank desktop, connect VNC, take another screenshot and the browser is there. All through it the audio is fine - the browser connected to the boadcast is fine, for sure

    It’s as though Chrome/Electron thinks "you know what, noone is looking at me so I’m not going to bother drawing myself". No screen saver is set, though the power plan has the setting "turn off the display after 15 minutes".

    Perhaps Chrome/Electron have a test amounts to "if the display is off, don’t draw". I can’t explain the inconsistency though - the recorder launches at least 1 hour before it’s needed, and sits there idle until it’s time to start the browser. You’d hence imagine that the "power off the monitor after 15 mins" setting would reliably have ensured the "monitor" is "off" by the time every recording start comes around

    This behaviour doesn’t happen with any of the other browsers (but unfortunately the app doesn’t and cannot work in them because it uses some weird chrome-only technology/API).

    Can anyone suggest anything to look at to help debug this, or anything I can build into the C# tool to overcome the problem ? Coding it up to connect to itself via VNC for a few seconds after it has launched the browser.. Well that just tastes nasty.

    Naturally, as soon as I connect to the machine via VNC (rather than RDP - RDP isn’t usable because the recording context is in a logged on session for a particular user) the problem goes away, which makes it frustratingly hard to debug.