Living (and working) with Broadcast 2000
Andrew F. Lack, February 16th 2002
I `discovered'
Broadcast 2000
while searching for a Linux sound editor. What I found was much more than
that.
Why write this web page? Well, like most software, the fun is in the
writing and not the documenting, so the documentation that comes with
Broadcast 2000 is limited, terse, quite technical and most of it is quite
beyond a simpleton like me to understand. So I decided to write-down
my tips and experiences and publish them on the web in the hope that
you might find them useful.
It seems that Adam Williams has removed the source code of Broadcast 2000
for fear of prosecution. However, many Linux distributions ship the software
and include the source code. The last release was version 2000c.
Contents
What is Broadcast 2000?
If you found this web page before the
Home Page
for Broadcast 2000, then I will say just this; Broadcast 2000 is a full
feature
sound & video recorder and editor, with plugins for numerous effects.
It seems to be written by one person, Adam Williams.
The Home Page also includes numerous tools to assist in the production
of videos, including a nifty little MPEG-2 encoder, with modifications
for producing low frame-rate videos, plus a player. All Open Source,
all for Linux.
But you had better go and check-out the Home Page. By the way, the web
site makes a lot of amazing claims about what you can do with the software.
If you are cinical, as I am, (especially if you use the Web a lot...) you
would be forgiven for dismissing the site. But, having lived with
the software for about 8 months I am sure it really is true, but you're
going to need a beefy PC.
I have also found this
handy introduction
to Broadcast 2000 on one of the O'Reilly websites.
What is my interest in Broadcast 2000?
I have nothing to do with the writing of the code. I am a simple user.
Having discovered Broadcast 2000, I want to help foster its wider
use. I hope these notes will help you.
But I had (and still have) a lot of questions about video production and
so you may still not find the answers here...
Mail me
if you have anything to add.
Audio
These points are covered in more detail below.
- I can record stereo at 44.1KHz with excellent results. I've used this
to transcribe recordings on analogue audio cassette to CD.
- The editor is brilliant. Fast at loading, even 300MB WAV files.
- No crashes while editing.
- I've figured-out how to cut, fade-in and fade-out recordings
In more detail
Making a CD from an analogue cassette or Vinyl record
First, connect up you Hi-Fi to your computer's sound card. You'll need to
open the sound mixer and work-out which fader adjusts the recording gain.
Start Broadcast 2000 and start a new project with File->new
and choose 2 channels of audio at 44.1KHz, no video. Click the record button
on the tool bar and select a filename, plus choose WAV format to save the
data. Make sure you click Monitor Audio and you should see the
two VU meters displaying as you play the cassette or record. You may need
to select the record-source with the sound mixer.
Cue the beginning of the cassette or LP and start recording with
Broadcast 2000. When done, stop recording and click save. This will
display the data as a wave-form on the main Broadcast 2000 edit window.
If you recorded several tracks at once, for example the whole of one side
of an LP, you need to split up the recording and save each track in a separate
WAV file. This is how;
- find the place where the track will start. Click the Label
button to mark it.
- find the place where the track will end and label it.
- double click between the two labels in the bar where the labels show up.
This highlightes the section.
- Choose File->Render and render the section to a new WAV file.
Only the section highlighted is rendered.
- You need to repeat this for each track. It's probably better to
remove the old labels to save confusion. To remove a label, click-left
on it then click Label and it is removed.
You can now use cdrecord to burn a CD from the WAV files you have
created.
Video
I have successfully used Broadcast 2000 to record from a VCR and create
small video recordings and then burn them onto CD.
I have a medium-spec PC as follows;
- 550MHz AMD K6-2
- 128MB RAM
- 10GB disc
- BT878 Haupage TV card
- ES1371-compatible Sound
- Caldera Linux Technology Preview
(2.4-pre3 kernel, released July 2000)
Getting good recordings from video takes a lot of disc space and
experimentation with the settings of Broadcast 2000. It is definitely
true to say here that your mileage will vary.
Summary
All these points are described in more detail below.
- I can record at 24 frames per second (fps) with an image size of
300x240 with good quality. This generates about 200MB/min of raw
quicktime data. This includes a single audio track at 44.1KHz.
- I can record at 15 fps, 320x240 with fair quality, producing
about 150MB/min quicktime. This includes a single audio track at 44.1KHz.
- If it try and record at 24fps with image sizes bigger than 300x240,
broadcast 2000 gets behind with frame-writing too often.
- Making the image size larger than 320x240 produces
unacceptably large numbers of frames with noise bars. I attribute this
to a lack of disc-throughput
- About 30% of the videos I have tried recording-from give problems
in that it is impossible to get a consistently high frame rate. Some of these
tapes cannot be recorded with a frame rate above 5 or 6fps. It seems the TV
card has difficulty scanning the video signal.
- Heroine Virtual's MPEG-2 library is vastly superior to the MPEG-1
library
- I couldn't compile MPEG-2 with Caldera 2.4, but could (with a minor
correction to the Makefile for the multiplexer) with Caldera LTP
- Managed to compile Broadcast 2000 `b' release with LTP, but I think
the original Broadcast 2000 release may be better for me
- I can produce good quality MPEG-2 video files at about 20MB/min which
play with Xmovie
In more detail
How big and what fps?
The most critical settings for video with Broadcast 2000 is the frame rate
and image size. For PAL TV you want to capture at 25 frames per second (fps)
to give smooth motion flow. Frame rates under this give jerky movement
for all but the slowest motion. But high frame rates require more storage
and put more demand on the playback system.
Then you want a picture that's as big as possible. No good squinting at
tiny 160x120 images. Of course if you're working on producing a video
file for downloading from the Internet, then small image size might
be a good idea!
A full sized PAL image is roughly 550x410. The ratio of sides of the
image is 4:3 for standard low-definition TV and 16:9 for `high definition'
TV.
Setting the Recording Video Quality
The video Options button in the recording window is a key part
of Broadcast 2000 and yet is not documented well. It allows you to
choose the type of video image which is recorded. It defaults to RGB
which gives the highest quality but also the highest I/O to your disc.
By choosing JPEG you can then set the JPEG compression quality. This can
greatly reduce the disc storage requirements (and hence disc I/O) but
increases the CPU load to process each frame.
I set compression to 65 and can reduce the disc storage from about 200MB/min
down to 20MB/min (300x240x24fps). Reducing the disc I/O this way also
allows me to get up to 400x300x12.5fps without any noise bars.
The next big
problem is the 2.1GB maximum file limit imposed by Linux. This means that
you won't be able to record for hours. In fact with RGB format you probably
won't be able to record for more than a few minutes, so off-air
recording is not really possible.
Using JPEG and compression is the only way (I know at this time of writing)
to extend Broadcast 2000's maximum recording time.
Some tips on increasing performance
Here's some tips I have tried (with varying success) to increase the
video-recording performance;
- I set `frames to write to disc at once' to 75. This is found
under Settings->Preferences->video. I've found the setting
of this has a marked effect
- I run Broadcast 2000 as root and select `realtime priority' in
Settings->Preferences->video
- Using 2.2.14 kernel (Caldera 2.4) produced inferior results, with
what I describe as a "double-take" problem (repeated frame sequences)
It's definitely worth upgrading to the 2.4 kernel as this completely
solved the "double-take" problem a significantly increased video
recording capability. For example, with the 2.2 kernel I could
barely record at 256x192x24fps.
- I find that tweaking hdparm makes no difference on my machine.
I get about 9.5MB/s using hdparm -t /dev/hda, but you should
definitely try it yourself.
The settings worth trying are -m 16 (multi-sector writes)
-c 1 (32-bit transfers) and -d 1 (enable DMA).
You should read the man-page before trying some of these and they can
lead to corrupt filesystems.
- I turn off the video monitor during recording. I occationally quickly
turn it on then off to grab a frame and see where I've got to; this
usually results in getting a frame or two behind.
Rendering Movies
You have two choices for the movie file format; quicktime or MPEG.
Quicktime is the easiest to produce as it can be rendered directly
(and quickly) from Broadcast 2000. However, even with generous
compression you will still get large files, perhaps only up to 45 minutes
per CD.
MPEG, on the other hand, is capable of producing very low bitrate files
(under 1Mb/s) which is a better size for putting on the Internet. However,
creating MPEG movies is a time-consuming process--it takes about a hour
on my K6-2 system to get a 10 minute video with audio.
There are two MPEG libraries on the Broadcast 2000 Home Page, one
for MPEG-2 and another (well hidden) for MPEG-1. Unless you can't compile
the MPEG-2 tools, don't use the MPEG-1 tools--they're more complex to use
as the video must be generated from a JPEGLIST which requires a lot of
disc space and the removal of thousands of jpeg images in one directory
is challenging. [``rm *'' won't work--you'll get argument list
too long, so you'll have to use find with a -exec.]
The MPEG-2 tools will generate video streams of either MPEG-1 or 2 and
can use stereo MPEG-1/Layer 3 audio streams.
The steps required to create a MPEG movie require the use of three separate
command-line programs. I have written a simple
shell script
to automate this process. Here's the details of how to create a MPEG
movie from Broadcast 2000;
- Generate a quicktime file using File->Render. You don't
need to include the audio stream, but it doesn't matter if you do.
It seems the official MPEG standard doesn't support frame rates below
24, but Adam Williams has hacked the MPEG-2 encoder to support
low frame rates of 1, 5, 10, 12 and 15. If you record at a low frame
rate and want to generate a video stream at 24fps, change the frame
rate with Video->Frame rate before rendering. Don't forget
the output quicktime file will be larger if you increase the frame rate
and there is the 2.1GB Linux single file size limit.
- Generate a WAV file containing the audio data. It's possible that
some media players will expect a sample rate of 44.1KHz. If you record
at a lower sampling rate (to increase CPU performance for video recording)
you can re-sample the WAV file to 44.1KHz using sox.
- Run the encode program from the mpeg-2_movie/video
directory. There are a number of parameters you need to set which
control the quality (and size) of the output MPEG video stream. The
trick is to make the quality acceptable and the size small.
- Convert the WAV audio to an MPEG-3 audio stream. I use bladeenc.
- Finally, multiplex the video and audio streams together using the
mplex program from the mpeg-2_movie/mplex directory.
Handling multiple video streams in a Project
Positioning assests on the time-line
- use File->Append to load a new asset
- put a label at point where you want the new asset to start on
the time-line
- make sure there no labels between it and the start of the project
- double-click in the label bar to select the region from the start to
the label
- make sure the only track(s) which are editable belong to the asset you
want to move
- use Edit->Paste Silence. This inserts silence into the tracks(s)
pushing the video and/or audio to start at your label
Making static titles
- Use the GIMP to create a PNG file with the text you require.
Make sure you have a transparent background
- Load the PNG file as a new asset with File->Append. This
adds about 1s of video frames of the image at the current frame-rate
- If you only want 1s of title, stop here. You may want to position
the new asset by following
these instructions.
- If you want more than 1s of title, you must extend the asset by dragging
the track end-point (the little blue right-facing triangle) with
the left mouse button.
- You may want to set fade-points on the title to get it to fade-in and out.
- Make sure you have alpha channels enabled in
Settings->Preferences->Playback otherwise the video output is
just the contents of the first video track.
Disolving between video streams
To be completed
Things I haven't figured out (yet)
Zooming and panning
Watching Movies
The're aren't many MPEG players for Linux;
xanim
is not good at playing MPEGs. It's better for .avi and .mov files
aktion
is the KDE media player but is based on xanim...
mtv
is a commercial product (costs USD 10.00) which only plays MPEG-1 streams.
It has a
command-line player, mtvp, which can be used without having to
pay anything.
xmovie
is another offering from Adam Williams. Brilliant player capable of
handling MPEG-1, MPEG-2 and quicktime files. Includes a random-seek
widget.
Creating Movies for viewing with Windows
You need to create MPEG-1 video streams if you want your movies to play
with the Windows media player. You probably also (yet to be confirmed)
need to use a MPEG-1/layer-2 audio stream.
Quicktime movies will play with the Windows Quicktime player, which
must be separately downloaded and installed.