# HG changeset patch
# User cavaliet
# Date 1336666306 -7200
# Node ID a26701464849204912ee0d75a1349b1dbc23fbd2
# Parent 85da59ccbdf89ed79faf8ec021d60b77092657ca
add bab player, as/swf files and example.
diff -r 85da59ccbdf8 -r a26701464849 .hgignore
--- a/.hgignore Fri Apr 27 11:52:05 2012 +0200
+++ b/.hgignore Thu May 10 18:11:46 2012 +0200
@@ -8,3 +8,6 @@
*.orig
src/js/site.js
doc/jsdoc/*
+
+syntax: regexp
+^assets/player_bab_ldt/player_bab_ldt/bin$
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/URLLoaderLdt.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/URLLoaderLdt.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,29 @@
+package tools
+{
+ import flash.net.URLLoader;
+ import flash.net.URLRequest;
+
+ public class URLLoaderLdt extends URLLoader
+ {
+ private var _url:String;
+ private var _preVideo:String;
+ private var _prePict:String;
+ private var _preExtra:String;
+
+ public function URLLoaderLdt(request:URLRequest=null, preVideo:String=null, prePict:String=null, preExtra:String=null)
+ {
+ if(request!=null){
+ _url = request.url;
+ _preVideo = preVideo;
+ _prePict = prePict;
+ _preExtra = preExtra;
+ }
+ super(request);
+ }
+ public function get url():String{ return _url; }
+ public function get preVideo():String{ return _preVideo; }
+ public function get prePict():String{ return _prePict; }
+ public function get preExtra():String{ return _preExtra; }
+
+ }
+}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/XMLInOut.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/XMLInOut.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.FileReference;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.system.Capabilities;
import player_bab_ldt;
public class XMLInOut
{
private var app:player_bab_ldt;
private var myLdtEdits:XMLList;
private var editsAr:Array = [];
private var titlesAr:Array = [];
private var nbBab:uint = 0;
private var curBab:Number = -1;
private var segAr1:Array;
private var segAr2:Array;
public function XMLInOut(o:player_bab_ldt, urlData:String)
{
app = o;
var urll:URLLoader = new URLLoader(new URLRequest(urlData));
urll.addEventListener(Event.COMPLETE, onloadData);
urll.addEventListener(IOErrorEvent.IO_ERROR, errorLoad);
}
private function errorLoad(e:IOErrorEvent):void{
trace("errorLoad");
//Alert.show("Impossible to load the file") + " " + e.text + "\n" + (e.target as URLLoaderLdt).url, "Error");
}
private function onloadData(e:Event):void{
var ldtXml:XML = new XML(e.currentTarget.data);
// We test if the project is in old iri/ldt format or cinelab format
if(ldtXml.project.length()>0){
// There is a project tag in the xml -> iri/ldt format
myLdtEdits = ldtXml.edits.editing;
loadEditsXML(myLdtEdits);
}
else{
// Else cinelab format
trace("No LDT format, No load");
//Alert.show("No LDT format","No load");
}
}
public function loadEditsXML(xl:XMLList):void{
trace("loadEditsXML l = " + xl.length() + ", nodename = " + xl[0].name().localName);
if(xl!=null && xl.length()>0){
if(xl[0].name().localName=="view"){
//loadEditsXMLCinelab(xl);
trace("No BAB LDT format, No load");
}
else{
//trace(xl.toString());
editsAr = new Array();
titlesAr = new Array();
for each(var editing:XML in xl){
nbBab++;
var inst:XML, curMedia:XMLList, a:Array, content:String;
// First edit's line
var ar1:Array = new Array();
var editList:XMLList = editing.edit.(@id=="edit1").eList.inst;
var mediaList:XMLList = editing.edit.(@id=="edit1").mList.m;
// We adapt the program to the new and old version of content/media place
// new url or text content
// old
for each(inst in editList){
a = inst.@ref.split("|;|");
curMedia = mediaList.(@id==inst.@m);
content = (curMedia.@src.toString()=="" || curMedia.@src==undefined) ? curMedia.content.toString() : curMedia.@src.toString();
//trace("m = " + inst.@m.toString() + ", " + curMedia.@t.toString() + ", " + uint(curMedia.@c) + ", " + curMedia.@src.toString() + ", " + curMedia.content.toString() + ", content=" + content);
if(a[0]=="title"){ a[0]="text"; } // To allow old version
// A video path can be dependant on the user's folder organisation.
// If a user B receives a project from a user A, the video paths will be like
// /users/userA/docs/video/id/id.flv and /users/userB/ldt/id/i d.flv
// So in order ta read the BàB without problems, we match the bàb paths
// with the video paths actually recorded.
// if(curMedia.@t.toString()=="v"){
// content = content.replace(/\\/g,"/");
// var videoName:String = content.substr(content.lastIndexOf("/")+1);
// for(var idCtt:String in Global.arContents){
// if(Global.arContents[idCtt]["path"].substr(Global.arContents[idCtt]["path"].replace(/\\/g,"/").lastIndexOf("/")+1)==videoName){
// content = Global.arContents[idCtt]["path"];
// }
// }
// }
// Now that we got the good video path, we push in the array
ar1.push({idCtt:a[0], idGrp:a[1], idCut:a[2], idView:a[3], crit:a[3], idSeg:a[5], tIn:Number(inst.@begin), tOut:Number(inst.@end), type:curMedia.@t.toString(), v:uint(inst.@v), color:uint(curMedia.@c), content:content, idAuthor:"", author:"", idTitle:"", title:"", date:"", trId:Number(inst.@trId), trIc:Number(inst.@trIc), trOd:Number(inst.@trOd), trOc:Number(inst.@trOc)});
}
// Second edit's line
var ar2:Array = new Array();
editList = editing.edit.(@id=="edit2").eList.inst;
mediaList = editing.edit.(@id=="edit2").mList.m;
for each(inst in editList){
a = inst.@ref.split("|;|");
//trace("m = " + inst.@m.toString() + ", " + edit1Media.(@id==inst.@m.toString()).@t.toString() + ", " + uint(edit1Media.(@id==inst.@m).@c) + ", " + edit1Media.(@id==inst.@m).@src.toString() + ", " + edit1Media.(@id==inst.@m).content.toString());
curMedia = mediaList.(@id==inst.@m);
content = (curMedia.@src.toString()=="" || curMedia.@src==undefined) ? curMedia.content.toString() : curMedia.@src.toString();
if(a[0]=="title"){ a[0]="text"; } // To allow old version
// A video path can be dependant on the user's folder organisation.
// If a user B receives a project from a user A, the video paths will be like
// /users/userA/docs/video/id/id.flv and /users/userB/ldt/id/id.flv
// So in order ta read the BàB without problems, we match the bàb paths
// with the video paths actually recorded.
// if(curMedia.@t.toString()=="v"){
// content = content.replace(/\\/g,"/");
// videoName = content.substr(content.lastIndexOf("/")+1);
// for(idCtt in Global.arContents){
// if(Global.arContents[idCtt]["path"].substr(Global.arContents[idCtt]["path"].replace(/\\/g,"/").lastIndexOf("/")+1)==videoName){
// content = Global.arContents[idCtt]["path"];
// }
// }
// }
// Now that we got the good video path, we push in the array
ar2.push({idCtt:a[0], idGrp:a[1], idCut:a[2], idView:a[3], crit:a[3], idSeg:a[5], tIn:Number(inst.@begin), tOut:Number(inst.@end), type:curMedia.@t.toString(), v:uint(inst.@v), color:uint(curMedia.@c), content:content, idAuthor:"", author:"", idTitle:"", title:"", date:"", trId:Number(inst.@trId), trIc:Number(inst.@trIc), trOd:Number(inst.@trOd), trOc:Number(inst.@trOc)});
}
// And we push a new edit entry with the edit's title and abstract
editsAr.push({id:"bab_1", title:editing.title.toString(), abstract:editing.abstract.toString(), segAr1:ar1, segAr2:ar2, creator:"projectCreator", created:now, contributor:"projectCreator", modified:now});
titlesAr.push(editing.title.toString());
}
if(editsAr.length==0){
editsAr.push({id:"bab_1", title:"Bout à bout 1", abstract:"", segAr1:new Array(), segAr2:new Array(), creator:"projectCreator", created:now, contributor:"projectCreator", modified:now});
titlesAr.push("Bout à bout 1");
}
//setBab(0, true);
}
}
else{
editsAr = [{id:"bab_1", title:"Bout à bout 1", abstract:"", segAr1:new Array(), segAr2:new Array(), creator:"projectCreator", created:now, contributor:"projectCreator", modified:now}];
titlesAr = ["Bout à bout 1"];
//setBab(0, true);
}
app.youCanStart();
}
public function getEditList1():Array{
trace("bab getEditList1");
// For each line, 2 arrays have to be prepared. The first is the edit instructions.
// The second is the media array (type, content -path or text-, background color)
return getEditMediaList(0, 1);
}
private function getEditMediaList(numBab:Number, line:uint):Array{
var a:Array = [];
if(0<=numBab && numBab while the volume management has not been coded
volBtn.visible = skinMc.volumeBar_mc.visible = true;
//
playBtn.addEventListener(MouseEvent.CLICK, playPauseHandler);
pauseBtn.addEventListener(MouseEvent.CLICK, playPauseHandler);
backBtn.addEventListener(MouseEvent.CLICK, backHandler);
forwardBtn.addEventListener(MouseEvent.CLICK, forwardHandler);
volBtn.addEventListener(MouseEvent.MOUSE_DOWN, startVolHandler);
volBar.addEventListener(MouseEvent.MOUSE_DOWN, startVolHandler);
}
//
// Mouse Event handlers
//
private function playPauseHandler(e:MouseEvent=null):void{
dispatchEvent(new EditEvent(EditEvent.EDIT_PLAYPAUSE, curVol));
}
private function backHandler(e:MouseEvent=null):void{
dispatchEvent(new EditEvent(EditEvent.EDIT_BACK, curVol));
}
private function forwardHandler(e:MouseEvent=null):void{
dispatchEvent(new EditEvent(EditEvent.EDIT_FORWARD, curVol));
}
private function startVolHandler(e:MouseEvent=null):void{
//trace("startVolHandler");
volBtn.startDrag(false,new Rectangle(xVol,yVol,50,0));
volBtn.stage.addEventListener(MouseEvent.MOUSE_MOVE,updateSound);
volBtn.stage.addEventListener(MouseEvent.MOUSE_UP, stopVolHandler);
}
private function stopVolHandler(e:MouseEvent=null):void{
volBtn.stopDrag();
volBtn.stage.removeEventListener(MouseEvent.MOUSE_MOVE,updateSound);
volBtn.stage.removeEventListener(MouseEvent.MOUSE_UP, stopVolHandler);
volBtn.buttonMode = true;
// We dispatch the event only at the end
}
private function updateSound(e:MouseEvent=null):void{
//trace("xVol : " + xVol);
//trace("volBtn.x : "+ volBtn.x);
volBar.width = volBtn.x - xVol;
//trace("volBar.width : " + volBar.width);
curVol = (100 / 50) * (volBtn.x - xVol);
dispatchEvent(new EditEvent(EditEvent.EDIT_SOUNDUPDATE, curVol/100));
}
//
// Enable to switch display between play and pause buttons
//
public function set isPlaying(b:Boolean):void{
if(b==true){
playBtn.visible = false;
pauseBtn.visible = true;
}
else if(b==false){
playBtn.visible = true;
pauseBtn.visible = false;
}
}
public function setVolume(vol:Number):void{
volBtn.x = xVol + 50*vol;
volBar.width = volBtn.x - xVol;
//trace("setVolume, vol : " + vol);
dispatchEvent(new EditEvent(EditEvent.EDIT_SOUNDUPDATE, vol));
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/player/ExternalPlayer.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/player/ExternalPlayer.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab.player
{
import fl.video.VideoEvent;
import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.display.SimpleButton;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.MouseEvent;
import flash.events.SecurityErrorEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.system.Security;
import flash.text.TextField;
import flash.utils.Timer;
//import mx.controls.Alert;
public class ExternalPlayer extends EventDispatcher
{
private var curParent:DisplayObjectContainer;
private var player:Object;
private var playerYT:Object;
private var playerDM:Object;
private var playBtn:SimpleButton;
private var pauseBtn:SimpleButton;
private var volPlus:SimpleButton;
private var volMinus:SimpleButton;
private var playheadTimer:Timer;
private var urlToLoad:String;
private var sizeUpdated:Boolean = false;
public static function get EXTERNALPLAYER_RATIO():Number{
return 1.6;
}
public function ExternalPlayer(prnt:DisplayObjectContainer, url:String="")
{
Security.allowDomain("*");
Security.allowInsecureDomain("*");
curParent = prnt;
// Simple button Play
var t:TextField = new TextField();
t.text = "PLAY";
t.autoSize = "left";
playBtn = new SimpleButton(t,t,t,t);
playBtn.useHandCursor = playBtn.mouseEnabled = true;
prnt.addChild(playBtn);
// Simple button Pause
var t2:TextField = new TextField();
t2.text = "PAUSE";
t2.autoSize = "left";
pauseBtn = new SimpleButton(t2,t2,t2,t2);
pauseBtn.useHandCursor = pauseBtn.mouseEnabled = true;
prnt.addChild(pauseBtn);
// Simple button Volume +
var t3:TextField = new TextField();
t3.text = "Vol + /";
t3.autoSize = "left";
volPlus = new SimpleButton(t3,t3,t3,t3);
volPlus.useHandCursor = volPlus.mouseEnabled = true;
prnt.addChild(volPlus);
// Simple button Pause
var t4:TextField = new TextField();
t4.text = "Vol -";
t4.autoSize = "left";
volMinus = new SimpleButton(t4,t4,t4,t4);
volMinus.useHandCursor = volMinus.mouseEnabled = true;
prnt.addChild(volMinus);
pauseBtn.x = 50;
volPlus.x = 200;
volMinus.x = 235;
// Play pause listeners
playBtn.addEventListener(MouseEvent.CLICK, onBtnClick);
pauseBtn.addEventListener(MouseEvent.CLICK, onBtnClick);
// Volume listeners
volPlus.addEventListener(MouseEvent.CLICK, onVolClick);
volMinus.addEventListener(MouseEvent.CLICK, onVolClick);
loadVideo(url);
}
//
// Load Players
//
private function loadYTPlayer():void{
// Youtube loader
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadYTCLP);
l.addEventListener(ErrorEvent.ERROR, onError, true);
l.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, true);
l.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, onError, true);
l.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, true);
l.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
// The parent will load;
curParent.addChild(l);
}
private function loadDMPlayer():void{
// Dailymotion loader
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadDMCLP);
l.addEventListener(ErrorEvent.ERROR, onError, true);
l.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, true);
l.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, onError, true);
l.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, true);
l.load(new URLRequest("http://www.dailymotion.com/swf?enableApi=1&chromeless=1"));
// The parent will load;
curParent.addChild(l);
}
//
// OnLoad Players management
//
private function onLoadYTCLP(e:Event):void {
//addChild(loader);
playerYT = e.target.content;
playerYT.addEventListener(ErrorEvent.ERROR, onError);
playerYT.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
playerYT.addEventListener("onReady", onYTPlayerReady);
playerYT.addEventListener("onError", onYTPlayerError);
playerYT.addEventListener("onStateChange", onYTStateChange);
//YTPlayer.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}
private function onLoadDMCLP(e:Event):void {
//addChild(loader);
playerDM = e.target.content;
playerDM.addEventListener(ErrorEvent.ERROR, onError);
playerDM.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
playerDM.addEventListener("onReady", onYTPlayerReady);
playerDM.addEventListener("onError", onYTPlayerError);
playerDM.addEventListener("onStateChange", onYTStateChange);
//YTPlayer.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}
//
// Player event management
//
private function onYTPlayerReady(o:Object):void {
// Event.data contains the event parameter, which is the Player API ID
trace("player ready:" + o.data);
// Once this event has been dispatched by the player, we can use
// cueVideoById, loadVideoById, cueVideoByUrl and loadVideoByUrl
// to load a particular YouTube video.
loadVideo(urlToLoad);
}
private function onYTPlayerError(o:Object):void {
// Event.data contains the event parameter, which is the error code
trace("player error:", o.data);
}
private function onYTStateChange(o:Object):void {
// Event.data contains the event parameter, which is the new player state
trace("player state:" + o.data + (o.data==1) + (o.data=="1"));
// o.data : unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5)
if(o.data==1 || o.data=="1" || o.data==3 || o.data=="3"){
// When the YTplayer enters in play state, it sends 1 or 3.
if(playheadTimer!=null){
playheadTimer.stop();
playheadTimer = null;
}
playheadTimer = new Timer(500, 3600*2);
playheadTimer.addEventListener(TimerEvent.TIMER, onTimer);
playheadTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
playheadTimer.start();
}
else{
// When the YTplayer enters in play state, it sends 1 or 3.
if(playheadTimer!=null){
playheadTimer.stop();
playheadTimer = null;
}
}
// When the video has been loaded, we ask a resize to the manager
if(!sizeUpdated && o.data!=-1 && o.data!="-1"){
dispatchEvent(new VideoEvent(VideoEvent.READY));
}
}
//
// Size matters
//
public function setSize(w:Number, h:Number):void{
if(player!=null){
//trace("setSize " + w + ", " + h);
if(player.setSize) player.setSize(EXTERNALPLAYER_RATIO*Math.max(h,242),Math.max(h,242));
playBtn.y = pauseBtn.y = volPlus.y = volMinus.y = Math.max(h,240) + 10;
}
}
//
// Play/pause mangement
//
private function onBtnClick(e:MouseEvent):void{
if(e.target==playBtn) play();
else if(e.target==pauseBtn) pause();
}
//
// Play/pause mangement
//
public function play():void{
if(player!=null){
player.playVideo();
}
}
public function pause():void{
if(player!=null){
player.pauseVideo();
}
}
//
// Timer management
//
private function onTimer(e:TimerEvent):void{
//trace("onTimer");
if(player!=null){
//trace("onTimer 2 " + player.getCurrentTime());
dispatchEvent(new VideoEvent(VideoEvent.PLAYHEAD_UPDATE, false, false, "playing", player.getCurrentTime()));
}
}
private function onTimerComplete(e:TimerEvent):void{
// nothing to do
}
//
// Visible management
//
public function set visible(b:Boolean):void{
if(player!=null){
player.visible = playBtn.visible = pauseBtn.visible = volMinus.visible = volPlus.visible = b;
if(!b) pause();
}
}
public function get visible():Boolean{
if(player!=null){
return player.visible;
}
return false;
}
//
// Volume management
//
private function onVolClick(e:MouseEvent):void{
if(player!=null){
if(e.target==volPlus) player.setVolume(Math.min(100, player.getVolume()+10));
else if(e.target==volMinus) player.setVolume(Math.max(0, player.getVolume()-10));
}
}
//
// Url management
//
public function loadVideo(url:String):void{
var id:String = "";
if(url!=""&& url.search("youtube")>-1){
if(playerYT!=null){
// A valid youtube url is like : http://www.youtube.com/watch?v=PgEu923nxSE or http://www.youtube.com/v/PgEu923nxSE
// The idea is to get the id from the url. The id is ALWAYS 11 characters.
if(url.search("v=")>-1) id = url.substr(url.search("v=")+2, 11);
else if(url.search("v/")>-1) id = url.substr(url.search("v/")+2, 11);
sizeUpdated = false;
player = playerYT;
if(id!="" && id.length==11) player.loadVideoById(id);
//else Alert.show("Youtube URL must be like\nhttp://www.youtube.com/watch?v=VIDEO_ID", "Attention");
//player.loadVideoById("PgEu923nxSE"); // Stiegler
//player.loadVideoById("7xzU9Qqdqww"); // Kid Cudi - Pursuit Of Happiness ft. Ratatat
}
else{
urlToLoad = url;
loadYTPlayer();
}
}
else if(url!=""&& url.search("dailymotion")>-1){
if(playerDM!=null){
// A valid DM url is like : http://www.dailymotion.com/video/VIDEO_ID
// The idea is to get the id from the url.
if(url.search("video/")>-1) id = url.substr(url.search("video/")+6);
sizeUpdated = false;
player = playerDM;
if(id!="") player.loadVideoById(id);
//else Alert.show("Dailymotion URL must be like\nhttp://www.dailymotion.com/video/VIDEO_ID", "Attention");
//player.loadVideoById("PgEu923nxSE"); // Stiegler
//player.loadVideoById("7xzU9Qqdqww"); // Kid Cudi - Pursuit Of Happiness ft. Ratatat
}
else{
urlToLoad = url;
loadDMPlayer();
}
}
}
//
// Seek management
//
public function goTo(tc:Number, paramPlay:Boolean):void{
if(player!=null){
//player.seekTo(tc, paramPlay);
if(player==playerYT) player.seekTo(tc, true);
else if(player==playerDM) player.seekTo(tc);
}
}
//
// Trying to catch the sandbox errors but does not work...
//
public function onError(er:*):void{
// do nothing
trace("onError " + er);
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/player/FLVPlaybackCaptioningLDT.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/player/FLVPlaybackCaptioningLDT.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab.player
{
import fl.video.*;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
//import mx.controls.Alert;
import nl.inlet42.data.subtitles.SubTitleData;
import nl.inlet42.data.subtitles.SubtitleParser;
use namespace flvplayback_internal;
public class FLVPlaybackCaptioningLDT extends FLVPlaybackCaptioning
{
public function FLVPlaybackCaptioningLDT()
{
super();
}
public function loadCapXml(capXml:XML):void{
ttm = new TimedTextManager(this);
//trace("ttm 2 = " + ttm);
ttm.xmlLoader = new URLLoader();
ttm.xmlLoader.data = capXml;
//trace("ttm.xmlLoader.data = " + ttm.xmlLoader.data.toString());
ttm.xmlLoadEventHandler(new Event(Event.COMPLETE));
}
//
// Generates a time text xml from a srt file
//
public function loadSrt(urlSrt:String):void{
var urll:URLLoader = new URLLoader(new URLRequest(urlSrt));
urll.addEventListener(Event.COMPLETE, onloadSrt);
urll.addEventListener(IOErrorEvent.IO_ERROR, errorLoadSrt);
}
private function errorLoadSrt(e:IOErrorEvent):void{
//Alert.show("Impossible to load the file " + e.text, "Error");
}
private function onloadSrt(e:Event):void{
var a:Array = SubtitleParser.parseSRT(e.currentTarget.data);
//trace("a = " + a);
var nbSub:uint = a.length;
default xml namespace = new Namespace("http://www.w3.org/2006/10/ttaf1");
var subTtmXml:XML =
;
var divNode:XML = subTtmXml.body.div[0];
for(var i:uint=0;i" + sub.text + "]]>
"));
}
loadCapXml(subTtmXml);
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/player/FLVPlaybackLDT.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/player/FLVPlaybackLDT.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab.player
{
import fl.video.*;
import flash.display.DisplayObjectContainer;
use namespace flvplayback_internal;
public class FLVPlaybackLDT extends FLVPlayback
{
public function FLVPlaybackLDT()
{
super();
}
public function showHideSkin(b:Boolean):void{
flvplayback_internal::uiMgr.visible = b;
}
public function hideSeekBarHit():void{
// In some cases, we need to disable the access to the whole media.
// In this purpose, we hise the SeekBarHit and SeekBarHandle.
if(seekBar!=null){
var s:DisplayObjectContainer = seekBar.parent;
var n:uint = s.numChildren;
for(var i:uint=0;i-1 || path.search("dailymotion.com")>-1){
pause();
// A valid youtube url is like : http://www.youtube.com/watch?v=PgEu923nxSE or http://www.youtube.com/v/PgEu923nxSE
if(YTPlayer==null){
YTPlayer = new ExternalPlayer(uic, path);
YTPlayer.addEventListener(VideoEvent.PLAYHEAD_UPDATE, onPlayheadUpdate);
YTPlayer.addEventListener(VideoEvent.READY, initSizes);
}
else YTPlayer.loadVideo(path);
curRatio = ExternalPlayer.EXTERNALPLAYER_RATIO;
//initSizes();
YTPlayer.visible = true;
flvPB.visible = false;
}
else{
if(YTPlayer!=null) YTPlayer.visible = false;
flvPB.visible = true;
// We check if the media is already loaded
var nbMedias:uint = metas.length;
var vp:Number = getVp(path);
var vol:Number = flvPB.volume;
// We stop the current reading if possible
if(nbMedias>0 && allowFlvPB()) { flvPB.stop(); }
// We load the new content or play the already loaded content
if(isNaN(vp)){
vp = metas.length;
// We activate the good video player index
flvPB.activeVideoPlayerIndex = flvPB.visibleVideoPlayerIndex = vp;
flvPB.smoothing = true;
//trace("je load " + vp + ", " + path);
metas.push({path:path, w:3, h:1, ratio:3});
curRatio = metas[vp].ratio;
savePlay = paramPlay;
if(live==true){
savePlay = true;
flvPB.play(path, NaN, true);
}
else flvPB.load(path); // Then the window will be resized on metadata received
//trace("LoadMedia flvPB.volume : " + flvPB.volume);
// sets the volume to 0 (to avoid a bug) then sets it back to its previous level
flvPB.volume = 0;
flvPB.volume = vol;
}
else{
// We activate the good video player index
flvPB.activeVideoPlayerIndex = flvPB.visibleVideoPlayerIndex = vp;
flvPB.smoothing = true;
//trace("vp = " + flvPB.activeVideoPlayerIndex + ", " + flvPB.isLive);
//trace("je play " + vp + ", " + path);
if(allowFlvPB()){ savePlay==false ? flvPB.pause() : flvPB.play(); }
// sets the volume to 0 (to avoid a bug) then sets it back to its previous level
flvPB.volume = 0;
flvPB.volume = vol;
// We have to resize the window
curRatio = metas[vp].ratio;
initSizes();
}
// If a subtitle path is indicated we display it
var ext:String = firstST.toLowerCase().substr(firstST.length-3);
if(ext=="xml"){
caption.source = firstST;
}
else if(ext=="srt"){
caption.loadSrt(firstST);
}
// We set the caption/subtitles module to the good videoPlayerIndex index
caption.videoPlayerIndex = vp;
}
}
private function getVp(path:String):Number{
// We check if the media is already loaded
var i:uint = 0;
var nbMedias:uint = metas.length;
var vp:Number = NaN;
while(i=editList[curInst].tOut && e.state=="playing"){
playBabInst(curInst+1);
}
//var tcBab:Number;
if(mediaList[editList[curInst].m].type=="v"){
//trace(editList[curInst].eIn + ", " + e.playheadTime + ", " + editList[curInst].tIn + ", diff = " + (editList[curInst].tIn - e.playheadTime));
// If the current playheadTime is inferior to editList[curInst].tIn more than 2 seconds, we reseek to the tIn
if((editList[curInst].tIn - e.playheadTime)>3){
if(allowFlvPB()) flvPB.seek(editList[curInst].tIn);
}
else{
// We apply max : because of the playhead's approximation, e.playheadTime can be inferior to tIn
currentTcBab = Math.max(editList[curInst].eIn*1000,(editList[curInst].eIn + e.playheadTime - editList[curInst].tIn)*1000);
//currentTcBab = tcBab;
tcLabel.text = "[" + convertTC(currentTcBab, false) + "]";
this.dispatchEvent(new EditEvent(EditEvent.EDIT_UPDATETC, currentTcBab));
}
}
else if(mediaList[editList[curInst].m].type=="p" || mediaList[editList[curInst].m].type=="t"){
currentTcBab = (editList[curInst].eIn)*1000;
tcLabel.text = "[" + convertTC(currentTcBab, false) + "]";
this.dispatchEvent(new EditEvent(EditEvent.EDIT_UPDATETC, currentTcBab));
}
}
}
//
// Set the good sizes function of the ratio
//
public function initSizes(e:VideoEvent=null):void{
// We set hMin and wMin for the video to take the maximum of space. wMax = 415, hMax = 310
/*if((Math.round(424/curRatio)+24+37)>310){
hMin = 310;
wMin = (310-24-37)*curRatio;
}
else{
wMin = 415;
hMin = Math.round(wMin/curRatio) + 24 + 37;
}
if(width-1){
flvPB.setSize(widthFlv,heightFlv);
flvPB.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
if(babSkin!=null){
babSkin.y = heightFlv - 3;
babSkin.getChildAt(0).width = widthFlv;
}
var nbChilds:uint = imageLayer.numChildren;
for(var i:uint=0;i0 && editListPar.length>0){
instanceToPlay = 0;
curInst = -1;
// We don't display the different layers
textLayer.visible = false;
mcContainer.visible = false;
imageLayer.visible = false;
flvPB.visible = false;
// We search for every media
var i:uint;
editList = editListPar;
mediaList = mediaListPar;
var nbMedias:uint = mediaList.length;
var nbLoaded:uint = metas.length;
var canStart:Boolean = true;
var a:Array = new Array();
for(i=0;i0){
// We prepare pictAr
for(i=0;i0 && allowFlvPB()){ flvPB.pause(); }
//displayPict( ((mediaList[editList[curInst].m].content.substr(0,9)=="_resource") ? Global.projPath : "") + mediaList[editList[curInst].m].content);
displayPict(mediaList[editList[curInst].m].content);
imageLayer.y = 0;
babRunningTimer = new Timer(250, editList[i].tOut*4);
//trace("je lance un timer sur " + (babAr[i].tOut*4));
babRunningTimer.addEventListener(TimerEvent.TIMER, onRunningTimer);
babRunningTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeTimer);
babRunningTimer.start();
if(paramPlay==false){ onEditPlayPause(); }
}
else if(mediaList[editList[curInst].m].type=="t"){
// Text case
textLayer.visible = true;
mcContainer.visible = true;
drawBgCtn(mediaList[editList[curInst].m].color);
imageLayer.visible = false;
flvPB.visible = false;
if(metas.length>0 && allowFlvPB()){ flvPB.pause(); }
textLayer.htmlText = mediaList[editList[curInst].m].content;
// If the color is clear the text will be black, if the color is dark the text will be white.
tf.color = (RGB2L(mediaList[editList[curInst].m].color)>(255*3/2)) ? 0x000000 : 0xFFFFFF;
textLayer.setTextFormat(tf);
textLayer.height = Math.floor(textLayer.textHeight) + 10;
textLayer.y = ((hMin-37-37)/2) - (textLayer.textHeight/2);
if(babRunningTimer!=null){
if(babRunningTimer.running==true){
babRunningTimer.stop();
}
}
babRunningTimer = new Timer(250, editList[i].tOut*4);
//trace("je lance un timer sur " + (babAr[i].tOut*4));
babRunningTimer.addEventListener(TimerEvent.TIMER, onRunningTimer);
babRunningTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeTimer);
babRunningTimer.start();
if(paramPlay==false){ onEditPlayPause(); }
}
//if(Global.flv2==name) trace(name + " playBabInst textLayer = " + textLayer.visible + ", mcContainer = " + mcContainer.visible + ", imageLayer = " + imageLayer.visible + ", flvPB = " + flvPB.visible);
//trace("4* tcBab = " + (editList[curInst].eIn*1000));
currentTcBab = editList[curInst].eIn * 1000;
dispatchEvent(new EditEvent(EditEvent.EDIT_UPDATETC, currentTcBab));
tcLabel.text = "[" + convertTC(currentTcBab, false) + "]";
}
// Else we run the current segment from the beginning
else if(curInst==i){
babRunning = true;
if(babRunningTimer!=null){ if(babRunningTimer.running==true){ babRunningTimer.stop(); } }
//if(Global.flv2==name) trace(name + " 2 type m = " + mediaList[editList[curInst].m].type);
//trace("m " + mediaList[editList[curInst].m].type + ", c = " + mediaList[editList[curInst].m].content + ", col = " + mediaList[editList[curInst].m].color);
if(mediaList[editList[curInst].m].type=="v"){
savePlay = paramPlay;
//if(Global.flv2==name) trace(name + " 2 vp = " + vp);
if(allowFlvPB()){
// If the video is NOT streamed and savePlay==true, we play it.
if(savePlay==true && mediaList[editList[curInst].m].content.substr(0,4).toLowerCase()!="rtmp") flvPB.play();
// If the video IS streamed and the player is playing, we have to pause it for the seek to work.
if(!flvPB.paused && mediaList[editList[curInst].m].content.substr(0,4).toLowerCase()=="rtmp") flvPB.pause();
flvPB.seek(editList[curInst].tIn);
}
}
else if(mediaList[editList[curInst].m].type=="p"){
babRunningTimer = new Timer(250, editList[i].tOut*4);
//trace("je lance un timer sur " + (editList[i].tOut*4));
babRunningTimer.addEventListener(TimerEvent.TIMER, onRunningTimer);
babRunningTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeTimer);
babRunningTimer.start();
if(paramPlay==false){ onEditPlayPause(); }
}
else if(mediaList[editList[curInst].m].type=="t"){
if(babRunningTimer!=null){
if(babRunningTimer.running==true){
babRunningTimer.stop();
}
}
babRunningTimer = new Timer(250, editList[i].tOut*4);
//trace("je lance un timer sur " + (babAr[i].tOut*4));
babRunningTimer.addEventListener(TimerEvent.TIMER, onRunningTimer);
babRunningTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeTimer);
babRunningTimer.start();
if(paramPlay==false){ onEditPlayPause(); }
}
//if(Global.flv2==name) trace(name + " playBabInst 2 textLayer = " + textLayer.visible + ", mcContainer = " + mcContainer.visible + ", imageLayer = " + imageLayer.visible + ", flvPB = " + flvPB.visible);
currentTcBab = editList[curInst].eIn * 1000;
dispatchEvent(new EditEvent(EditEvent.EDIT_UPDATETC, currentTcBab));
tcLabel.text = "[" + convertTC(currentTcBab, false) + "]";
}
}
else{
if(metas.length>0 && allowFlvPB()){ flvPB.pause(); }
babRunning = false;
}}
//if(Global.flv2==name) trace(name + " playBabInst 2 textLayer = " + textLayer.visible + ", mcContainer = " + mcContainer.visible + ", imageLayer = " + imageLayer.visible + ", flvPB = " + flvPB.visible);
}
private function drawBgCtn(col:uint):void{
var g:Graphics = bgMcCtn.graphics;
g.clear();
g.beginFill(col);
g.drawRect(0,0,wMin,hMin-39);
g.endFill();
}
//
// Empties the edit arrays
//
public function empty():void{
editList = [];
mediaList = [];
babRunning = false;
curInst = -1;
}
//
// Get luminance from RGB. Luminance is the sum between the 3 values from 0 to 255 of red, green and blue.
//
private function RGB2L(c:uint):uint{
var r:uint = (c >> 16) & 0xFF;
var g:uint = (c >> 8) & 0xFF;
var b:uint = c & 0xFF;
var l:uint = r + g + b;
return l;
}
public function get volume():Number{ return flvPB.volume;}
private function convertTC(monTC:Number, tenth:Boolean=true) : String {
// We do this 2 divisions to keep only 1 number after "."
monTC = Math.floor(monTC/100);
monTC = (tenth==true) ? monTC/10 : Math.floor(monTC/10);
var MaHeu:Number = Math.floor(monTC/3600);
var MaMin:Number = Math.floor(monTC/60)-(60*MaHeu);
var MaSec:Number = ((monTC*10)%600) / 10; // We have to do that because there is an incomprehensible probleme with %60
var MonTime:String = ((MaHeu<10)?"0":"") + MaHeu + ":" + ((MaMin<10)?"0":"") + MaMin + ":" + ((MaSec<10)?"0":"") + MaSec;
return MonTime;
}
//
// External Interface functions
//
public function playVideo(e:*=null):Boolean{
if(metas.length>0 && allowFlvPB()){
flvPB.play();
editSkin.isPlaying = true;
}
debugOutput("playVideo e = " + e);
return true;
}
public function pauseVideo(e:*=null):Boolean{
if(metas.length>0 && allowFlvPB()){
flvPB.pause();
editSkin.isPlaying = false;
}
debugOutput("pauseVideo e = " + e);
return true;
}
public function getCurrentTime(e:*=null):Number{
// We send in seconds
var tc:Number = Math.floor(currentTcBab) / 1000;
debugOutput("getCurrentTime e = " + tc);
return tc;
}
public function seekTo(e:*=null):Boolean{
debugOutput("seekTo e = " + e);
return true;
}
public function isMuted(e:*=null):Boolean{
var b:Boolean = (flvPB.volume==0);
debugOutput("isMuted e = " + b);
return b;
}
public function mute(e:*=null):Boolean{
debugOutput("mute e = " + e);
flvPB.volume = 0;
flvPB.volume = 0;
return true;
}
public function unMute(e:*=null):Boolean{
debugOutput("unMute e = " + e);
flvPB.volume = 0;
flvPB.volume = 1;
return true;
}
public function getVolume(e:*=null):Number{
debugOutput("getVolume e = " + volume);
return volume;
}
public function setVolume(e:*=null):Boolean{
flvPB.volume = 0;
flvPB.volume = e;
debugOutput("setVolume e = " + e);
return true;
}
private function debugOutput(s:String):void{
if(debugText) debugText.text = "bab " + s;
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/player/Image.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/player/Image.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab.player
{
import flash.display.Sprite;
public class Image extends Sprite
{
public var source:*;
public function Image()
{
super();
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/bab/player/events/EditEvent.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/bab/player/events/EditEvent.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package bab.player.events
{
import flash.events.Event;
public class EditEvent extends Event
{
public static var EDIT_PLAYPAUSE:String = "EditPlayPause";
public static var EDIT_BACK:String = "EditBack";
public static var EDIT_FORWARD:String = "EditForward";
public static var EDIT_SOUNDUPDATE:String = "EditSoundUpdate";
public static var EDIT_UPDATETC:String = "EditUpdateTC";
public static var EDIT_CHANGEINSTRUCTION:String = "EditChangeInstruction";
public var volume:Number; // between 0 and 100;
public var inst:Number; // number of instruction in an edit from 0 to ...
public var tc:Number; // bab-edit's timecode
public function EditEvent(typePar:String, nb:Number=100, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(typePar, bubbles, cancelable);
if(typePar==EDIT_SOUNDUPDATE) volume = nb;
else if(typePar==EDIT_UPDATETC) tc = nb;
else if(typePar==EDIT_CHANGEINSTRUCTION) inst = nb;
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/nl/inlet42/data/subtitles/SubTitleData.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/nl/inlet42/data/subtitles/SubTitleData.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,25 @@
+package nl.inlet42.data.subtitles {
+
+ public class SubTitleData {
+ public var text : String;
+ public var start : Number;
+ public var duration : Number;
+ public var end : Number;
+ public var startStr : String;
+ public var endStr : String;
+
+ public function SubTitleData(inText : String = "",inStart : Number = 0,inDuration : Number = 0,inEnd : Number = 0,inStartStr : String = "",inEndStr : String = "") {
+ text = inText;
+ start = inStart;
+ duration = inDuration;
+ end = inEnd;
+ startStr = inStartStr;
+ endStr = inEndStr;
+ }
+
+ public function toString() : void {
+ //trace("nl.inlet42.data.subtitles.SubTitleData " + );
+ trace("SubTitleData " + start + ", " + duration + ", " + end + ", " + text);
+ }
+ }
+}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/nl/inlet42/data/subtitles/SubtitleParser.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/nl/inlet42/data/subtitles/SubtitleParser.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,83 @@
+package nl.inlet42.data.subtitles {
+
+ /**
+ * @author Jankees.van.Woezik
+ */
+ public class SubtitleParser {
+ public static function parseSRT(data : String) : Array {
+ var result : Array = new Array();
+
+ var lines : Array;
+ var translation : SubTitleData;
+
+ var blocks : Array = data.split(/^[0-9]+$/gm);
+ for each (var block : String in blocks) {
+ translation = new SubTitleData();
+ lines = block.split(/[\r\n]+/);
+ for each (var line : String in lines) {
+ //all lines in a translation block
+ if(trim(line) != "") {
+ if(line.match("-->")) {
+ //timecodes line
+ var timecodes : Array = line.split(/[ ]+-->[ ]+/gm);
+ if(timecodes.length != 2) {
+ trace("Translation error, something wrong with the start or end time");
+ } else {
+ translation.start = stringToSeconds(timecodes[0]);
+ translation.end = stringToSeconds(timecodes[1]);
+ translation.startStr = timecodes[0].replace(",",".");
+ translation.endStr = timecodes[1].replace(",",".");
+ translation.duration = translation.end - translation.start;
+ if(translation.duration < 0) {
+ trace("Translation error, something wrong with the start or end time");
+ }
+ }
+ } else {
+ //translation line
+ if(translation.text.length != 0) line = "\n" + trim(line);
+ translation.text += line;
+ }
+ }
+ }
+ result.push(translation);
+ }
+ return result;
+ }
+
+ public static function trim(p_string : String) : String {
+ if (p_string == null) {
+ return '';
+ }
+ return p_string.replace(/^\s+|\s+$/g, '');
+ }
+
+ /**
+ * Convert a string to seconds, with these formats supported:
+ * 00:03:00.1 / 03:00.1 / 180.1s / 3.2m / 3.2h / 00:01:53,800
+ *
+ * Special thanks to Thijs Broerse of Media Monks!
+ *
+ **/
+ public static function stringToSeconds(string : String) : Number {
+ var arr : Array = string.split(':');
+ var sec : Number = 0;
+ if (string.substr(-1) == 's') {
+ sec = Number(string.substr(0, string.length - 1));
+ }else if (string.substr(-1) == 'm') {
+ sec = Number(string.substr(0, string.length - 1)) * 60;
+ }else if(string.substr(-1) == 'h') {
+ sec = Number(string.substr(0, string.length - 1)) * 3600;
+ }else if(arr.length > 1) {
+ if(arr[2] && String(arr[2]).indexOf(',') != -1) arr[2] = String(arr[2]).replace(/\,/, ".");
+ sec = Number(arr[arr.length - 1]);
+ sec += Number(arr[arr.length - 2]) * 60;
+ if(arr.length == 3) {
+ sec += Number(arr[arr.length - 3]) * 3600;
+ }
+ } else {
+ sec = Number(string);
+ }
+ return sec;
+ }
+ }
+}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt.as
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt.as Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+package {
import flash.display.MovieClip;
import flash.display.StageScaleMode;
import bab.XMLInOut;
import bab.player.FlvPlayer;
import bab.player.events.EditEvent;
import flash.text.TextField;
import flash.display.StageAlign;
import flash.external.*;
import flash.system.Security;
import flash.events.Event;
import fl.video.VideoEvent;
import fl.video.VideoState;
public class player_bab_ldt extends MovieClip {
private var flashVars:Object;
private var xio:XMLInOut;
private var flvP1:FlvPlayer;
private var ar:Array;
private var t:TextField;
public function player_bab_ldt() {
// constructor code
Security.allowDomain("*");
Security.allowInsecureDomain("*");
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
// Fuck CS5 "new feature from built-in preloader" : loaderInfo.parameters is from parent.parent.loaderInfo.parameter
flashVars = new Object();
if(parent!=null){
if (parent.parent!=null) flashVars = parent.parent.loaderInfo.parameters;
else flashVars = parent.loaderInfo.parameters;
}
else flashVars = loaderInfo.parameters;
for(var param:Object in flashVars){
trace(" flashVars " + param + " : " + flashVars[param.toString()]);
}
var urlData:String = "test/yeelen_bab.ldt";
if(flashVars["urlData"]!="" && flashVars["urlData"]!=null){
urlData = flashVars["urlData"];
}
trace("init w = " + this.width + ", s.w = " + stage.stageWidth + ", h = " + this.height + ", s.h = " + stage.stageHeight);
xio = new XMLInOut(this, urlData);
}
public function youCanStart():void{
trace("youCanStart");
ar = xio.getEditList1();
trace("youCanStart 2 = " + ar.length);
var urlSkin:String = "test/SkinBoutABout.swf";
if(flashVars["urlSkin"]!="" && flashVars["urlSkin"]!=null){
urlSkin = flashVars["urlSkin"];
}
flvP1 = new FlvPlayer(stage.stageWidth, stage.stageHeight, urlSkin, t = new TextField());
flvP1.addEventListener(EditEvent.EDIT_CHANGEINSTRUCTION, youCanStartBab);
flvP1.addEventListener(EditEvent.EDIT_UPDATETC, onBabVideoProgress);
flvP1.addEventListener(VideoEvent.STATE_CHANGE, onBabStateChange);
addChild(flvP1);
t.text = "init s.w = " + stage.stageWidth + ", s.h = " + stage.stageHeight + ", ei.a = " + ExternalInterface.available;
t.textColor = 0xFFFFFF;
t.width = stage.stageWidth;
addChild(t);
// External interface management
try{
ExternalInterface.addCallback("playVideo", flvP1.playVideo);
ExternalInterface.addCallback("pauseVideo", flvP1.pauseVideo);
ExternalInterface.addCallback("getCurrentTime", flvP1.getCurrentTime);
ExternalInterface.addCallback("seekTo", flvP1.seekTo);
ExternalInterface.addCallback("isMuted", flvP1.isMuted);
ExternalInterface.addCallback("mute", flvP1.mute);
ExternalInterface.addCallback("unMute", flvP1.unMute);
ExternalInterface.addCallback("getVolume", flvP1.getVolume);
ExternalInterface.addCallback("setVolume", flvP1.setVolume);
}
catch(e:*){
t.text = "ExternalInterface error catch e = " + e;
t.textColor = 0xFFFFFF;
}
ExternalInterface.call("onBabPlayerReady","cool");
}
public function youCanStartBab(e:*):void{
flvP1.removeEventListener(EditEvent.EDIT_CHANGEINSTRUCTION, youCanStartBab);
flvP1.getEditList(ar[0], ar[1]);
}
private function onBabVideoProgress(e:EditEvent):void{
// e.tc arrives in milliseconds
ExternalInterface.call("onBabVideoProgress",{mediaTime:(Math.floor(e.tc)/1000)});
}
private function onBabStateChange(e:VideoEvent):void{
var s:Number;
// Embeddable adaptation : we limit the number of states
// States can be : loading, stopped, seeking (3), paused (2), buffering, playing (1).
switch(e.state){
case VideoState.SEEKING:
s = 3;
break;
case VideoState.PAUSED:
s = 2;
break;
case VideoState.PLAYING:
s = 1;
break;
}
if(!isNaN(s)){
ExternalInterface.call("onBabStateChange",s);
}
}
}
}
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt.swf
Binary file assets/player_bab_ldt/player_bab_ldt.swf has changed
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/DOMDocument.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/DOMDocument.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <__go_to_ctor_definition_help file="C:\devsrc\flashfarm\media_frameworks\branches\FLVPlayback_AS3_DVR\FLVPlayback\..\fl\video\FLVPlayback.as" pos="31557" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_barSkin.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_barSkin.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_indeterminateSkin.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_indeterminateSkin.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_trackSkin.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/ProgressBarSkins/ProgressBar_trackSkin.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/_private/Component_avatar.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/LIBRARY/Component Assets/_private/Component_avatar.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/LIBRARY/ProgressBar.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/LIBRARY/ProgressBar.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,642 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Track Skin
+
+
+
+
+
+
+
+
+
+
+
+
+ Bar Skin
+
+
+
+
+
+
+
+
+
+
+
+
+ Indeterminate Pattern
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <__go_to_ctor_definition_help file="c:\devsrc\flashfarm\authortool\windbgnoelicensing\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\ProgressBar.as" pos="7922" />
+
+
+
+
+
+
+
+
+ <__go_to_ctor_definition_help file="C:\devsrc\flashfarm\authortool\windbgnoelicensing\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\core\UIComponent.as" pos="14978" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/META-INF/metadata.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/META-INF/metadata.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,55 @@
+
+
+
+
+ Adobe Flash Professional CS5
+ 2012-05-09T11:11:28+02:00
+ 2012-05-09T11:12:56+02:00
+ 2012-05-09T11:12:56+02:00
+
+
+ application/vnd.adobe.fla
+
+
+ xmp.iid:F77F1174072068118C14885890149FB7
+ xmp.did:F77F1174072068118C14885890149FB7
+ xmp.did:F77F1174072068118C14885890149FB7
+
+
+
+ created
+ xmp.iid:F77F1174072068118C14885890149FB7
+ 2012-05-09T11:11:28+02:00
+ Adobe Flash Professional CS5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/MobileSettings.xml
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/PublishSettings.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/PublishSettings.xml Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,202 @@
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ player_bab_ldt.swf
+ player_bab_ldt.exe
+ player_bab_ldt.app
+ player_bab_ldt.html
+ player_bab_ldt.gif
+ player_bab_ldt.jpg
+ player_bab_ldt.png
+ player_bab_ldt.mov
+ player_bab_ldt.smil
+
+
+ 0
+ 10,1,52,0;9,0,124,0;8,0,24,0;7,0,14,0;6,0,79,0;5,0,58,0;4,0,32,0;3,0,8,0;2,0,1,12;1,0,0,1;
+ 1
+ 1
+ player_bab_ldt.xfl_content.html
+ player_bab_ldt.xfl_alternate.html
+ 0
+
+ 550
+ 400
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4
+ 0
+ 0
+ 1
+ 0
+ /Users/tc/Library/Application Support/Adobe/Flash CS5/fr_FR/Configuration/HTML/Default.html
+ 1
+
+
+
+
+ 0
+ 0
+ 0
+ 80
+ 0
+ 0
+ 7
+ 0
+ 7
+ 0
+ 10
+ FlashPlayer10
+ 3
+ 1
+
+ .
+ CONFIG::FLASH_AUTHORING="true";
+ 0
+
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ player_bab_ldt
+ 2
+ 4
+ 4096
+ AS3
+ 1
+ 1
+ 0
+ 15
+ 1
+ 0
+ 4102
+ rsl
+ wrap
+ $(AppConfig)/ActionScript 3.0/rsls/loader_animation.swf
+
+
+ $(AppConfig)/ActionScript 3.0/libs
+ merge
+
+
+ $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc
+ rsl
+ http://fpdownload.adobe.com/pub/swz/tlf/1.0.0.595/textLayout_1.0.0.595.swz
+ http://fpdownload.adobe.com/pub/swz/crossdomain.xml
+ textLayout_1.0.0.595.swz
+
+
+
+
+ $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc
+
+ http://fpdownload.adobe.com/pub/swz/tlf/1.0.0.595/textLayout_1.0.0.595.swz
+ http://fpdownload.adobe.com/pub/swz/crossdomain.xml
+ textLayout_1.0.0.595.swz
+
+
+
+
+ 550
+ 400
+ 0
+ 4718592
+ 0
+ 80
+ 1
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 100000
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+
+
+ 550
+ 400
+ 0
+ 1
+ 1
+
+ 1
+ 0
+ 1
+ 0
+ 0
+
+ 128
+
+
+ 255
+
+
+
+ 550
+ 400
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+
+
+
+ 24 bits avec Alpha
+ 255
+
+
+
+ 550
+ 400
+ 1
+ 0
+
+
+ 00000000
+ 0
+ 0
+ 0
+ 0
+ 1
+
+
+
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 assets/player_bab_ldt/player_bab_ldt/player_bab_ldt.xfl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/assets/player_bab_ldt/player_bab_ldt/player_bab_ldt.xfl Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,1 @@
+PROXY-CS5
\ No newline at end of file
diff -r 85da59ccbdf8 -r a26701464849 test/integration/fichiers_bab/SkinBoutABout.swf
Binary file test/integration/fichiers_bab/SkinBoutABout.swf has changed
diff -r 85da59ccbdf8 -r a26701464849 test/integration/fichiers_bab/yeelen_bab.ldt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/fichiers_bab/yeelen_bab.ldt Thu May 10 18:11:46 2012 +0200
@@ -0,0 +1,6341 @@
+
+
+
+
+
+
+
+
+
+
+ Position caméra
+
+
+
+ plan 132
+
+
+
+ sol
+
+
+
+
+ plan 151
+
+
+
+ sol
+
+
+
+
+ plan 152
+
+
+
+
+
+
+
+
+ Sons
+
+
+
+ plan 5
+
+
+
+ cris
+
+
+
+
+ plan 8
+
+
+
+ chants
+ jour
+ petit fils
+
+
+
+
+ plan 13
+
+
+
+ crépitement
+ jour
+ père
+
+
+
+
+ plan 14
+
+
+
+ chants
+ jour
+ père
+
+
+
+
+ plan 50
+
+
+
+
+
+
+ plan 56
+ panoramique
+
+
+
+
+
+ plan 96
+
+
+
+ femme
+ jour
+
+
+
+
+ plan 108
+
+
+
+
+
+
+ plan 123
+
+
+
+
+
+
+ plan 139
+
+
+
+
+
+
+ plan 150
+
+
+
+
+
+
+ plan 196
+
+
+
+
+
+
+ plan 208
+
+
+
+
+
+
+ plan 252
+
+
+
+ jour
+ père
+
+
+
+
+ plan 269
+
+
+
+
+
+
+ plan 271
+
+
+
+ jour
+ père
+
+
+
+
+ plan 301
+ Bleu, mouvement de caméra
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 314
+
+
+
+
+
+
+ plan 325
+
+
+
+
+
+
+ plan 329
+
+
+
+
+
+
+ plan 346
+
+
+
+
+
+
+ plan 380
+
+
+
+ fils
+ jour
+ petit fils
+
+
+
+
+ plan 398
+
+
+
+ femme
+ jour
+ petit fils
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ femme
+ petit fils
+
+
+
+
+
+
+
+
+ femme
+
+
+
+
+
+
+
+
+ femme
+
+
+
+
+
+
+
+
+ femme
+
+
+
+
+
+
+
+
+ femme
+ petit fils
+
+
+
+
+
+
+ narration
+
+
+
+ plan 96
+
+
+
+ purification
+
+
+
+
+ plan 101
+
+
+
+ combat
+ mort
+
+
+
+
+
+
+ terre
+
+
+
+ plan 4
+
+
+
+
+
+
+ plan 6
+
+
+
+
+
+
+ plan 8
+
+
+
+ jour
+ petit fils
+
+
+
+
+ plan 12
+
+
+
+
+
+
+ plan 14
+
+
+
+ jour
+ père
+
+
+
+
+ plan 35
+
+
+
+
+
+
+ plan 56
+
+
+
+
+
+
+ plan 66
+
+
+
+
+
+
+ plan 101
+
+
+
+
+
+
+ plan 108
+
+
+
+
+
+
+ plan 110
+
+
+
+
+
+
+ plan 111
+
+
+
+
+
+
+ plan 121
+
+
+
+
+
+
+ plan 123
+
+
+
+
+
+
+ plan 124
+
+
+
+
+
+
+ plan 125
+
+
+
+
+
+
+ plan 139
+
+
+
+
+
+
+ plan 150
+
+
+
+
+
+
+ plan 178
+
+
+
+
+
+
+ plan 196
+
+
+
+
+
+
+ plan 220
+
+
+
+ femme
+ fils
+
+
+
+
+ plan 252
+
+
+
+ jour
+ père
+
+
+
+
+ plan 269
+
+
+
+ musique
+ nuit
+
+
+
+
+ plan 271
+
+
+
+ jour
+ père
+
+
+
+
+ plan 301
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 337
+
+
+
+ père
+
+
+
+
+ plan 346
+
+
+
+ père
+
+
+
+
+ plan 347
+
+
+
+ femme
+ fils
+
+
+
+
+ plan 348
+
+
+
+ père
+
+
+
+
+ plan 350
+
+
+
+ fils
+
+
+
+
+ plan 351
+
+
+
+ femme
+
+
+
+
+ plan 353
+
+
+
+ fils
+ père
+
+
+
+
+
+
+
+
+
+
+
+ plan 380
+
+
+
+ jour
+ petit fils
+
+
+
+
+ plan 381
+
+
+
+ fils
+ jour
+
+
+
+
+ plan 400
+
+
+
+ jour
+ petit fils
+
+
+
+
+
+
+ eau
+
+
+
+ plan 15
+
+
+
+ femme
+ fils
+ jour
+ magie
+
+
+
+
+ plan 18
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 96
+
+
+
+ femme
+ jour
+
+
+
+
+ plan 102
+
+
+
+ fils
+ jour
+
+
+
+
+ plan 103
+
+
+
+ fils
+ jour
+
+
+
+
+ plan 230
+
+
+
+ fils
+ nuit
+
+
+
+
+ plan 279
+
+
+
+
+
+
+ plan 311
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Couleurs
+
+
+
+ plan 127
+
+
+
+
+
+
+ plan 137
+
+
+
+
+
+
+
+
+ Chez les Peuls
+
+
+
+ chez les Peuls
+ aperçoit qqch
+
+
+
+
+
+ chez les Peuls
+ contrechamp : on l'a vu
+
+
+
+
+
+ chez les Peuls
+ Au milieu du troupeau
+
+
+
+
+
+ chez les Peuls
+ tjs au milieu du troupeau
+
+
+
+
+
+ chez les Peuls
+ 1er contact : "au voleur"
+
+
+
+
+
+ chez les Peuls
+ arrestation + méfiance
+
+
+
+
+
+ chez les Peuls
+ le prisonnier
+
+
+
+
+
+ chez les Peuls
+ Présentation au roi.
+
+
+
+
+
+ chez les Peuls
+ Défense menaçante: je vous massacrais tous" + investi d'une mission
+
+
+
+
+
+ chez les Peuls
+ 1er usage de son pouvoir contre condamnation
+
+
+
+
+
+ chez les Peuls
+ utilise son pouvoir pour aider le village
+
+
+
+
+
+ chez les Peuls
+ Utilisation de son pourvoir sur les abeilles
+
+
+
+
+
+ chez les Peuls
+ La fuite des ennemis
+
+
+
+
+
+ chez les Peuls
+ Déroute finale de l'ennemi grâce au feu
+
+
+
+
+
+ chez les Peuls
+ gros plan feu
+
+
+
+
+
+ chez les Peuls
+ le roi l'implore de rester
+
+
+
+
+
+ chez les Peuls
+ Renonce à rester, évoque sa mission
+
+
+
+
+
+ chez les Peuls
+ 2ème demande du roi : guérir la stérilité de sa femme, 1er contact avec celle qui deviendra son épouse
+
+
+
+
+
+ chez les Peuls
+ Alors, heureuse?
+
+
+
+
+
+ chez les Peuls
+ Aveu adultère
+
+
+
+
+
+ chez les Peuls
+ Aveu 2
+
+
+
+
+
+ chez les Peuls
+ don du chef
+
+
+
+
+
+ chez les Peuls
+ don de la femme
+
+
+
+
+
+ chez les Peuls
+ exhortation à partir
+
+
+
+
+
+ chez les Peuls
+ Le départ into the wild
+
+
+
+
+
+
+
+ bande son / temps
+
+
+
+ plan 230
+
+
+
+ crépuscule
+
+
+
+
+
+
+ Séquences
+
+
+
+ générique
+
+
+
+
+
+
+ Le Sacrifice
+
+
+
+
+
+
+ L'exil de Nianankoro
+
+
+
+
+
+
+ Prisonnier
+
+
+
+
+
+
+ Par les abeilles et le feu
+
+
+
+
+
+
+ La seconde faveur du roi
+
+
+
+
+
+
+ L'épouse répudiée
+
+
+
+
+
+
+ Le conseil
+
+
+
+
+
+
+ La source du Bongo
+
+
+
+
+
+
+ L'aile et l'oeil du Koré
+
+
+
+
+
+
+ Au service du mal et de l'injustice
+
+
+
+
+
+
+ Epilogue et générique
+
+
+
+
+
+
+
+
+ mère fils ensemble : mère
+
+
+
+ plan 19
+ Gros plan serré (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 22
+ plan épaule (longue focale)
+
+
+ Valeur de plan
+
+
+
+
+ plan 24
+ plan épaule (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 26
+ plan épaule (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 30
+ plan épaule (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 37
+ plan épaule (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 39
+ plan épaule (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+ plan 41
+ plan poitrine (longue focale)
+
+
+ Valeurs de plan.
+
+
+
+
+
+
+ mère fils ensemble : fils
+
+
+
+ plan 16
+
+
+
+
+
+
+ plan 17
+
+
+
+
+
+
+ plan 21
+
+
+
+
+
+
+ plan 23
+
+
+
+
+
+
+ plan 27
+
+
+
+
+
+
+ plan 29
+
+
+
+
+
+
+ plan 36
+
+
+
+
+
+
+ plan 38
+
+
+
+
+
+
+ plan 40
+
+
+
+
+
+
+ plan 42
+
+
+
+
+
+
+
+
+ personnages secondaires
+
+
+
+ enfant- chèvre
+
+
+
+ enfant chèvre
+
+
+
+
+ femme
+
+
+
+ femme+
+
+
+
+
+ femme
+
+
+
+ femme
+
+
+
+
+ enfant-fer
+
+
+
+ enfant-fer
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ femme
+
+
+
+ femme
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ enfant-fer, chef-forgeron
+
+
+
+ chef-forgeron
+ enfant-fer
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ plan 93
+
+
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ anciens
+
+
+
+ anciens
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ roi, anciens
+
+
+
+ anciens
+ roi
+
+
+
+
+ roi, jeune peul, anciens
+
+
+
+ anciens
+ jeune peul
+ roi
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ roi, anciens
+
+
+
+ anciens
+ roi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+
+
+
+
+
+ En chemin n°2
+
+
+
+ chez les Peuls
+ Le départ into the wild
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Plan d'ensmble paysage montagneux petit matin
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Le couple au matin
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Plan ensemble paysage Jour
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Progression du couple dans paysage escarpé, journée
+
+
+
+
+
+
+
+ Nudité
+
+
+
+ plan 5
+ Le film s'ouvre sur la lumière rougeoyante du feu (le soleil), puis sur le corps d'un animal criant sous les flammes. L'effet de violence est renforcé par la musique et le retour au plan sur le soleil levant. A la musique succède un son strident qui fair le lien avec le plan suivant (plan 5).
+
+
+
+
+
+ plan 96
+ Voir le bout à bout : comparer les deux séquences
+
+
+ femme
+ jour
+
+
+
+
+ plan 125
+
+
+
+
+
+
+ plan 166
+
+
+
+
+
+
+ plan 226
+
+
+
+ union
+
+
+
+
+
+ Corps et air, vent.
+
+
+ femme
+ fils
+
+
+
+
+ plan 311
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 347
+
+
+
+
+
+
+ plan 380
+
+
+
+
+
+
+ plan 381
+
+
+
+
+
+
+
+
+ foule
+
+
+
+ village-fer
+
+
+
+ village-fer
+
+
+
+
+
+
+ Le départ
+
+
+
+ départ
+ dernière scène avec la mère
+
+
+
+
+
+ départ
+ don de la pierre
+
+
+
+
+
+ départ
+ Il s'en va
+
+
+
+
+
+ départ
+ Il part.
+
+
+
+
+
+
+
+ foule
+
+
+
+ village-fer
+
+
+
+ village-fer
+
+
+
+
+
+
+ personnages secondaires
+
+
+
+ enfant- chèvre
+
+
+
+ enfant chèvre
+
+
+
+
+ femme
+
+
+
+ femme+
+
+
+
+
+ femme
+
+
+
+ femme
+
+
+
+
+ enfant-fer
+
+
+
+ enfant-fer
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ femme
+
+
+
+ femme
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ enfant-fer, chef-forgeron
+
+
+
+ chef-forgeron
+ enfant-fer
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ chef-forgeron
+
+
+
+ chef-forgeron
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ enfant peul
+
+
+
+ enfant peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ plan 93
+
+
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ anciens
+
+
+
+ anciens
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ ennemi, jeune peul
+
+
+
+ ennemi
+ jeune peul
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ jeune peul
+
+
+
+ jeune peul
+
+
+
+
+ roi, jeune peul
+
+
+
+ jeune peul
+ roi
+
+
+
+
+ roi, anciens
+
+
+
+ anciens
+ roi
+
+
+
+
+ roi, jeune peul, anciens
+
+
+
+ anciens
+ jeune peul
+ roi
+
+
+
+
+ roi
+
+
+
+ roi
+
+
+
+
+ roi, anciens
+
+
+
+ anciens
+ roi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ ennemi
+
+
+
+ ennemi
+
+
+
+
+ jeune peul
+
+
+
+
+
+
+
+
+ Le don de l'épouse
+
+
+
+ chez les Peuls
+ Alors, heureuse?
+
+
+
+
+
+ chez les Peuls
+ Aveu adultère
+
+
+
+
+
+ chez les Peuls
+ Aveu 2
+
+
+
+
+
+ chez les Peuls
+ don du chef
+
+
+
+
+
+ chez les Peuls
+ don de la femme
+
+
+
+
+
+ chez les Peuls
+ exhortation à partir
+
+
+
+
+
+
+
+ Corps et regards
+
+
+
+ Mère et fils en départ
+ Les corps sont les points d'appui pour l'échange des regards entre la mère et le fils. Cissé donne du temps aux corps pour se déplacer, se faire face, se regarder, se dire adieu.
+Les deux personnages de retournent l'un vers l'autre.
+Plans 39-40 : Raccord dans l'axe des regards. Cela créé un effet de mouvement qui accentue l'idée du départ et de l'adieu.
+L'enchaînement des plans se fait selon différentes échelles : du plan moyen au plan rapproché, puis du plan rapproché au plan moyen.
+On voit facilement sur lignes de temps le raccourcissement puis l'allongement progressif de la durée des plans entre le début et la fin de cette séquence.
+Lorsque la mère et le fils se sont dit adieu, Cissé ne quitte pas les corps, il enchaîne sur le corps d'une femme au travail, plaçant ainsi ses deux personnages au même niveau qu'une inconnue inscrite dans le paysage. Cette fois, Cissé montre le corps au travail.
+
+
+ femme
+ fils
+ jour
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ plan 226
+ Dans cette séquence,c''est le regard de Nianankoro qui domine. C'est à travers ses yeux qu'on assiste à la scène d'envoûtement. La direction des regards prend de l'importance, comme dans la séquence des plans 39-40. Nianakoro commence par effectuer un mouvement de retournement du regard sur presque 180 degrés. Atou regarde ailleurs. L'échange des regards entre les deux personnages ne se fait que sous le coup de l'envoûtement. Mais c'est surtout Nianankoro qui regarde Atou. C'est lui qui la voit le regarder. Au fur et à mesure que nous avançons dans la séquence, le son s'abstrait presque totalement du film, ce qui accentue la dimension fantastique.
+Alternance des regards de Nianankoro vers Atou et en direction du paysage.
+Noter aussi le mouveent de la caméra qui s'approche lentement de Nianankoro pleurant. Le plan 224 en mouvement s'oppose au plan suivant 225 où c'est le visage d'Atou qui bouge très légèrement dans l'image blanche.
+Au plan 226, on passe directement du visage d'Atou à un plan très rapproché sur les pieds de Nianankoro. Le corps
+
+
+ femme
+ fils
+ jour
+ magie
+ union
+
+
+
+
+
+
+ feu
+
+
+
+ plan 5
+
+
+
+
+
+
+ plan 13
+
+
+
+
+
+
+ plan 54
+
+
+
+
+
+
+ plan 118
+
+
+
+
+
+
+ plan 166
+
+
+
+
+
+
+ plan 167
+
+
+
+
+
+
+ plan 189
+
+
+
+
+
+
+ plan 205
+
+
+
+ femme
+ fils
+
+
+
+
+ plan 241
+
+
+
+ femme
+ fils
+ nuit
+
+
+
+
+ plan 250
+
+
+
+ femme
+ fils
+ nuit
+
+
+
+
+ plan 322
+
+
+
+ femme
+ fils
+ nuit
+
+
+
+
+ plan 326
+
+
+
+ femme
+ fil
+ jour
+ nuit
+
+
+
+
+
+
+ mère et fils ensemble
+
+
+
+ plan 20
+ Dialogue de la mère et du fils dans la case. Caméra 3/4 dos du fils.
+La construction du plan nous amène à regarder le fond de l'image et donne au personnage de la mère alors que celle-ci est minime dans l'image.
+
+
+ Problématique des 180°
+
+
+
+
+ plan 25
+ Dialogue mère fils dans la case. Caméra profil gauche de la mère au premier plan, masque en partie le fils et donne l'impression qu'il se touche. La mère reste la plus importante.(cela est renforcé par le détournement du regard en fin plan)
+
+
+ Problématique des 180°
+
+
+
+
+ plan 28
+ Dialogue mère fils dans la case. Profil gauche de la mère avec fils au premier plan en amorce et flou. Position de la caméra et regard du fils nous envoient vers la mère au centre de l'image.
+
+
+ Problématique des 180°
+
+
+
+
+ plan 35
+ Mouvement de caméra d'accompagnement d'abord sur la mère puis sur le fils, donne l'accord pour la quête en lui donnant l'objet (prisme).
+Ce mouvement montre le changment de personnage dominant.
+
+
+ Mouvement de caméra
+
+
+
+
+
+
+ Paysages et sons du Mali
+ Les mouvements de caméra
+
+
+ plan 5
+ La musique fait le lien entre différents plans.
+
+
+
+
+
+ plan 44
+
+
+
+
+
+
+ plan 50
+
+
+
+
+
+
+ plan 56
+ panoramique
+
+
+
+
+
+ plan 66
+ Le paysage se résume au désert
+
+
+ fils
+ jour
+
+
+
+
+ plan 96
+
+
+
+ femme
+ jour
+
+
+
+
+ plan 108
+
+
+
+
+
+
+ plan 123
+
+
+
+
+
+
+ plan 139
+
+
+
+
+
+
+ plan 150
+
+
+
+
+
+
+ plan 196
+
+
+
+
+
+
+ plan 208
+
+
+
+
+
+
+ plan 252
+
+
+
+ jour
+ père
+
+
+
+
+ plan 269
+
+
+
+
+
+
+ plan 271
+
+
+
+ jour
+ père
+
+
+
+
+ plan 300
+
+
+
+
+
+
+ plan 301
+ Bleu, mouvement de caméra
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 314
+
+
+
+
+
+
+ plan 325
+
+
+
+
+
+
+ plan 327
+
+
+
+
+
+
+ plan 329
+
+
+
+
+
+
+ plan 346
+
+
+
+
+
+
+ plan 353
+
+
+
+ fils
+ père
+
+
+
+
+ plan 380
+
+
+
+ fils
+ jour
+ petit fils
+
+
+
+
+ plan 383
+
+
+
+
+
+
+ plan 398
+
+
+
+ femme
+ jour
+ petit fils
+
+
+
+
+
+
+ Corps et terre
+ Le corps sur terre évoque l'effort, le travail, le déplacement,la fragilité de l'homme dans son environnement
+
+
+ plan 66
+
+
+
+
+
+
+ plan 269
+ La marche comme épreuve du corps sur la terre.
+
+
+ musique
+ nuit
+ père
+
+
+
+
+ plan 346
+ Contraste des couleurs, les corps se détachent de la couleur blanche des habitations. Les corps nus des deux serviteurs du père subissent une forme de violence : celle du père et celle du baton (chute de l'un d'eux).
+
+
+ père
+
+
+
+
+ plan 353
+ Seul moment du film où l'on voit le père et le fils ensemble. Le terrain de rencontre est la terre sèche et aride. Seul le père conserve ses vêtements, les autres personnages sont torse nus. Le corps devient le lieu de l'épreuve de force. Opposition entre les corps tenus au sol et à la terre et le baton qui vole dans le ciel bleu. Opposition des couleurs.
+
+
+ fils
+ père
+
+
+
+
+
+
+ vent / air
+
+
+
+ plan 6
+
+
+
+
+
+
+ plan 58
+
+
+
+ magie
+
+
+
+
+ plan 173
+
+
+
+
+
+
+ plan 209
+
+
+
+
+
+
+ plan 226
+
+
+
+
+
+
+ plan 380
+
+
+
+ fils
+ jour
+ petit fils
+
+
+
+
+ plan 388
+
+
+
+
+
+
+
+
+ Musique
+
+
+
+ plan 5
+ La musique fait le lien entre différents plans.
+
+
+
+
+
+ plan 66
+
+
+
+
+
+
+ plan 101
+
+
+
+
+
+
+ plan 269
+
+
+
+
+
+
+ plan 305
+ mouvement de caméra,
+
+
+
+
+
+ plan 325
+
+
+
+
+
+
+ plan 327
+
+
+
+
+
+
+ plan 353
+
+
+
+ fils
+ père
+
+
+
+
+ plan 383
+
+
+
+
+
+
+ plan 398
+
+
+
+ femme
+ jour
+ petit fils
+
+
+
+
+
+
+ Personnages principaux
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ plan 17
+
+
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère-fils
+
+
+
+ mère-fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère-fils
+
+
+
+ mère-fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+
+
+ personnages centrés
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ plan 273
+
+
+
+
+
+
+
+ p302
+
+
+ personnages centrés
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Corps et eau
+ Voir le bout à bout correspondant : comparer les deux séquence.
+Observer les mouvements de la caméra, l'enchaînement des plans, échelle des plans, la direction des corps dans l'espace (séquence de purification de la mère).
+
+
+ plan 96
+ Voir le bout à bout : comparer les deux séquences
+
+
+ femme
+ jour
+
+
+
+
+ plan 230
+
+
+
+ fils
+ nuit
+
+
+
+
+ plan 311
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+
+
+ effet miroir
+
+
+
+ plan 15
+ le reflet de l'oncle dans la calebasse
+
+
+ eau
+ magie
+ miroir
+
+
+
+
+ plan 16
+ GP du fils
+
+
+ fils
+ lumière
+ visage
+
+
+
+
+ plan 16
+ le visage du père dans la calebasse. Plan un peu moins serré. Zoom avant
+
+
+ eau
+ magie
+ miroir
+ père
+
+
+
+
+ plan 17
+ visage fils gp
+
+
+ fils
+ lumière
+ visage
+
+
+
+
+ plan 18
+ la calebasse sans reflet. plan réaliste (magie evacuée). Incursion des mains dans le cadre. Cadre ouvert. pt de vue neutre
+
+
+ eau
+ mains
+ réel
+
+
+
+
+ plan 19
+ la mère qui écoute
+
+
+ mère
+ profil
+ visage
+ écoute
+
+
+
+
+ plan 20
+ la mère et le fils en reflet inversé
+plan moyen
+
+
+ fils
+ intérieur
+ miroir
+ mère
+
+
+
+
+ plan 21
+ le fils qui écoute
+
+
+ profil
+ visage
+ écoute
+
+
+
+
+ plan 22
+ la mère qui parle du père et de son pouvoir magique
+
+
+ de face
+ visage
+
+
+
+
+ plan 23
+ le fils répond et se tourne vers la caméra. pt de vue subjectif mére
+
+
+ fils
+ profil
+ visage
+
+
+
+
+ plan 24
+ la mère en contrechamp. pt de vue subj fils
+
+
+ mère
+ visage
+
+
+
+
+ plan 25
+ reprise du plan 20 mais en effet miroir (inversé)
+Cadre lumineux (incursion de l'extérieur: porte ouverte)
+
+
+ extérieur
+ fils
+ intérieur
+ lumière
+ miroir
+ mère
+
+
+
+
+ plan 26
+ la mère silencieuse mais mouvement
+plein cadre GP
+
+
+ mère
+ profil
+ visage
+
+
+
+
+ plan 27
+ le fils écoute les reproches de la mère en baissant la tête puis demande son pardon (marqueur)
+cadre dans le cadre: il est piégé
+
+
+ extérieur
+ fils
+ intérieur
+ lumière
+ profil
+ visage
+ écoute
+
+
+
+
+ plan 27
+ le fils écoute les reproches de la mère en baissant la tête puis demande son pardon (marqueur)
+cadre dans le cadre: il est piégé
+
+
+ extérieur
+ fils
+ intérieur
+ lumière
+ profil
+ visage
+ écoute
+
+
+
+
+ plan 27
+ le fils écoute les reproches de la mère en baissant la tête puis demande son pardon (marqueur)
+cadre dans le cadre: il est piégé
+
+
+ extérieur
+ fils
+ intérieur
+ lumière
+ profil
+ visage
+ écoute
+
+
+
+
+
+
+
+
+
+
+
+ plan 28
+ fils en amorce pendant que la mère lui pardonne et lui donne les 2 objets
+
+
+ calebasse
+ fils
+ magie
+ miroir
+ mére
+
+
+
+
+ plan 29
+ les mains du fils en GP qui attache l'amulette à son cou
+panoramique oblique qui suit les mains
+
+
+ magie
+ mains
+
+
+
+
+ plan 30
+ plan très court GP de la mère. Elle est du côté droit du cadre
+pt de vue fils
+
+
+ de face
+ mère
+
+
+
+
+
+
+ déplacements Nianankoro
+ Les déplacements de Nianankoro : au Mali, à travers les régions de brousse, des régions désertiques, les régions peuls, chez les Dogons...
+
+
+ La case est vide
+ Soma et les porteurs du pilon enfoncent la porte
+
+
+ déplacements
+ Ellipse temporelle
+ ellipse(s)
+ Nianankoro
+
+
+
+
+ La séparation
+ La mère pousse son fils à partir; elle lui demande de remettre à l'oncle Djigui l'oeil magique de l'aile du Korê; ils se séparent.
+
+
+ la mère
+ Nianankoro
+ oeil magique
+ plans rapprochés
+
+
+
+
+ Pause
+ Nianankoro s'arrête dans son trajet, fatigué (apparition de l'homme-hyène). Entrée dans le champ par la droite.
+
+
+ Brousse
+ Nianankoro
+ panoramique
+
+
+
+
+ Terre craquelée
+ Nianankoro arrive dans un espace désertique : la terre est désséchée; il titube
+
+
+ fatigue
+ gros plan
+ Nianankoro
+ plan d'ensemble
+ plongée
+ sécheresse
+ travelling d'accompagnement
+
+
+
+
+ Prisonnier
+ Nianankoro est pris pour un voleur de bétail par le village Peul
+
+
+ espace fermé
+ Nianankoro
+ plan moyen
+
+
+
+
+ Arrivée au village
+ Nianankoro, prisonnier, est présenté au roi.
+
+
+ espace fermé
+ Nianankoro
+ travelling d'accompagnement
+
+
+
+
+ Le rituel du tibia
+ Nianankoro, à la demande du roi, commence un rituel avec un tibia de chavil pour protéger le village des guerriers.
+
+
+ ellipse spatiale
+ ellipse(s)
+ Nianankoro
+
+
+
+
+ Retour victorieux au village
+ Nianankoro, cette fois à cheval, rentre victorieux au village peul.
+
+
+ Nianankoro
+ travelling d'accompagnement
+
+
+
+
+ Retour au village peul
+ Le roi a convoqué Attou. Elle va arriver.
+
+
+ ellipse spatiale
+ Nianankoro
+
+
+
+
+ Rituel de la fertilité
+ Nianankoro s'est retiré avec Attou pour la rencdre fertile
+
+
+ ellipse spatiale
+ Nianankoro
+
+
+
+
+
+
+
+
+
+
+
+ Départ du village peul
+ Le roi fait don à Nianankoro de son épouse.
+
+
+ espace fermé
+ Nianankoro
+
+
+
+
+ Le pays dogon
+ Nianankoro et Attou arrivent en pays dogon.
+
+
+ Attou
+ Nianankoro
+ panoramique
+ plan de grand ensemble
+
+
+
+
+ La source du Bongo
+ Nianankoro et Attou se dirigent vers la source pour se purifier.
+
+
+ Attou
+ Nianankoro
+ panaoramique d'accompagnement
+
+
+
+
+ Vers l'oncle Djigui
+ Le Dogons conduisent Nianankoro et Attou à l'oncle Djigui
+
+
+ Attou
+ Nianankoro
+ plongée
+
+
+
+
+ L'oncle Djigui
+ Nuit : Nianankoro et Attou écoutent la prédiction de l'oncle Djigui.
+
+
+ Attou
+ ellipse temporelle
+ ellipse(s)
+ Nianankoro
+
+
+
+
+ A la rencontre du père
+ Nianankoro quitte l'oncle Djigui au petit jour et doit laisser Attou.
+
+
+ aile du Korê
+ Attou
+ Djigui
+ Nianankoro
+
+
+
+
+ Invocation
+ Nianankoro s'arrête pour se recueillir
+
+
+ aile du Korê
+ espace fermé
+ Nianankoro
+
+
+
+
+
+ Attou veut accompagner Nianankoro.
+
+
+ aile du Korê
+ Attou
+ espace fermé
+ Nianankoro
+
+
+
+
+ Séparation
+ Nianankoro disparait dans le village
+
+
+ aile du Korê
+ espace fermé
+ Nianankoro
+
+
+
+
+
+ Nianankoro arrêté, voit arriver son père et les porteurs du pilon.
+
+
+ aile du Korê
+ ellipse spatiale
+ ellipse(s)
+ gros plan
+ Nianankoro
+
+
+
+
+ L'affrontement
+ Nianankoro s'avance, décidé, vers son père.
+
+
+ aile du Korê
+ espace ouvert
+ Nianankoro
+
+
+
+
+
+
+ gros plans focale longue
+
+
+
+ plan 26
+
+
+
+
+
+
+ plan 113
+
+
+
+
+
+
+ plan 274
+
+
+
+
+
+
+ plan 276
+
+
+
+
+
+
+ plan 277
+
+
+
+
+
+
+ plan 282
+
+
+
+
+
+
+ plan 288
+
+
+
+
+
+
+
+
+ Corps et feu
+
+
+
+ plan 5
+ Le film s'ouvre sur la lumière rougeoyante du feu (le soleil), puis sur le corps d'un animal criant sous les flammes. L'effet de violence est renforcé par la musique et le retour au plan sur le soleil levant. A la musique succède un son strident qui fair le lien avec le plan suivant (plan 5).
+
+
+
+
+
+ plan 54
+ On retoruve ici le corps au travail. Village de forgerons. Gros plan sur le corps au contact du feu.
+
+
+
+
+
+ plan 166
+
+
+
+
+
+
+
+
+ Personnages principaux
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ plan 17
+
+
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère-fils
+
+
+
+ mère-fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère-fils
+
+
+
+ mère-fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ père
+
+
+
+ père
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ mère
+
+
+
+ mère
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+ fils
+
+
+
+ fils
+
+
+
+
+
+
+ Blanc
+
+
+
+ plan 128
+
+
+
+
+
+
+ plan 141
+
+
+
+
+
+
+ plan 380
+
+
+
+ jour
+ petit fils
+
+
+
+
+
+
+ Magie et présages
+
+
+
+ plan 15
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 58
+
+
+
+ magie
+
+
+
+
+ plan 118
+
+
+
+
+
+
+ plan 209
+
+
+
+ père
+
+
+
+
+ plan 228
+
+
+
+
+
+
+ plan 268
+
+
+
+
+
+
+ plan 271
+
+
+
+ jour
+ père
+
+
+
+
+
+
+
+
+
+
+
+ plan 322
+
+
+
+ femme
+ fils
+ jour
+ nuit
+
+
+
+
+ plan 340
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+ plan 358
+
+
+
+
+
+
+
+
+
+
+ fils
+ jour
+ père
+
+
+
+
+ plan 380
+
+
+
+ jour
+ petit fils
+
+
+
+
+ plan 387
+
+
+
+ fils
+ jour
+ père
+
+
+
+
+
+
+ Arrivée au Pays Dogon
+
+
+
+ Au pays Dogon
+ 1er contact : explication quête + désir de purification
+
+
+
+
+
+
+
+ Voyage initiatique
+
+
+
+ départ
+ dernière scène avec la mère
+
+
+
+
+
+ départ
+ don de la pierre
+
+
+
+
+
+ départ
+ Il s'en va
+
+
+
+
+
+ départ
+ Il part.
+
+
+
+
+
+ En chemin
+ Pause avant arrivée 1er village
+
+
+
+
+
+ en chemin
+ rencotre lépoard
+
+
+
+
+
+ en chemin
+ contrechamp léopard, surprise
+
+
+
+
+
+ en chemin
+ prédiction léopard
+
+
+
+
+
+ en chemin
+ sms lépoard
+
+
+
+
+
+ en chemin
+ Gros plan pied sur sol aride
+
+
+
+
+
+ en chemin
+ plan d'ensemble paysage aride solitude avant 1er village
+
+
+
+
+
+ en chemin
+ repère des traces d'eau
+
+
+
+
+
+ chez les Peuls
+ aperçoit qqch
+
+
+
+
+
+ chez les Peuls
+ contrechamp : on l'a vu
+
+
+
+
+
+ chez les Peuls
+ Au milieu du troupeau
+
+
+
+
+
+ chez les Peuls
+ tjs au milieu du troupeau
+
+
+
+
+
+ chez les Peuls
+ 1er contact : "au voleur"
+
+
+
+
+
+ chez les Peuls
+ arrestation + méfiance
+
+
+
+
+
+ chez les Peuls
+ le prisonnier
+
+
+
+
+
+ chez les Peuls
+ Présentation au roi.
+
+
+
+
+
+ chez les Peuls
+ Défense menaçante: je vous massacrais tous" + investi d'une mission
+
+
+
+
+
+ chez les Peuls
+ 1er usage de son pouvoir contre condamnation
+
+
+
+
+
+ chez les Peuls
+ utilise son pouvoir pour aider le village
+
+
+
+
+
+ chez les Peuls
+ Utilisation de son pourvoir sur les abeilles
+
+
+
+
+
+ chez les Peuls
+ La fuite des ennemis
+
+
+
+
+
+ chez les Peuls
+ Déroute finale de l'ennemi grâce au feu
+
+
+
+
+
+ chez les Peuls
+ gros plan feu
+
+
+
+
+
+ chez les Peuls
+ le roi l'implore de rester
+
+
+
+
+
+ chez les Peuls
+ Renonce à rester, évoque sa mission
+
+
+
+
+
+ chez les Peuls
+ 2ème demande du roi : guérir la stérilité de sa femme, 1er contact avec celle qui deviendra son épouse
+
+
+
+
+
+ chez les Peuls
+ Alors, heureuse?
+
+
+
+
+
+ chez les Peuls
+ Aveu adultère
+
+
+
+
+
+ chez les Peuls
+ Aveu 2
+
+
+
+
+
+ chez les Peuls
+ don du chef
+
+
+
+
+
+ chez les Peuls
+ don de la femme
+
+
+
+
+
+ chez les Peuls
+ exhortation à partir
+
+
+
+
+
+ chez les Peuls
+ Le départ into the wild
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Plan d'ensmble paysage montagneux petit matin
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Le couple au matin
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Plan ensemble paysage Jour
+
+
+
+
+
+ En chemin vers le pays Dogon
+ Progression du couple dans paysage escarpé, journée
+
+
+
+
+
+ Au pays Dogon
+ 1er contact : explication quête + désir de purification
+
+
+
+
+
+ Au pays Dogon
+ La purification
+
+
+
+
+
+ Au pays Dogon
+ Purification fille = ordre ; explication origine source
+
+
+
+
+
+ Au pays Dogon
+ Purification femme
+
+
+
+
+
+ Au pays Dogon
+ Tahiti douche
+
+
+
+
+
+ Auprès de l'oncle
+ Révélation de la venue d'un fils et qu'un destin tragique attend Nianankoro + aveu du rôle de sa famille auprès du peuple
+
+
+
+
+
+ Chez l'oncle
+ Gros plan sur le feu : malédiction frappant la famille
+
+
+
+
+
+ chez l'oncle
+ Rituel de la transmission : panoramique sur la vlalée de nuit
+Révélation que la fin est proche
+
+
+
+
+
+ chez l'oncle
+ Annonce de la mutation finale
+
+
+
+
+
+ Chez l'oncle
+ Remise de l'oeil de Koré, l'oncle va chercher l'aile
+
+
+
+
+
+ Chez l'oncle
+ Le pierre est glissée dans son fourreau sur l'aile
+
+
+
+
+
+ chez l'oncle
+ Fin de la quête: aller à la rencontre du père avec l'aile.
+
+
+
+
+
+ en route vers le duel final
+ Détermination à aller au bout de sa quête : il se dévêt, lui confie son vêtement pour son fils
+
+
+
+
+
+ en chemin vers le duel final
+ Plan moyen de Nianankoro
+
+
+
+
+
+ L'arrivée sur le lieu de son destin
+ crossroads
+
+
+
+
+
+ Le duel
+ Duel et disparition
+
+
+
+
+
+ La transmission
+ Arrivée de la femme et du fils
+
+
+
+
+
+ La tranmission
+ Départ du fils avec l'oeuf et le vêtement
+
+
+
+
+
+
+
+ Utilisations de son pouvoir
+
+
+
+ chez les Peuls
+ 1er usage de son pouvoir contre condamnation
+
+
+
+
+
+ chez les Peuls
+ utilise son pouvoir pour aider le village
+
+
+
+
+
+ chez les Peuls
+ Utilisation de son pourvoir sur les abeilles
+
+
+
+
+
+ chez les Peuls
+ La fuite des ennemis
+
+
+
+
+
+ chez les Peuls
+ Déroute finale de l'ennemi grâce au feu
+
+
+
+
+
+ chez les Peuls
+ gros plan feu
+
+
+
+
+
+ chez les Peuls
+ le roi l'implore de rester
+
+
+
+
+
+ chez les Peuls
+ Renonce à rester, évoque sa mission
+
+
+
+
+
+ chez les Peuls
+ 2ème demande du roi : guérir la stérilité de sa femme, 1er contact avec celle qui deviendra son épouse
+
+
+
+
+
+ chez les Peuls
+ Alors, heureuse?
+
+
+
+
+
+
+
+ Corps
+ Comment S. Cissé filme les corps ?
+
+Lien avec les 4 éléments : terre eau feu air
+
+
+ plan 5
+
+
+
+
+
+
+ Mère et fils en départ
+ Les corps sont les points d'appui pour l'échange des regards entre la mère et le fils. Cissé donne du temps aux corps pour se déplacer, se faire face, se regarder, se dire adieu.
+Les deux personnages de retournent l'un vers l'autre.
+Plans 39-40 : Raccord dans l'axe des regards. Cela créé un effet de mouvement qui accentue l'idée du départ et de l'adieu.
+L'enchaînement des plans se fait selon différentes échelles : du plan moyen au plan rapproché, puis du plan rapproché au plan moyen.
+On voit facilement sur lignes de temps le raccourcissement puis l'allongement progressif de la durée des plans entre le début et la fin de cette séquence.
+Lorsque la mère et le fils se sont dit adieu, Cissé ne quitte pas les corps, il enchaîne sur le corps d'une femme au travail, plaçant ainsi ses deux personnages au même niveau qu'une inconnue inscrite dans le paysage. Cette fois, Cissé montre le corps au travail.
+
+
+ femme
+ fils
+ jour
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ plan 96
+
+
+
+ femme
+ jour
+
+
+
+
+ plan 139
+
+
+
+
+
+
+ plan 150
+
+
+
+ mort
+
+
+
+
+ plan 166
+
+
+
+
+
+
+ plan 173
+
+
+
+
+
+
+ plan 226
+
+
+
+ union
+
+
+
+
+ plan 311
+
+
+
+ femme
+ fils
+ jour
+
+
+
+
+
+
+ Mouvement caméra
+
+
+
+ plan 132
+
+
+
+
+
+
+ plan 139
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Piste 4. mère et fils ensemble, mère
+
+
+
+
+
+
+
+
+
+
+
+
+
+