------------------------------------
So you run Puppy and have video that you want to put on a Video CD? Here are your options:
1. You could try installing Wine and one of the (probably large) Windows frontends to VCDimager - e.g. "VCD wizard". I don't know if they run in Wine, but I'm guessing some should.
2. (the easiest way) Use Pburn (here). Since version 1.8.0 Pburn has had basic (S)VCD support. Just make sure your Pburn TV standard settings are right (PAL/NTSC), add your videos to the burn list, and Pburn will used ffmpeg to convert the video to the right format and vcdimager to write the disc image. There will be no menu or fancy PBC features, and each video will be one chapter. VCDimager (I presume just the vcdimager binary) will be in Puppy 4.1, otherwise you can get it here
N.B. The transition between VCD chapters is not seamless - there is a glitch, so if you want a seamless transition you need to instead have one long video with entrypoints (see below). This is not a vcdimager bug, it is a feature of the VCD standard
3. (I'm not sure there is any advantage in this option) Manually convert the videos to the right VCD format with ffmpeg e.g. for a PAL VCD
Code: Select all
ffmpeg -i /path/input_file.flv -target pal-vcd /path/output.mpg
VCDimager also includes a set of utilities (here) for doing other things like (IIRC) extracting video from a VCD and checking files for VCD compatibility. Personally I've never found them useful.
4. (the way with the most control) The vcdimager binary and other utilities mentioned in 3. are the original command-line based programs, but VCDimager also includes newer XML based programs to do the same things but with more options. If you can find a use for the utilities, they are here, otherwise you probably just want vcdxbuild (here) the "xml" equivalent to the vcdimager binary.
vcdxbuild requires a special xml file as input, with instructions for the files to put on the CD, menus, entrypoints, playback control etc. It builds a .bin VCD image and a .cue file, and you can burn it with something like
Code: Select all
cdrecord dev=/dev/cdrom -dao -v cuefile=input_file.cue -driveropts=burnfree
Code: Select all
vcdxbuild -c output.cue -b output.bin -p input.xml
You can do all sorts of complicated things with the xml file if you use a little Google to educate yourself
------------------------------------
Someone out there might find the script below useful, although you may want to tweak it to your own needs:
Background:
I got a video capture card with hardware MPEG encoding to make it easy to transfer concert videos to VCD. Because I don't want a glitch between songs in the concerts, I use VCD entrypoints instead of chapters. The downside of this is that back and forward navigation on the VCD don't work properly, as if you start at one entrypoint, they will take you to the same places even if the video has played past the next entrypoint.
What it does:
I wrote this script to generate a simple .xml file for a VCD with a single video and multiple entrypoints. (It would be fairly straightforward to modify to have multiple videos as separate chapters, each with multiple entrypoints).
You need to put the entrypoint times in seconds (normally starting with 0; you can have decimals as well, but the entrypoint may not end up exactly where you specify anyway, as it has to be put at the location of a special marker) in a text file, each on a new line, WITH NO EXTRA INFORMATION, and use it as the argument for the script. You will then need to fill in the fields at the top for the title, publisher and source file locations. The script produces a playback control so that if you press the "track number" of an entrypoint, it will go there, "back" and "forward" work subject to the limitation described above, and return (menu on most DVD players) gives you a menu screen. I was using the original (Windows 3.1) Philips Video CD 2.0 Toolkit http://www.icdia.org/sw_pc/vcd2tk.zip to make mpeg stills for the menu and the still I put at the end of the video for 60 seconds. I'll try to post the easiest linux way to make mpeg stills
I think you could replace them with videos, or you can remove the relevant bits (remember to make all your entrypoints timeout to end then).
You also get the files for the CD-i application with the Video CD Toolkit - you'll either need to do that and fix the paths, or delete that whole "folder" part near the top of the xml file. It is unlikely that you will ever come across a CD-i player anyway. Also, you'll need to delete that and change the "vcd version" if you do an svcd.
Code: Select all
#!/bin/bash
# vcdgenxml
# Script to mostly automate the creation of an xml file for a single .mpg for vcdxbuild.
# Requires a list of entrypoint times (in seconds) as input.
# Location of output xml file
XMLFILE="/tmp/VCD.xml"
# Temporary menu file
MENUFILE="/tmp/vcdmenu"
# Find number of "tracks"
tracks=`wc -w "$1"`
tracks=`echo $tracks | cut -d " " -f 1`
# Make menu list in temporary file
while (( track < $tracks ))
do
track=$(($track + 1))
echo " <select ref=\"select-seq$track\"/>" >> "$MENUFILE"
done
echo " <select ref=\"select-back\"/>" >> "$MENUFILE"
# Write start of file
echo "<?xml version=\"1.0\"?>
<!DOCTYPE videocd PUBLIC \"-//GNU//DTD VideoCD//EN\" \"http://www.gnu.org/software/vcdimager/videocd.dtd\">
<videocd xmlns=\"http://www.gnu.org/software/vcdimager/1.0/\" class=\"vcd\" version=\"2.0\">
<info>
<album-id></album-id>
<volume-count>1</volume-count>
<volume-number>1</volume-number>
<restriction>0</restriction>
</info>
<pvd>
<volume-id>TITLE</volume-id>
<system-id>CD-RTOS CD-BRIDGE</system-id>
<application-id>CDI/CDI_VCD.APP;1</application-id>
<publisher-id>PUBLISHER</publisher-id>
</pvd>
<filesystem>
<folder>
<name>CDI</name>
<file src=\"/mnt/home/Program Files/Ahead/Nero/Cdi/cdi_imag.rtf\" format=\"mixed\">
<name>CDI_IMAG.RTF</name>
</file>
<file src=\"/mnt/home/Program Files/Ahead/Nero/Cdi/cdi_text.fnt\">
<name>CDI_TEXT.FNT</name>
</file>
<file src=\"/mnt/home/Program Files/Ahead/Nero/Cdi/cdi_vcd.app\">
<name>CDI_VCD.APP</name>
</file>
</folder>
</filesystem>
<segment-items>
<segment-item src=\"BLANK_BACKGROUND.mms\" id=\"back\"/>
<segment-item src=\"MENU_BACKGROUND.mms\" id=\"menu\"/>
</segment-items>
<sequence-items>
<sequence-item src=\"SOURCE FILE.MPG\" id=\"sequence-00\">" > "$XMLFILE"
# For each "track" make an entrypoint.
track=0
while (( track < $tracks )); do
track=$(($track + 1))
echo " <entry id=\"seq$track\">`cat "$1" | cut -d "
" -f $track`</entry>" >> "$XMLFILE"
done
# Write middle of file
echo " </sequence-item>
</sequence-items>
<pbc>" >> "$XMLFILE"
# Add each "track" to the playback control.
track=0
while (( track < $tracks )); do
track=$(($track + 1))
echo "
<selection id=\"select-seq$track\">
<bsn>1</bsn>
<prev ref=\"select-seq`echo $(($track - 1))`\"/>
<next ref=\"select-seq`echo $(($track + 1))`\"/>
<return ref=\"select-menu\"/>
<timeout ref=\"select-back\"/>
<wait>0</wait>
<loop jump-timing=\"immediate\">1</loop>
<play-item ref=\"seq$track\"/>" >> "$XMLFILE"
cat $MENUFILE >> "$XMLFILE"
echo " </selection>" >> "$XMLFILE"
done
# Remove invalid pbc stuff
sed -i '/seq0/ d' "$XMLFILE"
# Can't figure out how else to get this to work :(
sed -i s/seq$((track + 1))/back/ "$XMLFILE"
# Write end of file
echo "
<selection id=\"select-back\">
<bsn>1</bsn>
<prev ref=\"select-seq$track\"/>
<return ref=\"select-menu\"/>
<timeout ref=\"end\"/>
<wait>60</wait>
<loop jump-timing=\"immediate\">1</loop>
<play-item ref=\"back\"/>" >> "$XMLFILE"
cat $MENUFILE >> "$XMLFILE"
echo " </selection>
<selection id=\"select-menu\">
<bsn>1</bsn>
<next ref=\"select-seq1\"/>
<return ref=\"select-seq1\"/>
<timeout ref=\"end\"/>
<wait>60</wait>
<loop jump-timing=\"immediate\">1</loop>
<play-item ref=\"menu\"/>" >> "$XMLFILE"
cat $MENUFILE >> "$XMLFILE"
echo " </selection>
<endlist id=\"end\" rejected=\"true\"/>
</pbc>
</videocd>" >> "$XMLFILE"
# Remove temporary file
rm "$MENUFILE"
# Show output xml file and message about what to fill in manually.
rox -s "$XMLFILE"
exec xmessage "Fill In:
TITLE
PUBLISHER
BLANK_BACKGROUND
MENU_BACKGROUND
SOURCE FILE"