Okay, thanks to some stubbornness on my part and helpfulness on the part of people on this mailing list, I got the Ogg Theora alpha compiled up and installed and running. Yesterday, I went to the Prelinger archives (the public-domain video archive at www.archive.com) to find a high-quality original to re-encode as a test. The encoder worked just fine, and playback as well, and I thought I'd share what I found with the thought that it might help others. COMPILING: Both the encoder and the player rely on STATIC versions of their respective libraries. I believe both the ogg and vorbis libraries build static versions as well as shared when compiled, but some (e.g. libartsc) don't. (Most pre-compiled packages probably include static versions, however.) Otherwise, simply running the supplied ./autogen.sh script followed by 'make' should build the code just fine. 'make install' places the theora library (by default) in /usr/local/lib, but does not copy the example player or encoder. If you want them moved out of the examples directory in the source tree, you'll have to do it by hand (you may or may not want to bother, considering that both are A)merely examples and B)still in early 'alpha' testing, though in my limited experience thus far they both seem to perform reasonably well.) ENCODING: The encoder, as the README states, expects raw, uncompressed 'yuv4mpeg' data for video, and '.wav' files (pcm) for sound. As the readme also explains, mplayer ( http://www.mplayerhq.hu ) is an easy way to export from an existing video file to this format. It's not explicitly stated in the README, but the example encoder's output is to stdin, so the output needs to be redirected in the command line to the appropriate filename (or, if desired, piped directly to another program for output.) For those who don't have a 300GB hard drive to a raw, uncompressed file on, you can actually pipe yuv4mpeg data 'on-the-fly' from mplayer to the example encoder by creating a fifo "pipe" file: mkfifo -m 660 stream.yuv the example encoder, as of this writing, does not yet also handle the audio from a fifo, though this may be possible in the (near?) future. In the meantime, the simplest workaround is to dump the audio, separately, to a standard .wav file (which can be rather large, but still MUCH smaller than the video dump file would be...): mplayer -ao pcm -aofile stream.wav -vo null file_to_be_encoded.avi Finally, to encode the Ogg Theora file from the original: mplayer -ao null -nosound -vo yuv4mpeg file_to_be_encoded.avi & (and then - I do this in a separate terminal window, but as far as I know it can be done in the same window, albeit messily as both programs output status messages) encoder_example -v 1 -a 1 stream.wav stream.yuv > theora_file.ogg (if/when encoder_example supports 'piped' pcm data, you will be able to: mkfifo -m 660 stream.wav and there will be only one mplayer command line to call before the encoder_example: mplayer -ao pcm -aofile stream.wav -vo yuv4mpeg file_to_be_encoded.avi & The encoder_example line above can remain unchanged, unless you want to modify the quality settings or supply target bitrates instead. <p>On final encoding note: The encoder takes the size and frame rate of the output video directly from the yuv4mpeg stream, and does not yet handle 'aspect ratio' (either that, or the player_example doesn't), so if you want to, for example, create an ogg-theora file from an NTSC SVCD mpeg file (480x480) that displays the "correct" size (640x480), you will need to explicitly scale it. Fortunately, mplayer handles this just fine: mplayer -ao null -nosound -vo yuv4mpeg -vop scale=640:480 SVCD_File.mpg Some 'data points': -a 1, for 44.1khz stereo .wav file, equates to ~64-72kbps -v 1, for 640x480 29.970fps video, equates to ~600kbps I've tested 'transcoding' a 13-minute-long, 368x480, 29.970 fps, 3750.0 kbps color mpeg2 video, 112kbps (?) audio file (Total file size ~315MB)from the Prelinger archives as described above, scaling to 640x480, with no problems. Synchronization seems fine throughout, and even at -v 1, the resulting video did not seem noticeably degraded from the original, though in fairness, the original in this case is a faded and grainy 1950's film, so what degradation there was is likely to be less noticeable. 7 The resulting Theora file was ~68MB. PLAYBACK: Playback by the player_example, as also explicitly stated in the README, takes its input from stdin. However, since *I* read that and STILL tried to supply a filename the first time or two that I ran it, I'll reiterate it here to cover up my stupidity: player_example expects data on stdin, that is, piped. To play back an Ogg Theora file with it, use a command line such as: cat Ogg_Theora_File.ogg | player_example or simply: player_example < Ogg_Theora_File.ogg The example player has no options or playing controls, but plays back just fine in my experience so far. TODO: Test encoding with some 'sharper' originals. Compare encoding speed and quality with mpeg2 and xvid. <p><p><p><p>Comments? Questions? Suggestions? --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'theora-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
cool. I'm just up to the "autogen doesn't work" stage, so
this should help alot.
I'd be curious if anyone gets this to work in cygwin -- I'm sticking
with Redhat 7.2 to start, since I know I've got most of what I need compiled
there.
-----Original Message-----
From: emaillist@dogphilosophy.net [mailto:emaillist@dogphilosophy.net]
Sent: Fri 9/27/2002 2:25 PM
To: theora-dev@xiph.org
Cc:
Subject: [theora-dev] Using Theora Micro-HOWTO
Okay, thanks to some stubbornness on my part and helpfulness on the part
of people on this mailing list, I got the Ogg Theora alpha compiled up
and installed and running.
Yesterday, I went to the Prelinger archives (the public-domain video
archive at www.archive.com) to find a high-quality original to re-encode
as a test. The encoder worked just fine, and playback as well, and I
thought
I'd share what I found with the thought that it might help others.
COMPILING:
Both the encoder and the player rely on STATIC versions of their
respective
libraries. I believe both the ogg and vorbis libraries build static
versions
as well as shared when compiled, but some (e.g. libartsc) don't.
(Most
pre-compiled packages probably include static versions, however.)
Otherwise, simply running the supplied ./autogen.sh script followed by
'make'
should build the code just fine. 'make install' places the
theora library
(by default) in /usr/local/lib, but does not copy the example player or
encoder. If you want them moved out of the examples directory in the
source
tree, you'll have to do it by hand (you may or may not want to
bother,
considering that both are A)merely examples and B)still in early
'alpha'
testing, though in my limited experience thus far they both seem to
perform
reasonably well.)
ENCODING:
The encoder, as the README states, expects raw, uncompressed
'yuv4mpeg'
data for video, and '.wav' files (pcm) for sound. As the readme
also
explains, mplayer ( http://www.mplayerhq.hu ) is an easy way to export
from an existing video file to this format.
It's not explicitly stated in the README, but the example
encoder's output
is to stdin, so the output needs to be redirected in the command line to
the
appropriate filename (or, if desired, piped directly to another program
for
output.)
For those who don't have a 300GB hard drive to a raw, uncompressed
file
on, you can actually pipe yuv4mpeg data 'on-the-fly' from
mplayer to
the example encoder by creating a fifo "pipe" file:
mkfifo -m 660 stream.yuv
the example encoder, as of this writing, does not yet also handle the
audio
from a fifo, though this may be possible in the (near?) future. In the
meantime, the simplest workaround is to dump the audio, separately, to a
standard .wav file (which can be rather large, but still MUCH smaller
than
the video dump file would be...):
mplayer -ao pcm -aofile stream.wav -vo null file_to_be_encoded.avi
Finally, to encode the Ogg Theora file from the original:
mplayer -ao null -nosound -vo yuv4mpeg file_to_be_encoded.avi &
(and then - I do this in a separate terminal window, but as far as I
know
it can be done in the same window, albeit messily as both programs
output
status messages)
encoder_example -v 1 -a 1 stream.wav stream.yuv > theora_file.ogg
(if/when encoder_example supports 'piped' pcm data, you will be
able to:
mkfifo -m 660 stream.wav
and there will be only one mplayer command line to call before the
encoder_example:
mplayer -ao pcm -aofile stream.wav -vo yuv4mpeg file_to_be_encoded.avi
&
The encoder_example line above can remain unchanged, unless you want to
modify the quality settings or supply target bitrates instead.
On final encoding note: The encoder takes the size and frame rate of
the
output video directly from the yuv4mpeg stream, and does not yet handle
'aspect ratio' (either that, or the player_example doesn't),
so if you
want to, for example, create an ogg-theora file from an NTSC SVCD mpeg
file
(480x480) that displays the "correct" size (640x480), you will
need to
explicitly scale it. Fortunately, mplayer handles this just fine:
mplayer -ao null -nosound -vo yuv4mpeg -vop scale=640:480 SVCD_File.mpg
Some 'data points':
-a 1, for 44.1khz stereo .wav file, equates to ~64-72kbps
-v 1, for 640x480 29.970fps video, equates to ~600kbps
I've tested 'transcoding' a 13-minute-long, 368x480, 29.970
fps, 3750.0 kbps
color mpeg2 video, 112kbps (?) audio file (Total file size ~315MB)from
the
Prelinger archives as described above, scaling to 640x480, with no
problems.
Synchronization seems fine throughout, and even at -v 1, the resulting
video
did not seem noticeably degraded from the original, though in fairness,
the
original in this case is a faded and grainy 1950's film, so what
degradation
there was is likely to be less noticeable.
7
The resulting Theora file was ~68MB.
PLAYBACK:
Playback by the player_example, as also explicitly stated in the README,
takes its input from stdin. However, since *I* read that and STILL
tried
to supply a filename the first time or two that I ran it, I'll
reiterate it
here to cover up my stupidity:
player_example expects data on stdin, that is, piped. To play back an
Ogg
Theora file with it, use a command line such as:
cat Ogg_Theora_File.ogg | player_example
or simply:
player_example < Ogg_Theora_File.ogg
The example player has no options or playing controls, but plays
back just fine in my experience so far.
TODO:
Test encoding with some 'sharper' originals.
Compare encoding speed and quality with mpeg2 and xvid.
Comments? Questions? Suggestions?
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to
'theora-dev-request@xiph.org'
containing only the word 'unsubscribe' in the body. No subject
is needed.
Unsubscribe messages sent to the list will be ignored/filtered.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 8806 bytes
Desc: winmail.dat
Url :
http://lists.xiph.org/pipermail/theora-dev/attachments/20020927/205214f6/winmail-0001.bin
Hi. Do you guys have plans to eventually merge the modifications done in the Theora branch back into the Win/Mac codecs? I am asking because I was working with the Win/Mac codebase, which makes sense for my application (we also want to run on OS9 and OSX carbon, so CodeWarrior needs to be used as the development environment.) Maybe it is too early to talk about this, but what do you think is the best route to follow? Do you need someone to maintain these branches and the VC++ and CW projects? Having the current codecs is very important imo because they allow people to use the commercial tools they already work with to compress VP3. I understand that AVI and QT files would not be the final format, but maybe we can code a simple tool to convert from AVI/QT files with VP3/Vorbis tracks to an Ogg stream, obviously without recompression. There are also several freeware/shareware tools for Windows and Mac (like VirtualDub) that are widely used, but they only work with VFW or QT codecs. Any thoughts on this? Regards, Mauricio Piacentini Tabuleiro --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'theora-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.