
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (45)
-
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 -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)
Sur d’autres sites (7561)
-
Logic and lawyers
22 mai 2013, par Mans — Law and libertyReading about various patent litigation cases, I am struck by the frequency with which common logical fallacies such as the Appeal to Consequences are committed. We shall look at a couple of recent examples. In conjunction with the Federal Circuit ruling in CLS Bank v. Alice Corp., Judge Moore, joined … Continue reading
-
Elacarte Presto Tablets
14 mars 2013, par Multimedia Mike — GeneralI visited an Applebee’s restaurant this past weekend. The first thing I spied was a family at a table with what looked like a 7-inch tablet. It’s not an uncommon sight. However, as I moved through the restaurant, I noticed that every single table was equipped with such a tablet. It looked like this :
For a computer nerd like me, you could probably guess that I was be far more interested in this gadget than the cuisine. The thing said “Presto” on the front and “Elacarte” on the back. Putting this together, we get the website of Elacarte, the purveyors of this restaurant tablet technology. Months after the iPad was released on 2010, I remember stories about high-end restaurants showing their wine list via iPads. This tablet goes well beyond that.
How was it ? Well, confusing, mostly. The hostess told us we could order through the tablet or through her. Since we already knew what we wanted, she just manually took our order and presumably entered it into the system. So, right away, the question is : Do we order through a human or through a computer ? Or a combination ? Do we have to use the tablet if we don’t want to ?
Hardware
When picking up the tablet, it’s hard not to notice that it is very heavy. At first, I suspected that it was deliberately weighted down as some minor attempt at an anti-theft measure. But then I remembered what I know about power budgets of phones and tablets– powering the screen accounts for much of the battery usage. I realized that this device needs to drive the screen for about 14 continuous hours each day. I.e., the weight must come from a massive battery.The screen is good. It’s a capacitive touchscreen, so nice and responsive. When I first spied the device, I felt certain it would be a resistive touchscreen (which is more accurately called a touch-and-press-down screen). There is an AC adapter on the side of the tablet. This is the only interface to the device :
That looks to me like an internal SATA connector (different from an eSATA connector). Foolishly, I didn’t have a SATA cable on me so I couldn’t verify.
User Interface
The interface options are : Order, Games, Neighborhood, and Pay. One big benefit of accessing the menu through the Order option is that each menu item can have a picture. For people who order more by picture than text description, this is useful. Rather, it would be, if more items had pictures. I’m not sure there were more pictures than seen in the print menu.
For Games, there were a variety of party games. The interface clearly stated that we got to play 2 free games. This implied to me that further games cost money. We tried one game briefly and the food came.2 more options : Neighborhood– I know I dug into this option, but I forget what it was. Maybe it discussed local attractions. Finally, Pay. This thing has an integrated credit card reader. There is no integrated printer, though, so if you want one, you will have to request one from a human.
Experience
So we ordered through a human since we didn’t feel like being thrust into this new paradigm when we just wanted lunch. The staff was obviously amenable to that. However, I got a chance to ask them a lot of questions about the particulars. Apparently, they have had this system for about 5 months. It was confirmed that the tablets do, in fact, have gargantuan batteries that have to last through the restaurant’s entire business hours. Do they need to be charged every night ? Yes, they do. But how ? The staff described this several large charging blocks with many cables sprouting out. Reportedly, some units still don’t make it through the entire day.When it was time to pay, I pressed the Pay button on the interface. The bill I saw had nothing in common with what we ordered (actually, it was cheaper, so perhaps I should have just accepted it). But I pointed it out to a human and they said that this happens sometimes. So they manually printed my bill. There was a dollar charge for the game that was supposed to be free. I pointed this out and they removed it. It’s minor, I know, but it’s still worth trying to work out these bugs.
One of the staff also described how a restaurant doesn’t need to employ as many people thanks to the tablet. She gave a nervous, awkward, self-conscious laugh when she said this. All I could think of was this Dilbert comic strip in which the boss realizes that his smartphone could perform certain key functions previously handled by his assistant.
Not A New Idea
Some people might think this is a totally new concept. It’s not. I was immediately reminded of my university days in Boulder, Colorado, USA, circa 1997. The local Taco Bell and Arby’s restaurants both had touchscreen ordering kiosks. Step up, interact with the (probably resistive) touchscreen, get a number, and step to the counter to change money, get your food, and probably clarify your order because there is only so much that can be handled through a touchscreen.What I also remember is when they tore out those ordering kiosks, also circa 1997. I don’t know the exact reason. Maybe people didn’t like them. Maybe there were maintenance costs that made them not worth the hassle.
Then there are the widespread self-checkout lanes in grocery stores. Personally, I like those, though I know many don’t. However, this restaurant tablet thing hasn’t won me over yet. What’s the difference ? Perhaps that automated lanes at grocery stores require zero external assistance– at least, if you do everything correctly. Personally, I work well with these lanes because I can pretty much guess the constraints of the system and I am careful not to confuse the computer in any way. Until they deploy serving droids, or at least food conveyors, there still needs to be some human interaction and I think the division between the human and computer roles is unintuitive in the restaurant case.
I don’t really care to return to the same restaurant. I’ll likely avoid any other restaurant that has these tablets. For some reason, I think I’m probably supposed to be the ideal consumer of this concept. But the idea will probably perform all right anyway. Elacarte’s website has plenty of graphs demonstrating that deploying these tablets is extremely profitable.
-
A way around HTML5 video limits in browsers ?
18 mars 2013, par CoryGI'm setting up a CCTV system using ffmpeg, ffserver and zoneminder and everything has gone well with one exception - the zoneminder display is horrible outside. I have ffserver streaming as live webm videos so I'd like to have a viewer in chrome, but when I load more than 6 320x240 videos on the screen at a time any subsequent videos fire the suspend event and stop. I attached a console.log to each event of the streams and this is the output if it's of help in answering this question :
0 "LOAD" 0.htm:11
1 "LOAD" 0.htm:11
2 "LOAD" 0.htm:11
3 "LOAD" 0.htm:11
4 "LOAD" 0.htm:11
5 "LOAD" 0.htm:11
6 "LOAD" 0.htm:11
7 "LOAD" 0.htm:11
8 "LOAD" 0.htm:11
9 "LOAD" 0.htm:11
10 "LOAD" 0.htm:11
11 "LOAD" 0.htm:11
12 "LOAD" 0.htm:11
13 "LOAD" 0.htm:11
14 "LOAD" 0.htm:11
15 "LOAD" 0.htm:11
stream0 loadstart 0.htm:30
stream1 loadstart 0.htm:30
stream2 loadstart 0.htm:30
stream3 loadstart 0.htm:30
stream4 loadstart 0.htm:30
stream5 loadstart 0.htm:30
stream6 loadstart 0.htm:30
stream7 loadstart 0.htm:30
stream8 loadstart 0.htm:30
stream9 loadstart 0.htm:30
stream10 loadstart 0.htm:30
stream11 loadstart 0.htm:30
stream12 loadstart 0.htm:30
stream13 loadstart 0.htm:30
stream14 loadstart 0.htm:30
stream15 loadstart 0.htm:30
stream4 durationchange 0.htm:37
stream4 loadedmetadata 0.htm:24
stream2 durationchange 0.htm:37
stream2 loadedmetadata 0.htm:24
stream0 durationchange 0.htm:37
stream0 loadedmetadata 0.htm:24
stream0 loadeddata 0.htm:43
stream0 canplay 0.htm:47
stream0 canplaythrough 0.htm:32
stream0 play 0.htm:45
stream0 playing 0.htm:36
stream0 timeupdate 0.htm:41
stream4 loadeddata 0.htm:43
stream4 canplay 0.htm:47
stream4 canplaythrough 0.htm:32
stream4 play 0.htm:45
stream4 playing 0.htm:36
stream4 timeupdate 0.htm:41
stream2 loadeddata 0.htm:43
stream2 canplay 0.htm:47
stream2 canplaythrough 0.htm:32
stream2 play 0.htm:45
stream2 playing 0.htm:36
stream2 timeupdate 0.htm:41
stream6 stalled 0.htm:35
stream7 stalled 0.htm:35
stream8 stalled 0.htm:35
stream9 stalled 0.htm:35
stream10 stalled 0.htm:35
stream11 stalled 0.htm:35
stream12 stalled 0.htm:35
stream13 stalled 0.htm:35
stream14 stalled 0.htm:35
stream15 stalled 0.htm:35
stream5 durationchange 0.htm:37
stream5 loadedmetadata 0.htm:24
stream5 loadeddata 0.htm:43
stream5 canplay 0.htm:47
stream5 canplaythrough 0.htm:32
stream5 play 0.htm:45
stream5 playing 0.htm:36
stream5 timeupdate 0.htm:41
stream1 durationchange 0.htm:37
stream1 loadedmetadata 0.htm:24
stream1 loadeddata 0.htm:43
stream1 canplay 0.htm:47
stream1 canplaythrough 0.htm:32
stream1 play 0.htm:45
stream1 playing 0.htm:36
stream1 timeupdate 0.htm:41
stream3 durationchange 0.htm:37
stream3 loadedmetadata 0.htm:24
stream3 loadeddata 0.htm:43
stream3 canplay 0.htm:47
stream3 canplaythrough 0.htm:32
stream3 play 0.htm:45
stream3 playing 0.htm:36
stream3 timeupdate 0.htm:41I've tried using ffmpeg's -filter_complex flag to combine the videos into a 1280x960 stream but it comes in around 3-6 FPS with the following -filter_complex code :
"
nullsrc=size=1280x960 [bg];
[0:v] setpts=PTS-STARTPTS, scale=320x240 [v0];
[1:v] setpts=PTS-STARTPTS, scale=320x240 [v1];
[2:v] setpts=PTS-STARTPTS, scale=320x240 [v2];
[3:v] setpts=PTS-STARTPTS, scale=320x240 [v3];
[4:v] setpts=PTS-STARTPTS, scale=320x240 [v4];
[5:v] setpts=PTS-STARTPTS, scale=320x240 [v5];
[6:v] setpts=PTS-STARTPTS, scale=320x240 [v6];
[7:v] setpts=PTS-STARTPTS, scale=320x240 [v7];
[8:v] setpts=PTS-STARTPTS, scale=320x240 [v8];
[9:v] setpts=PTS-STARTPTS, scale=320x240 [v9];
[10:v] setpts=PTS-STARTPTS, scale=320x240 [v10];
[11:v] setpts=PTS-STARTPTS, scale=320x240 [v11];
[12:v] setpts=PTS-STARTPTS, scale=320x240 [v12];
[13:v] setpts=PTS-STARTPTS, scale=320x240 [v13];
[14:v] setpts=PTS-STARTPTS, scale=320x240 [v14];
[15:v] setpts=PTS-STARTPTS, scale=320x240 [v15];
[bg][v0] overlay=shortest=1 [bg];
[bg][v1] overlay=shortest=1:x=320 [bg];
[bg][v2] overlay=shortest=1:x=640 [bg];
[bg][v3] overlay=shortest=1:x=960 [bg];
[bg][v4] overlay=shortest=1:y=240 [bg];
[bg][v5] overlay=shortest=1:x=320:y=240 [bg];
[bg][v6] overlay=shortest=1:x=640:y=240 [bg];
[bg][v7] overlay=shortest=1:x=960:y=240 [bg];
[bg][v8] overlay=shortest=1:y=480 [bg];
[bg][v9] overlay=shortest=1:x=320:y=480 [bg];
[bg][v10] overlay=shortest=1:x=640:y=480 [bg];
[bg][v11] overlay=shortest=1:x=960:y=480 [bg];
[bg][v12] overlay=shortest=1:y=720 [bg];
[bg][v13] overlay=shortest=1:x=320:y=720 [bg];
[bg][v14] overlay=shortest=1:x=640:y=720 [bg];
[bg][v15] overlay=shortest=1:x=960:y=720
"If there isn't a way around the chrome limitation (this is for use on a LAN, so high bandwidth is fine) I'd be happy to hear of a tool that can combine live streams and be fed back into ffserver (or a faster way of using ffmpeg than what I have above). Though ideally I'd like a way to force chrome to load all 16 videos.
Edit : The JavaScript (minus the console.log's) :
var streams = new Array();
streams.Load = function (index) {
console.log(index, 'LOAD');
streams.push(document.createElement('video'));
streams[index].id = 'stream' + index;
streams[index].autoplay = 'autoplay';
streams[index].style.display = 'block';
streams[index].style.position = 'absolute';
streams[index].width = this.Width;
streams[index].height = this.Height;
streams[index].style.left = ((index - (Math.floor(index / 4) * 4)) * this.Width) + 'px';
streams[index].style.top = (Math.floor(index / 4) * this.Height) + 'px';
streams[index].style.width = this.Width + 'px';
streams[index].style.height = this.Height + 'px';
$(streams[index]).bind('loadedmetadata', streams[index], function (event) {
var actualRatio = event.data.videoWidth / event.data.videoHeight;
var targetRatio = $(event.data).width() / $(event.data).height();
var adjustmentRatio = (targetRatio / actualRatio);
$(event.data).css('-webkit-transform', 'scaleX(' + adjustmentRatio + ')');
});
streams[index].source = document.createElement('source');
streams[index].source.src = 'http://10.1.1.15:8090/' + index + '.webm';
streams[index].source.type = 'video/webm';
streams[index].appendChild(streams[index].source);
divMain.appendChild(streams[index]);
streams.LoadNext();
};
streams.LoadNext = function () { if (this.length < 16) { this.Load(this.length); } };
streams.Width = 320;
streams.Height = 240;
$(window).ready(function() {
var divMain = document.getElementById('divMain');
streams.Width = divMain.offsetWidth / 4;
streams.Height = divMain.offsetHeight / 4;
var tsource = null;
streams.LoadNext();
});
$(window).resize(function() {
var divMain = document.getElementById('divMain');
streams.Width = divMain.offsetWidth / 4;
streams.Height = divMain.offsetHeight / 4;
for (var i = 0; i < streams.length; i++) {
streams[i].width = streams.Width;
streams[i].height = streams.Height;
streams[i].style.left = ((i - (Math.floor(i / 4) * 4)) * streams.Width) + 'px';
streams[i].style.top = (Math.floor(i / 4) * streams.Height) + 'px';
streams[i].style.width = streams.Width + 'px';
streams[i].style.height = streams.Height + 'px';
var actualRatio = streams[i].videoWidth / streams[i].videoHeight;
var targetRatio = $(streams[i]).width() / $(streams[i]).height();
var adjustmentRatio = (targetRatio / actualRatio);
if (adjustmentRatio >= 1) {
$(streams[i]).css('-webkit-transform', 'scaleX(' + adjustmentRatio + ')');
} else {
$(streams[i]).css('-webkit-transform', 'scaleY(' + (1 / adjustmentRatio) + ')');
}
}
});