2010-08-13 12 views
2

J'ai ce film d'une minute que je veux compiler dans un projet AS3. Le film a commencé au format MOV, j'ai donc utilisé FFMpeg pour le convertir en FLV, puis à nouveau avec FFMpeg de FLV à SWF.AS3 - La vidéo SWF intégrée montre totalFrames == 0

J'intégrer ce film dans le binaire AS3 en utilisant Embed métadonnées:

 
[Embed(source="1.swf")] 
private var _Vid:Class; 

J'ai un conteneur Sprite que ce film est ajouté à. Avant qu'il ne soit ajouté, je jetai le film embarqué comme MovieClip:

 
var vid:Object = new _Vid(); 
return vid as MovieClip; 

Quand j'ajoute le clip vidéo obtenu à l'étape, il commence à jouer immédiatement et semble jouer très bien. Toutefois, lorsque je vérifie la propriété totalFrames du clip, il renvoie 0. Et le clip ne semble pas répondre aux appels stop ou gotoAndStop. J'obtiens le même comportement en intégrant le film dans un fichier SWF dans l'IDE Flash, puis en incorporant le résultat de la même manière, il semble donc que quelque chose ne va pas avec la façon dont je l'ajoute à la scène. Des pensées?

EDIT: En tant qu'exigence du produit, le film as3 ne peut pas charger la vidéo à partir d'un fichier externe. Il doit être compilé, de sorte que le fichier .swf qui en résulte puisse fonctionner complètement seul sans avoir à compter sur d'autres fichiers externes.

EDIT 2: Après vérification, l'instance MovieClip qui résulte de:

 
[Embed(source="1.swf")] 
private var _Vid:Class; 
 
var vid:Object = new _Vid(); 
return vid as MovieClip; 

a un objet enfant qui est de chargeur de classe, et que l'enfant n'a pas d'enfant. J'ai essayé de lancer l'enfant directement en MovieClip mais en vain.

EDIT 3: D'après ce que je lis here et here, l'API 10.1 pour l'objet NetStream expose une méthode appelée appendBytes. J'ai encore besoin de regarder plus loin dans cela, mais je pourrais incorporer le fichier .flv comme un flux d'octets et nourrir les octets manuellement à l'objet Net Stream pour lire la vidéo. Je vais poster le résultat de mes tests dans quelques ...

Répondre

3

I a fini par enrobage de la vidéo sous forme de données binaires:

 
[Embed(source="1004.flv", mimeType="application/octet-stream")] 

Ensuite, en utilisant NetStream.appendBytes() pour alimenter la vidéo à un NetStream qui est relié à un objet Video. Cela fonctionne magnifiquement, et le NetStream peut être mis en pause et rejoué.

1

Vérifiez ces tutoriels

http://gotoandlearn.com/play.php?id=46

http://gotoandlearn.com/play.php?id=129

Je pense que si la vidéo est imbriquer dans une MovieClip que vous avez fait Le seul comportement auquel vous pouvez vous attendre est ce que vous obtenez en ce moment. Il jouera mais vous n'aurez aucun contrôle dessus.

Pourquoi insistez-vous pour l'intégrer? Cela agrandira votre fichier et la vidéo ne sera pas lue tant que le swf ne sera pas complètement chargé. C'est une courte vidéo mais cela prendra encore beaucoup plus de temps que d'y accéder via un téléchargement progressif.

Certes, le deuxième tutoriel n'a pas beaucoup de pertinence, mais pourquoi ne pas l'ajouter, il vous donne plus de portée sur la façon de traiter avec les médias dans Flash. OSMF est un nouveau cadre et je pense qu'il est logique de le savoir.

+0

Aucun de ces tutoriels ne parle de l'intégration d'un fichier vidéo, ce que j'ai clairement inclus dans ma question. Ceci est une exigence du produit ... la vidéo ne peut pas être téléchargée à partir d'un emplacement réseau. – jtrim

+0

Je vous trouve un peu rapide sur le front négatif. il semble que vous n'ayez même pas pris la peine de regarder le premier tutoriel où Lee Brimelow déclare clairement dès le début que la vidéo qu'il utilise est sur son bureau, pas un emplacement réseau !!! Maintenant, si vous ne comprenez pas un tutoriel, blâmez-vous pas moi. Heureusement, la plupart des gens ici ne vous ressemblent pas! N'évacuez pas votre frustration sur ceux qui essaient de vous aider. Essaie juste d'apprendre comme nous l'avons tous fait ici. mon conseil, détendez-vous, reculer et regarder le tutoriel une fois de plus, quand vous l'avez enfin, il suffit de se débarrasser de ce négatif et de marquer votre question comme une réponse. – PatrickS

+0

En fait, j'ai pris la peine de regarder les deux tutoriels en détail. L'auteur de la première vidéo dit le mot "incorporé" dans la vidéo, mais il n'est pas incorporé dans le sens où le fichier vidéo est réellement compilé dans le fichier .swf résultant. Notez la balise de métadonnées [Embed] dans ma question initiale. Votre réponse était complètement hors de propos - d'où le -1. Rien de personnel, votre réponse est juste sans rapport avec ma question. – jtrim