
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (16)
-
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...) -
Submit enhancements and plugins
13 avril 2011If you have developed a new extension to add one or more useful features to MediaSPIP, let us know and its integration into the core MedisSPIP functionality will be considered.
You can use the development discussion list to request for help with creating a plugin. As MediaSPIP is based on SPIP - or you can use the SPIP discussion list SPIP-Zone. -
Le plugin : Podcasts.
14 juillet 2010, parLe 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 (...)
Sur d’autres sites (4771)
-
What is difference between using ffmpeg GOP setting or x264opt keyint combination ?
25 mars 2016, par scaryguyHere is a ffmpeg command :
ffmpeg -i input.mp4 -flags +global_header -c:v libx264 -vf scale="864x486",setsar=1:1,setdar=16:9 -profile:v main -level 31 -g 50 -keyint_min 50 -sc_threshold 0 -b:v 700k -pix_fmt yuv420p -c:a libfdk_aac -ar 44100 -ac 2 -b:a 128k output2.mp4
and here is the other one :
ffmpeg -i input.mp4 -flags +global_header -c:v libx264 -vf scale="864x486",setsar=1:1,setdar=16:9 -x264opts keyint=50:min-keyint=50:no-scenecut -profile:v main -level 31 -b:v 700k -pix_fmt yuv420p -c:a libfdk_aac -ar 44100 -ac 2 -b:a 128k output2.mp4
Are there any differences between using
-g 50 -keyint_min 50 -sc_threshold 0
and-x264opts keyint=50:min-keyint=50:no-scenecut
settings to gain constant keyframe interval ? -
Difference between single and double quotes in subprocess [Python 3.4]
11 décembre 2016, par VasilisI’m using Python 3.4 in Windows Server 12 and I have some Python code that executes the ffmpeg command bellow :
ffmpeg -i input.mp4 -vf select='not(mod(n\,30)),setpts=N/((30)*TB)' -c:v rawvideo -pix_fmt uyvy422 -y output.avi
I use the following code to execute the external command :
try:
output = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
except subprocess.CalledProcessError as exc:
print ("Command %s failed with error code" % command, exc.returncode, exc.output, file=sys.stderr)When I pass the command enclosed in single quotes it successfully runs the command :
command = 'ffmpeg -i input.mp4 -vf select="not(mod(n\,30)),setpts=N/((30)*TB)" -c:v rawvideo -pix_fmt uyvy422 -y output.avi'
When I pass the command as a string enclosed in double quotes it fails :
command = "ffmpeg -i input.mp4 -vf select='not(mod(n\,30)),setpts=N/((30)*TB)' -c:v rawvideo -pix_fmt uyvy422 -y output.avi"
The error message is the following :
[Eval @ 0000000eaf2fe040] Invalid chars ',setpts=N/((30)*TB)' at the end of expression 'not(mod(n,30)),setpts=N/((30)*TB)'
[Parsed_select_0 @ 0000000eb0d27ca0] Error while parsing expression 'not(mod
(n,30)),setpts=N/((30)*TB)'
[AVFilterGraph @ 0000000eb0d0a5a0] Error initializing filter 'select' with args 'not(mod(n\\,30)),setpts=N/((30)*TB)'
Error opening filters!"So it appears that when using double quotes the slash
/
that is part of thesetpts=N/((30)*TB)
option is not interpreted correctly, while with double quotes there’s no problem. Note that both commands (either with double or single quotes in the select option) work fine when I run them directly from the command prompt.
However, I’ve seen many people saying that from a technical perspective single and double quotes make no difference, e.g.- http://programmers.stackexchange.com/questions/155176/single-quotes-vs-double-quotes
- http://programmers.stackexchange.com/questions/155176/single-quotes-vs-double-quotes
Does slash parsing depend on the quotes around the string or this is just a behavior specific to the executable I’m running ?
-
TSCC RLE Decoding : Best way to get difference between two frames
25 janvier 2016, par Dylan AlvaroHello video codec experts,
I am working with a video codec which is tscc video codec. It uses RLE algorithm.
I am looking for a way to get the differences between the current decoded frame and the previous frame and store those differences in an array (the best case scenario would be to store those frame differences in an openCV matrice cv::Mat).
Currently, I am waiting to have 2 frames decoded, I keep in memory those two decoded frames and from the 3rd one, I am comparing the two previous frames to look for any difference between them and then I store the differences in a vector.
This algorithm could be optimized because I’m using lost of resources and not taking advantage of the compressed frame...If anyone could help me find a way to improve the idea I have behind this it would be great :
The decode function is the following. (It uses two control bytes at the beginning of the compressed RLE frame to analyse whether it is an end of frame, end of line, jump of pixels, etc...) :
static int decode_rle(CamtasiaContext *c, unsigned int srcsize)
{
unsigned char *src = c->decomp_buf;
unsigned char *output, *output_end;
int p1, p2, line=c->height, pos=0, i;
uint16_t pix16;
uint32_t pix32;
output = c->pic.data[0] + (c->height - 1) * c->pic.linesize[0];
output_end = c->pic.data[0] + (c->height) * c->pic.linesize[0];
while(src < c->decomp_buf + srcsize) {
p1 = *src++;
//Escape code
if(p1 == 0)
{
p2 = *src++;
if(p2 == 0) { //End-of-line
output = c->pic.data[0] + (--line) * c->pic.linesize[0];
if (line < 0)
return -1;
pos = 0;
continue;
} else if(p2 == 1) { //End-of-picture
return 0;
} else if(p2 == 2) { //Skip
p1 = *src++;
p2 = *src++;
line -= p2;
if (line < 0)
return -1;
pos += p1;
output = c->pic.data[0] + line * c->pic.linesize[0] + pos * (c->bpp / 8);
continue;
}
// Copy data
if (output + p2 * (c->bpp / 8) > output_end) {
src += p2 * (c->bpp / 8);
continue;
}
if (c->bpp == 16)
{
for(i = 0; i < p2; i++)
{
pix16 = AV_RL16(src);
src += 2;
*(uint16_t*)output = pix16;
output += 2;
}
}
pos += p2;
}
else
{ //Run of pixels
int pix[4]; //original pixel
switch(c->bpp){
case 8: pix[0] = *src++;
break;
case 16: pix16 = AV_RL16(src);
src += 2;
*(uint16_t*)pix = pix16;
break;
case 24: pix[0] = *src++;
pix[1] = *src++;
pix[2] = *src++;
break;
case 32: pix32 = AV_RL32(src);
src += 4;
*(uint32_t*)pix = pix32;
break;
}
if (output + p1 * (c->bpp / 8) > output_end)
continue;
for(i = 0; i < p1; i++) {
switch(c->bpp){
case 8: *output++ = pix[0];
break;
case 16: *(uint16_t*)output = pix16;
output += 2;
break;
case 24: *output++ = pix[0];
*output++ = pix[1];
*output++ = pix[2];
break;
case 32: *(uint32_t*)output = pix32;
output += 4;
break;
}
}
pos += p1;
}
}Thank you for your kind help !