"Find a file" MPEGFile isFileValidMPEG: 'randomalien.mpg'. "Explore the file" | foo | foo _ MPEGFile openFile: 'randomalien.mpg'. foo hasVideo. foo hasAudio. foo endOfVideo: 0. foo endOfAudio: 0. foo audioChannels: 0. foo audioSamples: 0. foo audioGetSample: 0. foo audioSampleRate: 0. foo videoFrameRate: 0. foo videoGetFrame: 0. foo audioGetSample: 0. foo getTimeCode. foo videoPreviousFrame: 0. foo videoSetCPUs: 1. foo videoSetFrame: 44 stream: 0. foo setMMX: true. foo audioSetSample: 44 stream: 0. foo totalAudioStreams. foo totalVideoStreams. foo videoFrames: 0. foo videoFrameHeight: 0. foo videoFrameWidth: 0. foo seekPercentage: 0.5. foo getPercentage. foo videoSetCPUs: 1. foo setMMX: true. foo closeFile. ----------------------------------- "Simply get the video start at 700 and run 50 frames then debug" "Better code is in the player, don't use this code, but it's an example" | foo x y counter fum | foo _ MPEGFile openFile: 'randomalien.mpg'. stream _ 0. counter _ 0. y _ foo videoFrameHeight: stream. x _ foo videoFrameWidth: stream. fum _ Form extent: x@y depth: 32. frames _ foo videoFrames: stream. foo videoSetFrame: 700 stream: stream. [foo endOfVideo: stream] whileFalse: [foo videoReadNextFrameInto: fum bits width: fum width height: fum height stream: stream. fum displayOn: Display. (counter _ counter + 1) == 50 ifTrue: [self halt]]. foo closeFile. ----------------------------------- "Play the audio" "There is more than one way to do this" "This is my first technically correct try" "DO not use this code, better code is in the player" | foo buffer sound soundOther | foo _ MPEGFile openFile: 'randomalien.mpg'. channels _ foo audioChannels: 0. sampleRate _ foo audioSampleRate: 0. totalSamples _ foo audioSamples: 0. buffer _ ByteArray new: 1024*1024*1. SoundPlayer startPlayerProcessBufferSize: 8192 rate: sampleRate stereo: true. result _ foo audioReadBuffer: buffer stream: 0 channel: 0 samples: 1024*1024//2. sound _ SampledSound samples: (SampledSound convertBytesTo16BitSamples: buffer mostSignificantByteFirst: true) samplingRate: sampleRate. result _ foo audioReReadBuffer: buffer stream: 0 channel: 1 samples: 1024*1024//2. soundOther _ SampledSound samples: (SampledSound convertBytesTo16BitSamples: buffer mostSignificantByteFirst: true) samplingRate: sampleRate. sound _ MixedSound new add: sound pan: 0; add: soundOther pan: 1.0. sound play ----------------------------------- "Ok make it simple for Audio" | foo | form _ Form extent: 320@240 depth: 16. foo _ MPEGPlayer playFile: 'randomAlien.mpg' onForm: form. foo playAudioStreamWaitTilDone: 0. ----------------------------------- "Ok make it simple for Video" | foo | form _ Form extent: 320@240 depth: 32. foo _ MPEGPlayer playFile: 'randomAlien.mpg' onForm: form. foo playVideoStreamWaitTilDone: 0. ----------------------------------- "Play the video in the background" | foo | form _ Form extent: 320@240 depth: 16. foo _ MPEGPlayer playFile: 'randomAlien.mpg' onForm: form. foo playVideoStream: 0. foo inspect. ----------------------------------- "Play both in the background" | foo | form _ Form extent: 320@240 depth: 16. foo _ MPEGPlayer playFile: 'randomAlien.mpg' onForm: form. foo playStream: 0. foo inspect. ------------------------- " In Morphic do " | foo | form _ Form extent: 320@240 depth: 32. morph _ SketchMorph withForm: form. morph openInWorld. foo _ MPEGPlayer playFile: 'randomAlien.mpg' onMorph: morph. foo morph: morph. foo playStream: 0. foo inspect.