Sunday, May 26, 2013

Webcasting Using Flash media Live Encoder


For the world of Flash video, the year 2007 opened with a bang when Adobe released Flash Media Live Encoder. Adding Flash Media Live Encoder to Adobe's product line makes Flash video web broadcasts of live events even easier and of the highest supported quality. Best of all, Flash Media Live Encoder is free to Flash Media Server licensees or users with Flash Video Streaming Service accounts.
This article provides a quick overview of how to set up a live webcast using Flash Media Live Encoder and Flash Media Server.

Overview of Flash Media Live Encoder

Since its inception, Flash Media Server has supported live video and audio streaming. Now adding Flash Media Live Encoder for encoding live web broadcasts offers two important benefits: the highest quality video supported, and quicker, easier deployment.
Flash Media Live Encoder directly delivers the highest quality supported video by using On2 VP6 encoding. Previously, this was only possible through the use of third-party solutions. Flash Media Live Encoder provides quicker, easier deployment by being a fully featured acquisition and encoding application that natively integrates with Flash Media Server. Previously, the acquisition and encoding functionality had to be custom-coded using the Flash authoring tool.
This article provides a basic overview of using Flash Media Server, Flash Media Live Encoder, and either Flash CS3 Professional or Dreamweaver CS3 to create a live web broadcasting application. Figure 1 presents each of these in context with the other elements of a basic live broadcast.
Live web broadcast using Flash Media Live Encoder
Figure 1. Live web broadcast using Flash Media Live Encoder
The elements of the basic live broadcast illustrated in Figure 1 are as follows:
  • Live event: The subject to be broadcast—business, educational, or political speakers, performers, sporting events, or any other event.
  • Audio/video capture: Cameras and/or microphones connected to the computer running Flash Media Live Encoder.
  • Onsite encoding: Encoding provided using Flash Media Live Encoder on a computer with a reliable Internet connection.
  • Internet: Liaison between computers running Flash Media Server, Flash Media Live Encoder, a web server hosting the playback SWF file, and the audience's computers.
  • Flash Media Server or Flash Video Streaming Service servers: Flash Media Server (FMS) provides delivery of the video and audio streams using load balancing, failover, redundancy, and clustering via an origin/edge architecture. The Flash Video Streaming Service (FVSS) is provided through leading content delivery network (CDN) providers. FVSS provides an alternative to owning and operating your own FMS servers.
  • Web server: Simple HTTP server hosting the Flash SWF file that is downloaded by the audience's computers to receive the webcast event. Only a single playback SWF file is required.
  • Audience: Internet-connected event audience viewing the event using Flash Player to play the playback SWF file.
The following sections step you through configuring Flash Media Server using Flash Media Live Encoder, and creating a playback SWF file.

Configuring Flash Media Server

Flash Media Server offers a unique combination of traditional scalable streaming media capabilities and a flexible development environment for creating and delivering innovative, interactive media applications to the broadest possible audience. This article focuses solely on Flash Media Server's live streaming capabilities.
This article assumes that you have Flash Media Server installed and running locally. The application setup is the same whether the server is running locally or remotely. You can use any version of Flash Media Server for this task, including thefree Developer Edition.
If you do not already have Flash Media Server installed, download it and follow the documentation to install it. To see a video tutorial covering the installation of Flash Media Server 2 on Windows as well as Linux, check out Train Simple videos: Introduction to Flash Media Server 2 in the Flash Media Server Developer Center.
To create a Flash Media Server application for your live video stream, do the following:
  1. Go to the directory [Flash Media Server install directory]\Applications
  2. In the Applications directory, make a subdirectory called myLiveApp.

    Note: Make sure that there are no typos in your subdirectory name. Hereafter, this subdirectory name is your Flash Media Server application name, and it will be referred to both in configuring the Flash Media Live Encoder and in authoring your playback SWF file. The spelling in each case must match exactly.
  3. Copy main.asc into the \Applications\myLiveApp directory. A version of main.asc is provided with Dreamweaver CS3. For Flash CS3 Professional users, extract the main.asc file contained in the Samples.zip file linked to at thebeginning of this article.
    For Dreamweaver users, the required main.asc file can be found in the following Dreamweaver directory:
    [drive]:\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\Templates\Video_Player
    If you are still using Flash Professional 8, you can find the required main.asc file here:
    [drive]:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\Components\FLVPlayback
    Note: These versions of main.asc contain logic required by components that you will be using to author the playback SWF file in a later section. In Flash Media Server, files with .asc extensions denote files that contain server-side ActionScript logic.
  4. Whichever version of main.asc you use, open it and examine its contents. Look for the application.onConnectfunction. You may find the line p_client.writeAccess, which prevents live streaming from happening by default. If you see it, be sure to comment out this line as follows:
application.onConnect = function(p_client, p_autoSenseBW) { //Add security here //p_client.writeAccess = ""; // prevents creating shared object or live streams. this.acceptConnection(p_client); if (p_autoSenseBW) this.calculateClientBw(p_client); else p_client.call("onBWDone"); }
That's all the setup required of you on the server side. Before proceeding to the next section, make sure that Flash Media Server is running.

Using Flash Media Live Encoder

Flash Media Live Encoder is designed to enable live event producers to capture audio and video and stream it live to Flash Media Server or the FVSS.
The intuitive user interface of Flash Media Live Encoder works seamlessly with plug-and-play cameras and microphones, and compatible analog-to-digital converters. Flash Media Live Encoder produces live Flash video with On2 VP6 encoding, delivering high-quality footage with size and bit rate flexibility. You also get full audio control with the bit-rate efficient Nellymoser audio codec.
Flash Media Live Encoder installs just like a regular desktop application. Currently Flash Media Live Encoder is available only for Windows XP. To make sure that your computer can run Flash Media Live Encoder, review the system requirements.

Understanding the Flash Media Live Encoder interface

To help you get oriented to the Flash Media Live Encoder interface, Figure 2 highlights the Flash Media Live Encoder's main sections.
Overview of the Flash Media Live Encoder interface
Figure 2. Overview of the Flash Media Live Encoder interface
Following is a key with descriptions for the numbered sections in Figure 2:
  1. Menus
  2. Preview displays: input (left) and output (right)
  3. Control panel: preset selector, video encoding settings, audio encoding settings, and output settings (not shown output metadata and encoding log)
  4. Control buttons: start and stop
Note: For a full description of all Flash Media Live Encoder's features, review the in-product help. You can access the help from the main menu by selecting Help > Flash Media Live Encoder Help.

Sending your first live stream from Flash Media Live Encoder to Flash Media Server

To configure Flash Media Live Encoder to send your first live stream:
  1. Hook up a video source to the computer that Flash Media Live Encoder will be running on.
  2. Launch Flash Media Live Encoder.
  3. From the Preset Selector, select the setting for Medium Bandwidth (300 kbps).
  4. In the Video area, from the Device selector, ensure that the video source that you would like to use is both displayed and selected. Also ensure that the Video option is checked.
  5. In the Output area, set the following options to the values indicated (accepting the defaults on the other values should be fine):
    • Stream to Flash Media Server: Selected
    • FMS URL: rtmp://localhost/myLiveApp/instance1
      Make sure that there are no typos in your FMS URL. This URL is specifying the real-time messaging protocol, followed by host name (localhost), application name (myLiveApp), and creating an instance name (instance1). In the next section, when you create playback SWF files, you will reference this URL and must match the spelling exactly.
      Tip: If your Flash Media Server is on a server other than localhost, update the FMS URL here accordingly, along with all following instructions referencing localhost.
    • Stream Name: mylivestream
      Note: Ensure that there are no typos in your stream name. In the next section when you create playback SWF files, you will reference this stream and must match the spelling exactly.
    • Save to File: Deselected
  6. In the Output area, click the Connect button.
    Note: If an error is returned, double-check all the previous steps in both this section and in the prior section.
  7. Click the Start button along the bottom to start encoding.
At this point your stream is live! Now all you need is an audience.
The next section covers creating a playback SWF file you can publish on your website that your audience can download to connect to the live stream. Before proceeding to the next section, however, make sure that Flash Media Live Encoder is started and streaming.

Creating a playback SWF file to embed in your web page: Using Dreamweaver CS3

A key to the power of using Flash video for your live events is the ubiquity of Adobe Flash Player, one of the most widely installed pieces of software in the world.
You have several options for creating Flash playback SWF files so your audience can view live broadcasts from Flash Media Live Encoder and Flash Media Server. This article looks at two: using Dreamweaver CS3 and using Flash CS3 Professional with the FLVPlayback component.
Note: When you test the playback SWF files, if everything is working correctly, the video being streamed by Flash Media Live Encoder should appear almost immediately. If the video being streamed does not appear within 15 or 30 seconds, double-check all the steps for creating the playback SWF file and the steps in the prior sections on Flash Media Server and Flash Media Live Encoder. If the video still does not appear, the layer behind it (if any) will show through. This is true if either Flash Media Server or Flash Media Live Encoder are not started. This is also true if there is any error in configuring the FLVPlayback component at author time.
The Flash video component in Dreamweaver CS3 helps you easily insert and display Flash video in your websites. It's great for Dreamweaver users who are not familiar with Flash because you can insert Flash video into your web pages without using the Flash authoring tool.
To use Dreamweaver CS3 to create a playback SWF file for your audience to use to view the live stream being published from the Flash Media Live Encoder:
  1. Launch Dreamweaver CS3.
  2. Create a new basic HTML file. Save the new file as myLiveVideo.htm in a directory containing no other files.
  3. To launch the Insert Flash Video dialog box, from the main menu select Insert > Media > Flash Video. The Insert Flash Video dialog box will open.
  4. In the Insert Flash Video dialog box, from the Video type pop-up menu at the top, select Streaming Video. The appearance of the Insert Flash Video dialog box changes as shown in Figure 3.
Insert Flash Video dialog box in Dreamweaver CS3
Figure 3. Insert Flash Video dialog box in Dreamweaver CS3
  1. In the Insert Flash Video dialog box, set the following options to the values indicated (accepting the defaults on the other values should be fine):
    • Server URI: rtmp://localhost/myLiveApp/instance1
    • Stream name: mylivestream
    • Skin: Halo Skin 3
    • Width: 320
    • Height: 240
    • Live video feed: Checked
    Note: Make sure there are no typos in the values in either your Server URI or stream name. These values must exactly match values previously set in configuring both Flash Media Server and Flash Media Live Encoder.
  2. Click OK.
  3. Save the file with your changes. From the menu, select File > Preview in Browser. When your HTML page opens, you should see the live stream.
You can now customize your HTML page as your requirements demand and publish the resulting files to your website. In addition to myLiveVideo.htm, your directory now contains two SWF files and a copy of main.asc. When publishing to your website, you must copy the HTML and SWF files together!
Regarding the main.asc file, for this article you copied a duplicate of main.asc earlier in the section on configuring Flash Media Server. When you publish to a production server, the contents of this main.asc file must be included in the main.asc file in the application directory on your production server.
Note: If there already is a main.asc file on your production server, be sure to check with your Flash Media Server administrator before possibly overwriting any existing main.asc file.

Creating a playback SWF file to embed in your web page: Using Flash CS3 Professional

Flash CS3 Professional includes the FLVPlayback component, which makes it easy to insert and display Flash video in your websites. Flash CS3 includes both ActionScript 2.0 and ActionScript 3.0 versions of FLVPlayback. The ActionScript 2.0 version is the same FLVPlayback component that shipped with Flash Professional 8. The ActionScript 3.0 version is new with Flash CS3 Professional and includes support for Flash Player 9 features such as full-screen video on playback. For users who are familiar with the Flash CS3 authoring tool, the FLVPlayback components enable you to use Flash video with minimal or no ActionScript code.
Here I cover creating a playback SWF file with both the ActionScript 2.0 and ActionScript 3.0 versions of the FLVPlayback components.

Using Flash CS3 with the ActionScript 2.0 FLVPlayback component

Here's how you use Flash CS3 and the ActionScript 2.0 FLVPlayback component to create a playback SWF file for the live stream being published from the Flash Media Live Encoder:
  1. Launch Flash CS3.
  2. From the main menu, choose File > New > Flash File (ActionScript 2.0).
  3. Save the new file as myLiveVideoAS2.fla.
  4. On the Components panel, expand the Video group and drag an instance of the FLVPlayback component to the Stage.
  5. Select the instance of the FLVPlayback now on the Stage and open the Component Inspector panel. Figure 4 shows the Component Inspector panel after completing the next step.
Parameters tab of the Flash ActionScript 2.0 FLVPlayback component inspector
Figure 4. Parameters tab of the Flash ActionScript 2.0 FLVPlayback component inspector
  1. In the Component Inspector panel, set the following options to the values indicated (accepting the defaults on the other values should be fine):
    • contentPath: rtmp://localhost/myLiveApp/instance1/mylivestream
      Note: When entering the contentPath value, the Content Path dialog box shown in Figure 5 will open. In the dialog box, deselect both options.
Component inspector's Content Path dialog box
Figure 5. Component inspector's Content Path dialog box
  • isLive: true
  • skin: ClearExternalPlayMute.swf
  1. Test-publish your SWF file. You should see the live stream.
  2. Publish the SWF file and embed it in your web page.
You can now customize your SWF file as your requirements demand, embed it in an HTML page, and publish the resulting files to your website.

Using Flash CS3 with the ActionScript 3.0 FLVPlayback component

To use Flash CS3 and the ActionScript 3 FLVPlayback component to create a playback SWF file for the live stream being published from the Flash Media Live Encoder:
  1. Launch Adobe Flash CS3.
  2. From the main menu, choose File > New > Flash File (ActionScript 3.0).
  3. Save the new file as myLiveVideoAS3.fla.
  4. On the Components panel, expand the Video group and drag an instance of the FLVPlayback component to the Stage.
  5. Select the instance of the FLVPlayback now on the Stage and, in the Properties panel, assign it the instance namemyFLVPlayback.
  6. Again, select the instance of the FLVPlayback on the Stage. This time open the Component Inspector panel. Figure 6 shows the Component Inspector panel after completing the next step.
Parameters tab of the Flash ActionScript 3.0 FLVPlayback component inspector
Figure 6. Parameters tab of the Flash ActionScript 3.0 FLVPlayback component inspector
  1. In the Component Inspector panel, set the following options to the values indicated (accepting the defaults on the other values should be fine):
    • skin: SkinUnderPlayFullscreen.swf
    • source: rtmp://localhost/myLiveApp/instance1/mylivestream
    Note: When entering the contentPath value, the Content Path dialog box shown in Figure 7 will open. In the dialog box, deselect both options.
Component inspector's Content Path dialog box
Figure 7. Component inspector's Content Path dialog box
  1. Select Frame 1 and open the Actions panel. Enter the following:
    myFLVPlayback.isLive=true;
  2. Test publish your SWF file. You should see the live stream.
  3. When testing the playback SWF file, the button in the bottom right of the controls will take it full-screen. To cancel full-screen and return to the original size, press Escape.
  4. Publish the SWF file and embed it into your web page.
You can now customize your SWF file as your requirements demand, embed it in an HTML page, and publish the resulting files to your website.
Note: The ActionScript 3.0 FLVPlayback component supports a degree of styling through the properties skinBackgroundColor and skinBackgroundAlpha.

Where to go from here

This article demonstrates how easy it is to add live video to websites using Flash Media Server, Flash Media Live Encoder, and a playback SWF file authored in either Dreamweaver CS3 or Flash CS3 Professional.
If you are interested in going beyond single-camera webcasts, see Kevin Towes' article on Building a live video switcher with Flash Communication Server MX. (Flash Media Server was previously known as Flash Communication Server MX.)
If you are interested in customizing the Flash ActionScript 2.0 FLVPlayback component, read Creating custom video controller skins for the Flash video component in Dreamweaver 8 by Jen deHaan and also Customizing the FLVPlayback component by Dan Carr. To customize the latest Flash video controllers and provide unique user interfaces for navigating through movie content, check out Dan Carr's article, Skinning the ActionScript 3.0 FLVPlayback component.
If you are interested in either authoring a custom playback SWF file (that is, not using the FLVPlayback component) or—for live webcasts—using the acquisition and encoding functionality built into the Flash Player (that is, not using Flash Media Live Encoder), see Stefan Richter's article, Building a simple live video broadcaster and receiver.
Note: The acquisition and encoding functionality built into Flash Player encodes video using the Sorenson Spark codec. The quality of video encoded using the Sorenson Spark codec is generally considered not to be of the same quality as video encoded using the On2 VP6 codec. You can see side-by-side comparisons of recorded video encoded using the two codecs at FlashVideoFAQ.com. Playback SWF files can mix streams encoded using both codecs. You can also learn about comparing different encoding software to find what's most appropriate for your Flash video needs in Elliot Mebane's article, Selecting a Flash video encoder.
Here are some additional resources for studying Flash Media Server:

Webcasting- Basics


There are many important aspects that go into streaming a live broadcast. I often have people asking: “Which settings should I use to broadcast a high-quality Flash stream?” Seems like a reasonable question but there are so many variables involved that it’s impossible for me to give a simple answer. My goal here is to explain all of the different factors involved and hopefully give you the knowledge necessary to start Wirecasting like a pro.
First, I’ll briefly go over the major elements involved in live webcasting, then I’ll go more into more detail on each. These are the most important things to keep in mind:
1)    Hardware – Obviously, a better machine will be able to handle higher-quality streams.
2)    Bandwidth – If you’re broadcasting from a standard DSL connection, you need to make sure you don’t exceed your uploading bandwidth.
3)    Broadcast Settings – Higher quality video streams are taxing on your system and require more upload bandwidth.
4)    Multiple Streams – If you’re streaming multiple streams simultaneously, this is going to increase the amount of work your machine has to do.
5)    Inputs – Your video source can impact your stream in many different ways. Live sources, in particular, can dramatically impact the performance of your broadcast.
6)    Codecs – Some codecs are more efficient than others and they do have limitations to what they can handle.  Sometimes you can overload the limitations your video codec and start dropping frames on an otherwise ideal recording.
Hardware
Remember, Wirecast webcasting software is a type of video encoder.
Remember, Wirecast webcasting software is a type of video encoder. For most people, it wouldn’t be surprising if it took a long time to encode a full 1920×1080 HD video on your desktop computer. Still, people seem surprised that Wirecast starts dropping frames when they’re broadcasting at the same resolution!
Wirecast goes through a process called compositing where it decodes all the separate inputs (movies, images, live cameras, etc.), layers them together, then re-encodes them on their way to each destination. That’s a lot of work considering it has to do it at least as fast as real time encoding. If your machine can’t keep up with the quality of your broadcast, Wirecast will start dropping your frame rate to compensate. If you’re just starting to drop frames, you can sometimes get away with it without it being too noticeable but if it starts dipping too low it will become very obviously choppy.
If you’re planning on doing lots of big streams you’re going to need a powerful CPU. Think in terms of multiple cores, not just CPU speed; an eight core i7 will beat your Core 2 Duo and a decent graphics card. In the highly unlikely situation that you are hitting a bottleneck in your record to disk, you may need to upgrade to a RAID hard drive setup or lay down the cash for an SSD.
Bandwidth
There are several different ways that you can broadcast to the web. You can do it yourself (via QuickTime Streaming ServerFlash Streaming Server, etc.), you can use a community streaming website (Ustream,LivestreamJustin.tv, etc.) or you can use a content distribution network or CDN (LimelightAkamai, etc.).
If you’re broadcasting to a community streaming site, you may run into bandwidth restrictions. If your stream is refused for no apparent reason, I would check to make sure that you haven’t exceeded the data rate limitations for that site. This can also cause problems with random disconnects because the data rate fluctuates and the server may kill your stream when your data rate peaks.
If you’re hosting the streaming server yourself then you have to be careful about how many people connect to your stream. This is less of an issue if you are only broadcasting within a local area network but if you’re streaming to the web, you have to be able to manage the data rate for each individual connection to your stream. If you don’t have enough upload bandwidth then people will start losing quality and getting disconnects. Also, make sure that nobody else on your network is using upload bandwidth. This can be a major issue when streaming from a corporate network where there are lots of users sharing the bandwidth. Still, using a streaming server is the best choice for streaming across a LAN or VPN, assuming you know about how many people will be connecting.
Using a CDN is good way to go for streaming to the web. You can embed the videos directly in your website and don’t have to worry about advertisements in your video. Plus, the only restriction will be your upload bandwidth for a single stream which will be reproduced by the CDN for each person who connects. However, they can be prohibitively expensive for individuals or broadcasters working on a tight budget.
Broadcast Settings
Obviously, the quality of stream you are sending out will affect your performance. Let’s say for example that you found the perfect data rate for streaming 320×180 and you want to upgrade to a 640×360 stream. Thinking in terms of pixels displayed, the total number of pixels in a 320×180 image is 57,600. The number of pixels in a 640×360 image is 230,400 – four times greater. However, codecs are more efficient at encoding larger resolutions, so there is not a one-to-one ratio of pixel size to data rate. Jan Ozer wrote a great article on this exact subject.
It’s important to keep in mind the context of your stream when setting up your encoder presets for a broadcast. You need to think about:
1)    How much bandwidth do I have to work with?
2)    How much bandwidth does my target audience have to work with?
3)    What type of video do I want to broadcast?
First, you need to make sure that your broadcast settings aren’t going to use more bandwidth than you have available
First, you need to make sure that your broadcast settings aren’t going to use more bandwidth than you have available. You can calculate this by seeing what your maximum upload rate is (from your internet service provider), and by making sure that your presets never exceed that amount. It’s always a good idea to test running a broadcast first just to make sure.
Second, you need to consider your target audience. If you know that it’s only going to be watched by people on your internal network then you just have to limit yourself to the bandwidth of your internal network. Alternatively, if you’re expecting to be streaming to people who are still on dial-up, you are going to have to dramatically reduce the quality of your presets to compensate.
Third, you need to keep in mind the type of broadcast you intend to do. If you are doing a low action interview then you can probably reduce your frame rate and use a conservative data rate without losing too much quality. If you are broadcasting a high-action sports event, you’re going to need a higher frame rate to avoid choppy video and a higher data rate.
Typically, when setting up for a broadcast, I experiment a bit with my data rate beforehand. I start it out a bit high then bring it down little by little until I can get it as low as possible without impacting the quality of my stream. If I’m expecting a higher-action stream then I’ll wiggle the camera around while broadcasting to see if my frame rate starts to drop. If you are starting to drop frames on a broadcast that’s using a preset with more than 30fps (which is rarely necessary), I would recommend lowering your frame rate a bit to maintain quality and reduce your data rate. Typically, I think you can get away with as low as 24fps (standard film) on a stream without it looking too choppy, I would caution against going much lower than that unless you’re working within very specific restrictions.
Multiple Streams
It’s important to remember, again, that Wirecast is encoding its output on the fly. Sending simultaneous streams works great but will dramatically increase the impact to your machine.
I regularly stream 6 simultaneous streams from my Mac Pro.
I regularly stream 6 simultaneous streams from my Mac Pro. One high and one low quality QuickTime stream, one high and one low quality Flash stream, one iPhone stream (via Wowza server) and oneQuickTime record to disk. However, a lot of fine-tuning was required to make sure that each stream was using exactly the right data rate, resolution and frame rate to give me the quality that I wanted and I am just on the edge of exceeding the limitations of my machine.
Here’s a little known trick to Wirecast that allows it to identify if you are using identical broadcast and recording presets:  If you have a broadcast and a record to disk using an identical preset, Wirecast will match them up so it doesn’t have to do the encoding twice. This is helpful if you’re already pushing the limits of your setup and want to get a recording of your broadcast at the same time.
Inputs
Wirecast is great at managing a wide variety of input sources, so you can easily have several live camera sources feeding into your Wirecast machine. However, really high-quality video sources may end up causing you more harm than good. Let’s hypothetically say that you’re bringing video in from an HD camera, dropping it into Wirecast’s canvas (set to an HD resolution), then broadcasting back out at an HD resolution.
That is a lot of information to be going through your graphics processor (GPU). If your frame rate starts to drop but your CPU usage is staying steady, you’ve hit a bottleneck. Try reducing the frame size going through Wirecast. There’s no need to bring in a 1080p video input if you’re only streaming out to 640×360. Also, always remember, resizing down is okay but resizing up is not.
Above is an exaggerated example of resizing an image from the input to the canvas to the output. By reducing the high-quality source to fit into the lower-quality canvas the output has become extremely pixelated and blurry. As a rule, you should try to keep your resolution as constant as possible from source to output. You get no benefit out of having your HD camera at native resolution if you’re only broadcasting a 640×360 stream, all you are doing is increasing the amount of work your machine has to do and you may end up getting reduced quality.
When using a live source, Wirecast has three potential resize steps.
1)    Device Capture Size
2)    Wirecast Canvas Size
3)    Encoder Preset Size
Your goal should be to bring your Device Capture Size and Wirecast Canvas Size down as low as possible without your Device Capture Size being smaller than your Canvas Size or your Canvas Size being smaller than your highest broadcasting preset size. The Device Capture Size is dependent on your input source so it’s good to experiment a bit with Native, Reduced and Low settings before picking one for your broadcast. Also, many HDV cameras have the ability to switch to a DV mode – which is probably a good call if you aren’t planning on using an HD resolution.
This diagram helps to illustrate the different resize steps your video goes through in Wirecast. The base resolution is dependent on whatever your live source is. It is then scaled down based on your Device Capture Size. The video is then scaled to match your Wirecast Canvas Size. The last step scales it to whatever your highest broadcast preset resolution is. Smaller broadcast presets are automatically resized down from there. Keep this sequence of resizes in mind as you set up your document to ensure the highest possible quality for your output.
Codecs
Video codecs, by design, have their own built-in data rate limitations
Video codecs, by design, have their own built-in data rate limitations. It should be pretty rare that you start exceeding the limitations of your video codec but it’s something to consider for very high-quality video. For example, the Apple H.264 codec claims it can go as high as 135,000 kbits/sec (Level 5, Main Profile) but I’ve found in practice that it’s quite a bit lower than that. If you start to encounter issues with the inefficiencies of the Apple H.264 codec, then you should probably switch to an unrestricted format like Apple Intermediate Codec or Apple ProRes. Be careful though, these are large uncompressed formats and will eat up the space on your hard drive very quickly.
Summary
Hopefully this overview has helped illustrate some of the different elements involved in the broadcasting process. Finding the right balance between all of these components is key to getting a high-quality broadcast.