Recently I wanted to create a player to show a Caiman, Scarlet Macaw, and other animals from Costa Rica. The default players that could be used with Brightcove didn't look quite right for what I wanted to do, and so I had my first real need to use BEML for a custom player.
BEML is the XML syntax that's used to create a template that's used to create a Brightcove player. The BEML syntax will look familiar to Flex users, as there is a Canvas, VBox, HBox, Label, and many other similar components. One big difference with BEML is that it is interpreted at runtime, which means it's a bit simpler in it's language constructs, but this allows Brightcove to provide quick previews and good caching of players.
The player I wanted to create needed to display a long description below the video. None of the default templates had a really large place for text, but it looked to me like one of the existing templates could be altered for my use. So I went went into the publishing module, clicked on All Templates, and then clicked on Duplicate for the Compact Tabbed Navigation 3.0 template.
I then saw the BEML for the copied template, which I could then alter.
I first changed the height in the BEML so that the player would be taller. I didn't know exactly how much long description space I would need on the bottom, so it's probably too large, but that doesn't matter if the player is only being viewed on its own page. To change the height, I changed:
to:
I decided I would use the Long Description field for each video, which can be edited in the media module, to display the text that I wanted. So I replaced the existing reference to the Short Description in the BEML to refer to where I what I would really edit for each video. I changed:
to:
The last change I made, and the most important change, was to remove the existing XML for the template that was below the video. I only wanted the title, long description, and link in this spot. So I changed:
to:
With the BEML changes made, I could preview and see that I had the template that I wanted.
I played around with the BEML for awhile, but the whole process still took less than an hour. It was a lot more time consuming to edit the videos and come up with the descriptions. After the template was created, I created a player from the template, made all the changes in the media module for the videos, and saw the results of my work.
I had fun creating the player, which was some good eating of dog food. If you'd like to learn more about BEML, I would start at Customizing Players with BEML in the Brightcove documentation. And if you'd like to see me almost step on a poisonous snake, you can look here.
Update: check out Jeremy Allaire's post for more details on BEML.
Update2:Here's the full BEML from my example:
BEML is the XML syntax that's used to create a template that's used to create a Brightcove player. The BEML syntax will look familiar to Flex users, as there is a Canvas, VBox, HBox, Label, and many other similar components. One big difference with BEML is that it is interpreted at runtime, which means it's a bit simpler in it's language constructs, but this allows Brightcove to provide quick previews and good caching of players.
The player I wanted to create needed to display a long description below the video. None of the default templates had a really large place for text, but it looked to me like one of the existing templates could be altered for my use. So I went went into the publishing module, clicked on All Templates, and then clicked on Duplicate for the Compact Tabbed Navigation 3.0 template.
I then saw the BEML for the copied template, which I could then alter.
I first changed the height in the BEML so that the player would be taller. I didn't know exactly how much long description space I would need on the bottom, so it's probably too large, but that doesn't matter if the player is only being viewed on its own page. To change the height, I changed:
<Layout id="application" width="798" height="603" boxType="vbox" padding="6" gutter="4">
to:
<Layout id="application" width="798" height="703" boxType="vbox" padding="6" gutter="4">
I decided I would use the Long Description field for each video, which can be edited in the media module, to display the text that I wanted. So I replaced the existing reference to the Short Description in the BEML to refer to where I what I would really edit for each video. I changed:
<Label height="52" multiline="true" text="{currentItem.shortDescription}" truncate="true"/>
to:
<Label height="52" multiline="true" text="{currentItem.longDescription}" truncate="true"/>
The last change I made, and the most important change, was to remove the existing XML for the template that was below the video. I only wanted the title, long description, and link in this spot. So I changed:
<VBox gutter="15"> ... skipping the XML in here, which includes a TitleLabel, Link, ExpandingBanner, and much more </VBox>
to:
<VBox> <TitleLabel height="24" width="765" id="videoTitle" text="{videoPlayer.video.displayName}" selected="true" size="18" truncate="true"/> <Label height="88" width="765" multiline="true" id="longDesc" text="{videoPlayer.video.longDescription}" size="18" truncate="true"/> <Canvas> <Link x="1" y="-5" size="10" id="relatedLink" text="{videoPlayer.video.linkText}" vAlign="bottom" url="{videoPlayer.video.linkURL}"/> </Canvas> </VBox>
With the BEML changes made, I could preview and see that I had the template that I wanted.
I played around with the BEML for awhile, but the whole process still took less than an hour. It was a lot more time consuming to edit the videos and come up with the descriptions. After the template was created, I created a player from the template, made all the changes in the media module for the videos, and saw the results of my work.
I had fun creating the player, which was some good eating of dog food. If you'd like to learn more about BEML, I would start at Customizing Players with BEML in the Brightcove documentation. And if you'd like to see me almost step on a poisonous snake, you can look here.
Update: check out Jeremy Allaire's post for more details on BEML.
Update2:Here's the full BEML from my example:
<Runtime> <Theme name="Deluxe" style="Light"> <Style id="default"><![CDATA[.titleText {fontSize: 12;} .bodyText {fontSize: 10;}.linkText {fontSize: 10;}]]></Style> </Theme> <Layout id="application" width="798" height="723" boxType="vbox" padding="6" gutter="4"> <HBox height="40" vAlign="bottom" gutter="9"> <Image id="logo" width="300" scaleMode="scaleDown" hAlign="left" vAlign="bottom"/> <TabBar id="playlistTabs" height="22" tabAlign="right" hideSingleTab="true"/> </HBox> <HBox height="406" gutter="6"> <VideoPlayer id="videoPlayer" width="480" video="{videoList.selectedItem}"/> <List id="videoList" rowHeight="78" automaticAdvance="true" data="{playlistTabs.selectedItem.videoDTOs}" selectOnClick="true" itemInsetV="4" itemLeading="2"> <ListItem boxType="hbox"> <Spacer width="8"/> <VBox width="80" height="74" vAlign="middle"> <ThumbnailButton height="60" data="{currentItem}" source="{currentItem.thumbnailURL}"/> </VBox> <Spacer width="7"/> <VBox> <Spacer height="3"/> <TitleLabel height="18" text="{currentItem.displayName}" truncate="true"/> <Label height="52" multiline="true" text="{currentItem.longDescription}" truncate="true"/> </VBox> <Spacer width="3"/> </ListItem> </List> </HBox> <VBox gutter="15"> <HBox height="102"> <Spacer width="6"/> <VBox> <TitleLabel height="24" width="765" id="videoTitle" text="{videoPlayer.video.displayName}" selected="true" size="18" truncate="true"/> <Label height="72" width="765" multiline="true" id="longDesc" text="{videoPlayer.video.longDescription}" size="18" truncate="true"/> <Canvas> <Link x="1" y="-5" size="10" id="relatedLink" text="{videoPlayer.video.linkText}" vAlign="bottom" url="{videoPlayer.video.linkURL}"/> </Canvas> </VBox> </HBox> </VBox> </Layout> </Runtime>
Comments (3)
Great job! Do you have the BEML for this player? I am trying to do something very similar. Thanks!
Posted by Jon | February 24, 2010 4:07 PM
Posted on February 24, 2010 16:07
Hi Jon, I added the full BEML to the bottom of the post. I hope that helps!
Posted by Brian Deitte | February 25, 2010 7:28 PM
Posted on February 25, 2010 19:28
Hai,
I am new to bright-cove, my Question is,I already have a video player in Flash,i need vast support for this, so i decide to use bright-cove BEML. it is possible to add BEML dynamically to my player.
if it possible means how are start with bright-cove. i need help.i read various documents but i am not clear with this.thanks in advance. i am waiting for the replay from your's
Thank you
-Shan
Posted by Shankar | January 4, 2011 1:31 AM
Posted on January 4, 2011 01:31