
Recherche avancée
Médias (1)
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
Autres articles (108)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 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 (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (15707)
-
How would I assign multiple MMAP's from single file descriptor ?
9 juin 2011, par Alex StevensSo, for my final year project, I'm using Video4Linux2 to pull YUV420 images from a camera, parse them through to x264 (which uses these images natively), and then send the encoded stream via Live555 to an RTP/RTCP compliant video player on a client over a wireless network. All of this I'm trying to do in real-time, so there'll be a control algorithm, but that's not the scope of this question. All of this - except Live555 - is being written in C. Currently, I'm near the end of encoding the video, but want to improve performance.
To say the least, I've hit a snag... I'm trying to avoid User Space Pointers for V4L2 and use mmap(). I'm encoding video, but since it's YUV420, I've been malloc'ing new memory to hold the Y', U and V planes in three different variables for x264 to read upon. I would like to keep these variables as pointers to an mmap'ed piece of memory.
However, the V4L2 device has one single file descriptor for the buffered stream, and I need to split the stream into three mmap'ed variables adhering to the YUV420 standard, like so...
buffers[n_buffers].y_plane = mmap(NULL, (2 * width * height) / 3,
PROT_READ | PROT_WRITE, MAP_SHARED,
fd, buf.m.offset);
buffers[n_buffers].u_plane = mmap(NULL, width * height / 6,
PROT_READ | PROT_WRITE, MAP_SHARED,
fd, buf.m.offset +
((2 * width * height) / 3 + 1) /
sysconf(_SC_PAGE_SIZE));
buffers[n_buffers].v_plane = mmap(NULL, width * height / 6,
PROT_READ | PROT_WRITE, MAP_SHARED,
fd, buf.m.offset +
((2 * width * height) / 3 +
width * height / 6 + 1) /
sysconf(_SC_PAGE_SIZE));Where "width" and "height" is the resolution of the video (eg. 640x480).
From what I understand... MMAP seeks through a file, kind of like this (pseudoish-code) :
fd = v4l2_open(...);
lseek(fd, buf.m.offset + (2 * width * height) / 3);
read(fd, buffers[n_buffers].u_plane, width * height / 6);My code is located in a Launchpad Repo here (for more background) :
http://bazaar.launchpad.net/ alex-stevens/+junk/spyPanda/files (Revision 11)And the YUV420 format can be seen clearly from this Wiki illustration : http://en.wikipedia.org/wiki/File:Yuv420.svg (I essentially want to split up the Y, U, and V bytes into each mmap'ed memory)
Anyone care to explain a way to mmap three variables to memory from the one file descriptor, or why I went wrong ? Or even hint at a better idea to parse the YUV420 buffer to x264 ? :P
Cheers ! ^^
-
HTML5 video - frame accurate seeking on Android devices ?
27 mai 2015, par GFoley83I’m working on an app that requires frame accurate seeking on video in the browser, across desktop and mobile devices (including packaged apps with Cordova).
Desktop browsers work fine as do iOS devices (both as a packaged app and through Safari) but Android devices only seem to show key frames (aka intra frames or i-frames) in the video.
I’ve setup a test page on jsfiddle to help demo my problem.
The video has been encoded with ZenCoder. It has a frame rate of 23.976 and key frames every 250 frames. The video itself shows the current frame index so you can easily see that only the frames at 0, 250 and 500 frames are being displayed on Android devices, regardless of where you seek to.
At this stage I’d be happy with a solution that works in Android browsers or as a packaged app with Cordova (I’ve also tried using the Crosswalk WebView but to no avail).
-
how to set ffmpeg bitrate, frame per second when scalling from low to high resolution/ high to low
21 janvier 2015, par user2303069I’m developing a video sharing app for mobile device users. I noticed if I convert video with ffmpeg from a low(ex 240x320) to a higher resolution(ex 480x-1) the video looses quality and also there is no sound at the end. My question to you is how should I filter(how many fps,bitrate ect) the converted file ? In terms of parameters, how should I convert to make sure the video comes out in good quality at it’s destination(the user who will play it on their mobile device[Android/BlackBerry]).
Here is my current code(java) :
/************************ CONVERTING TIME *************************
method to convert video-clip
*/
if(sn.toString().trim().startsWith("<>")){
String info=sn.toString().trim().substring(2);
String scale=info.substring(0, info.indexOf("."));
String width=scale.substring(0, scale.indexOf("x"));
String name=info.substring(info.indexOf(".")+1, info.length());
String to = null;
String from;
try{
//calculate to and from
to=name.substring(0, name.indexOf("$"));
from=name.substring(name.indexOf("$")+1, name.lastIndexOf("$"));
gui.textArea1.append("\nStart converting...: to="+to+" from="+from+" fileName="+name);
}catch(NullPointerException npe){
gui.textArea1.append("\nNullpointer in calculate name in converting: "+npe.getMessage());
}
final Path videoIn = Paths.get("c:\\wamp\\www\\iclips\\videoMessages\\"+name);
final Path encodingFile = Paths.get("c:\\wamp\\www\\iclips\\videoMessages\\scaled-"+name);
final Path errorFile = Paths.get("c:\\ffmpeg\\bin\\error.txt");
String pro;
int w=Integer.parseInt(width);
if(w<=240){
pro="baseline";
}else if(w>240&&w<=480){
pro="main";
}else if(w>480){
pro="high";
}else{
pro="baseline";
}
//int retCode;
try {
Files.deleteIfExists(encodingFile);
Files.deleteIfExists(errorFile);
final ProcessBuilder pb
= new ProcessBuilder("c:\\ffmpeg\\bin\\ffmpeg.exe",
"-i", videoIn.toString(),
"-y",
"-vf", "scale="+width+":-1",
// "-pix_fmt","yuv420p",
"-vcodec", "libx264",
"-vprofile", pro,
"c:\\wamp\\www\\iclips\\videoMessages\\scaled-"+name
); //or other command....
pb.redirectError(errorFile.toFile());
pb.redirectOutput(encodingFile.toFile());
final Process p = pb.start();
try {
p.waitFor();
if(p.exitValue()==0){
gui.textArea1.append("\n+++++++++++++Vic-^clip converted successfully:"
+ " ExitValue=["+String.valueOf(p.exitValue())+"] ++++++++++++++");
if(Files.deleteIfExists(videoIn)){
gui.textArea1.append("\n"+videoIn.toString()+" deleted!");
}
sendMsg("Scalling successfull:-) Video-clip name=scaled-"+name+"_", "\nSent scaled successfull "+username);
NotifyClientOfScaledVideoMessage(to,"^scaled-"+name+"_");
}else{
gui.textArea1.append("\nSomething went wrong with process-convert: ExitValue="+String.valueOf(p.exitValue()));
sendMsg("Unable to scale video, try again._", "\nSent scaled failed to "+username);
}
} catch (InterruptedException e) {
gui.textArea1.append("\nInterrupted process convert: "+e.getMessage());
}
} catch (IOException e) {
// deal with e here
gui.textArea1.append("\nIOException in Convert Video: "+e.getMessage());
}
}Thank you very much.