Application Development Tips and Tricks > Snapshots and thumbnails > Thumbnails

 

Thumbnails

Thumbnails are a smaller, discrete version of an original recording. Like snapshots, they provide single-frame representations of recorded video stream. In the snapshot example, you are only sending one frame of data. In this sample, you are playing only the first frame of a recorded stream.

In the previous example, you used the snapShotMilliseconds property of the NetStream.attachVideo object to get a snapshot of your stream. In this sample, you also need to get a one frame picture of a stream. Here, however, you use a call to NetStream.play:

thumbStream.play("myRecording", 0, 0, true)

The first parameter of the NetStream.play method describes what to play, "myRecording"; the second is where to begin on the stream (0 means at the start of a recorded stream); the third, where to end (0 means play only one frame); and the fourth tells the Player to flush any previous play streams. For more information see the NetStream.play entry in the Client-Side Communication ActionScript Dictionary.

In the following client-side ActionScript code in doc_thumbnails.fla, the server records the incoming stream until the user chooses to stop the recording. Then, with the call to thumb_ns.play("myRecording", 0, 0, true), only the first frame of that recording is returned to the client.

#include "NetDebug.as"

// Recording state variable
recState = 0;

// Initialize button label
Record_btn.setLabel("Record");

// Show the recording in a thumbnail
showThumb();

// Connect to the thumbnails app and get connection status 
function doConnect()
{
	client_nc = new NetConnection();
	// If connection is closed, clear the History and the list

	// Handle status message
	client_nc.onStatus = function(info) {
		trace("Level: " + info.level + newline + "Code: " + info.code);
	}

	client_nc.connect("rtmp:/doc_thumbnails/room_01");
}

// Create a stream for recording and getting the thumbnail
function initStreams()
{
	out_ns = new NetStream(client_nc);
	
	out_ns.onStatus = function(info)
	{
		if (info.code == "NetStream.Publish.Success") {
			var description = "You have published.";
			trace(description);
		}
	};

	thumb_ns = new NetStream(client_nc);
}

// Get a camera instance and attach it to the local
// video, Live_video, and the output stream
function initMovie()
{
	client_cam = Camera.get();
	Live_video.attachVideo(client_cam);
	out_ns.attachVideo(client_cam);
}

// Button event handler for publishing and showing the thumbnail
function doRecord()
{
	if (recState == 0) {
		out_ns.publish("myRecording", "record");
		Record_btn.setLabel("Stop");
		recState = 1;
	} else {
		out_ns.publish(false);
		Record_btn.setLabel("Record");
		recState = 0;
		showThumb();
	}
}

// Show the thumbnail by attaching the stream to the ThumbView_vc
// video object and playing it
function showThumb()
{
	ThumbView_vc.attachVideo(thumb_ns);
	thumb_ns.play("myRecording", 0, 0, true);
}

// Connect to the server
doConnect();

// Initialize the streams
initStreams();

// Initialize the movie
initMovie();