
Recherche avancée
Médias (1)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
Autres articles (42)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (6646)
-
Cutting a live stream into separate mp4 files
9 juin 2017, par FearhunterI am doing a research for cutting a live stream in piece and save it as mp4 files. I am using this source for the proof of concept :
And this is the example code I use :
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MediaServices.Client;
using Newtonsoft.Json.Linq;
namespace AMSLiveTest
{
class Program
{
private const string StreamingEndpointName = "streamingendpoint001";
private const string ChannelName = "channel001";
private const string AssetlName = "asset001";
private const string ProgramlName = "program001";
// Read values from the App.config file.
private static readonly string _mediaServicesAccountName =
ConfigurationManager.AppSettings["MediaServicesAccountName"];
private static readonly string _mediaServicesAccountKey =
ConfigurationManager.AppSettings["MediaServicesAccountKey"];
// Field for service context.
private static CloudMediaContext _context = null;
private static MediaServicesCredentials _cachedCredentials = null;
static void Main(string[] args)
{
// Create and cache the Media Services credentials in a static class variable.
_cachedCredentials = new MediaServicesCredentials(
_mediaServicesAccountName,
_mediaServicesAccountKey);
// Used the cached credentials to create CloudMediaContext.
_context = new CloudMediaContext(_cachedCredentials);
IChannel channel = CreateAndStartChannel();
// Set the Live Encoder to point to the channel's input endpoint:
string ingestUrl = channel.Input.Endpoints.FirstOrDefault().Url.ToString();
// Use the previewEndpoint to preview and verify
// that the input from the encoder is actually reaching the Channel.
string previewEndpoint = channel.Preview.Endpoints.FirstOrDefault().Url.ToString();
IProgram program = CreateAndStartProgram(channel);
ILocator locator = CreateLocatorForAsset(program.Asset, program.ArchiveWindowLength);
IStreamingEndpoint streamingEndpoint = CreateAndStartStreamingEndpoint();
GetLocatorsInAllStreamingEndpoints(program.Asset);
// Once you are done streaming, clean up your resources.
Cleanup(streamingEndpoint, channel);
}
public static IChannel CreateAndStartChannel()
{
//If you want to change the Smooth fragments to HLS segment ratio, you would set the ChannelCreationOptions’s Output property.
IChannel channel = _context.Channels.Create(
new ChannelCreationOptions
{
Name = ChannelName,
Input = CreateChannelInput(),
Preview = CreateChannelPreview()
});
//Starting and stopping Channels can take some time to execute. To determine the state of operations after calling Start or Stop, query the IChannel.State .
channel.Start();
return channel;
}
private static ChannelInput CreateChannelInput()
{
return new ChannelInput
{
StreamingProtocol = StreamingProtocol.RTMP,
AccessControl = new ChannelAccessControl
{
IPAllowList = new List<iprange>
{
new IPRange
{
Name = "TestChannelInput001",
// Setting 0.0.0.0 for Address and 0 for SubnetPrefixLength
// will allow access to IP addresses.
Address = IPAddress.Parse("0.0.0.0"),
SubnetPrefixLength = 0
}
}
}
};
}
private static ChannelPreview CreateChannelPreview()
{
return new ChannelPreview
{
AccessControl = new ChannelAccessControl
{
IPAllowList = new List<iprange>
{
new IPRange
{
Name = "TestChannelPreview001",
// Setting 0.0.0.0 for Address and 0 for SubnetPrefixLength
// will allow access to IP addresses.
Address = IPAddress.Parse("0.0.0.0"),
SubnetPrefixLength = 0
}
}
}
};
}
public static void UpdateCrossSiteAccessPoliciesForChannel(IChannel channel)
{
var clientPolicy =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<policy>
<domain uri=""></domain>
<resource path=""></resource>"" include-subpaths=""true""/>
</policy>
";
var xdomainPolicy =
@"<?xml version=""1.0"" ?>
";
channel.CrossSiteAccessPolicies.ClientAccessPolicy = clientPolicy;
channel.CrossSiteAccessPolicies.CrossDomainPolicy = xdomainPolicy;
channel.Update();
}
public static IProgram CreateAndStartProgram(IChannel channel)
{
IAsset asset = _context.Assets.Create(AssetlName, AssetCreationOptions.None);
// Create a Program on the Channel. You can have multiple Programs that overlap or are sequential;
// however each Program must have a unique name within your Media Services account.
IProgram program = channel.Programs.Create(ProgramlName, TimeSpan.FromHours(3), asset.Id);
program.Start();
return program;
}
public static ILocator CreateLocatorForAsset(IAsset asset, TimeSpan ArchiveWindowLength)
{
// You cannot create a streaming locator using an AccessPolicy that includes write or delete permissions.
var locator = _context.Locators.CreateLocator
(
LocatorType.OnDemandOrigin,
asset,
_context.AccessPolicies.Create
(
"Live Stream Policy",
ArchiveWindowLength,
AccessPermissions.Read
)
);
return locator;
}
public static IStreamingEndpoint CreateAndStartStreamingEndpoint()
{
var options = new StreamingEndpointCreationOptions
{
Name = StreamingEndpointName,
ScaleUnits = 1,
AccessControl = GetAccessControl(),
CacheControl = GetCacheControl()
};
IStreamingEndpoint streamingEndpoint = _context.StreamingEndpoints.Create(options);
streamingEndpoint.Start();
return streamingEndpoint;
}
private static StreamingEndpointAccessControl GetAccessControl()
{
return new StreamingEndpointAccessControl
{
IPAllowList = new List<iprange>
{
new IPRange
{
Name = "Allow all",
Address = IPAddress.Parse("0.0.0.0"),
SubnetPrefixLength = 0
}
},
AkamaiSignatureHeaderAuthenticationKeyList = new List<akamaisignatureheaderauthenticationkey>
{
new AkamaiSignatureHeaderAuthenticationKey
{
Identifier = "My key",
Expiration = DateTime.UtcNow + TimeSpan.FromDays(365),
Base64Key = Convert.ToBase64String(GenerateRandomBytes(16))
}
}
};
}
private static byte[] GenerateRandomBytes(int length)
{
var bytes = new byte[length];
using (var rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(bytes);
}
return bytes;
}
private static StreamingEndpointCacheControl GetCacheControl()
{
return new StreamingEndpointCacheControl
{
MaxAge = TimeSpan.FromSeconds(1000)
};
}
public static void UpdateCrossSiteAccessPoliciesForStreamingEndpoint(IStreamingEndpoint streamingEndpoint)
{
var clientPolicy =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<policy>
<domain uri=""></domain>
<resource path=""></resource>"" include-subpaths=""true""/>
</policy>
";
var xdomainPolicy =
@"<?xml version=""1.0"" ?>
";
streamingEndpoint.CrossSiteAccessPolicies.ClientAccessPolicy = clientPolicy;
streamingEndpoint.CrossSiteAccessPolicies.CrossDomainPolicy = xdomainPolicy;
streamingEndpoint.Update();
}
public static void GetLocatorsInAllStreamingEndpoints(IAsset asset)
{
var locators = asset.Locators.Where(l => l.Type == LocatorType.OnDemandOrigin);
var ismFile = asset.AssetFiles.AsEnumerable().FirstOrDefault(a => a.Name.EndsWith(".ism"));
var template = new UriTemplate("{contentAccessComponent}/{ismFileName}/manifest");
var urls = locators.SelectMany(l =>
_context
.StreamingEndpoints
.AsEnumerable()
.Where(se => se.State == StreamingEndpointState.Running)
.Select(
se =>
template.BindByPosition(new Uri("http://" + se.HostName),
l.ContentAccessComponent,
ismFile.Name)))
.ToArray();
}
public static void Cleanup(IStreamingEndpoint streamingEndpoint,
IChannel channel)
{
if (streamingEndpoint != null)
{
streamingEndpoint.Stop();
streamingEndpoint.Delete();
}
IAsset asset;
if (channel != null)
{
foreach (var program in channel.Programs)
{
asset = _context.Assets.Where(se => se.Id == program.AssetId)
.FirstOrDefault();
program.Stop();
program.Delete();
if (asset != null)
{
foreach (var l in asset.Locators)
l.Delete();
asset.Delete();
}
}
channel.Stop();
channel.Delete();
}
}
}
}
</akamaisignatureheaderauthenticationkey></iprange></iprange></iprange>Now I want to make a method to cut a live stream for example every 15 minutes and save it as mp4 but don’t know where to start.
Can someone point me in the right direction ?
Kind regards
UPDATE :
I want to save the mp4 files on my hard disk.
-
Improve ffmpeg CPU usage by compromising quality
29 septembre 2016, par Hardik JunejaI am using FFMpeg for screen capturing.
I am looking for a screen capturing tool that will run on 1000 of VMs (windows and mac).The VMs have limited CPU (1 core) and 2GB ram and No GPU.Currently I invoke ffmpeg with
ffmpeg -y -framerate 8 -f dshow -f gdigrab -i "desktop" -c:v libx264 -crf 0 -preset ultrafast -threads 0 temp.mkv
I am using gdigrab to capture screen ? Is there any better options that might reduce cpu usage ? or changing the encoder or format ?
I am aiming for 4-5% reduction in CPU usage.
Thanks in advance
-
Anomalie #3018 (Résolu) : Gestion des plugins inutilisable avec PostgreSQL
28 juin 2013, par Clo CastelloInstallation toute propre SPIP 3.0.10 (20600) avec PostGreSQL 8.4.
Page : ecrire/ ?exec=admin_plugin
Erreur SQL rencontrée :Erreur SQL 1000 errcode : 1000 : invalid input syntax for integer : "" at character 191 SELECT pa.id_paquet, pl.prefixe, pa.version, pa.etatnum, pa.obsolete FROM spip_paquets AS pa, spip_plugins AS pl WHERE pa.id_plugin = pl.id_plugin AND id_depot=’0’ AND ((pl.id_plugin IN (’’))) GROUP BY pa.id_paquet,pl.prefixe,pa.version,pa.etatnum,pa.obsolete
Effectivement spip_paquets (id_plugin) est un bigintAffichage de la page :
Warning : array_keys() expects parameter 1 to be array, null given in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 871 Warning : join() : Invalid arguments passed in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 871 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : strpos() : Empty delimiter in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 1033 Warning : pg_query() : Query failed : ERROR : syntax error at or near "," at character 356 in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 168 Warning : pg_query() : Query failed : ERROR : invalid input syntax for integer : "" at character 191 in /home/sites/positel-map.com/website/ecrire/req/pg.php on line 168