Difference between revisions of "Automated DVD production"
From Organic Design wiki
m (→See also) |
m (→See also) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
==Video specs== | ==Video specs== | ||
− | *mpeg2 | + | *mpeg2 av muxed stream |
*Bit rate from 4Mb/s - 10 Mb/s | *Bit rate from 4Mb/s - 10 Mb/s | ||
Line 17: | Line 17: | ||
*A DVD image file, or | *A DVD image file, or | ||
*A finished DVD if the machine has a DVD writer | *A finished DVD if the machine has a DVD writer | ||
+ | |||
+ | ==Packages== | ||
+ | apt-get install debian-multimedia-keyring dvdauthor mjpegtools imagemagick toolame | ||
+ | |||
+ | ==tovid== | ||
+ | High level python scripts that tie it all together - probably won't need the make file any more. | ||
+ | |||
+ | ==Makefile== | ||
+ | Here is the basis of a Make file that will eventually perform the whole process from file encoding to burning. It does not work at the moment, but is well documented. | ||
+ | |||
+ | <pre> | ||
+ | DVD_IMAGE=dvd.image | ||
+ | |||
+ | DESTINATION=vob/vob1.vob | ||
+ | |||
+ | menu/menu.mpg: menu/background.png ../common/spumux.xml buttons.png highlight.png selected.png | ||
+ | dd if=/dev/zero bs=4 count=1920 | toolame -b 128 -s 48 /dev/stdin menu/audio.mp2 | ||
+ | |||
+ | # toolame | ||
+ | # -b bitrate in kbps | ||
+ | # -s audio sample rate in kHz - 48kHz for DVD audio | ||
+ | |||
+ | convert menu/background.png -quality 8 menu/background.jpg | ||
+ | jpeg2yuv -n 60 -I p -f 25 -j menu/background.jpg | mpeg2enc -n p -f 8 -o menu/background.m2v | ||
+ | |||
+ | # jpeg2yuv | ||
+ | # -n number of frames to process | ||
+ | # -I interlacing mode p = progressive | ||
+ | # -f frame rate | ||
+ | # -j file name or sequence (see man) | ||
+ | |||
+ | # mpeg2enc | ||
+ | # -n norm (p|n|s) (pal|ntsc|secam) | ||
+ | # -f format 8 = "DVD MPEG-2 for ’dvdauthor" (see man) | ||
+ | # -o ouput filename | ||
+ | |||
+ | mplex -f 9 -o menu/background.mpg menu/background.m2v menu/audio.mp2 | ||
+ | |||
+ | # mplex | ||
+ | # -f format 9 = DVD, 8 = DVD with blank blocks | ||
+ | # -o output filename | ||
+ | # input video | ||
+ | # input audio | ||
+ | |||
+ | spumux ../common/spumux.xml < menu_background.mpg > menu.mpg | ||
+ | |||
+ | # spumux | ||
+ | # multiplexes subtitles into existing mpeg2 stream | ||
+ | # output menu.mpg stream | ||
+ | |||
+ | pal: | ||
+ | mencoder "$(SOURCE)" -of mpeg -vf scale=720:576,harddup -oac lavc -ovc lavc -lavcopts \ | ||
+ | acodec=ac3:abitrate=192:vcodec=mpeg2video:keyint=150:vbitrate=5000:aspect=4/3 \ | ||
+ | -mpegopts format=dvd -srate 48000 -ofps 25 -o "$(DESTINATION)" | ||
+ | |||
+ | # mencoder | ||
+ | # vbitrate up to 400 - 9800 for DVD - long play vs image quality (bigger number) | ||
+ | |||
+ | clean: | ||
+ | rm -rf test dvd.img vob/vob1.vob | ||
+ | |||
+ | dvd-structure: pal clean | ||
+ | dvdauthor -o test -x xml/single.xml | ||
+ | |||
+ | dvd: dvd-structure | ||
+ | mkisofs -dvd-video -o dvd.img test | ||
+ | |||
+ | |||
+ | ntsc: | ||
+ | mencoder "$(SOURCE)" -of mpeg -vf scale=720:480,harddup -oac lavc -ovc lavc -lavcopts \ | ||
+ | acodec=ac3:abitrate=192:vcodec=mpeg2video:keyint=150:vbitrate=5000:aspect=4/3 \ | ||
+ | -mpegopts format=dvd -srate 48000 -ofps 30000/1001 -o "$(DESTINATION)" | ||
+ | |||
+ | # <dvdauthor> | ||
+ | # <vmgm /> | ||
+ | # <titleset> | ||
+ | # <titles> | ||
+ | # <pgc> | ||
+ | # <vob file="video1.mpg" /> | ||
+ | # <vob file="video2.mpg" /> | ||
+ | # </pgc> | ||
+ | # </titles> | ||
+ | # </titleset> | ||
+ | # </dvdauthor> | ||
+ | |||
+ | </pre> | ||
==See also== | ==See also== | ||
+ | *[http://www.sit.auckland.ac.nz/Video_encoding Video encoding] | ||
+ | *[http://www.debian-multimedia.org/faq.php Linux debian multimedia repository] - you'll need to add this to your sources.list to get all the good video packages. | ||
+ | *[http://dvdauthor.sourceforge.net/ dvdauthor] | ||
*[http://radagast.bglug.ca/linux/dvd_authoring/dvd_authoring.html Very good article] using unix tools and makefiles to automate the process | *[http://radagast.bglug.ca/linux/dvd_authoring/dvd_authoring.html Very good article] using unix tools and makefiles to automate the process | ||
*[http://www.mir.com/DMG/Software/ y4mscaler] | *[http://www.mir.com/DMG/Software/ y4mscaler] | ||
*[http://linuxcommand.org/man_pages/growisofs1.html growisofs] | *[http://linuxcommand.org/man_pages/growisofs1.html growisofs] | ||
+ | *[http://www.live555.com/openRTSP openRTSP] is a video streaming server | ||
+ | *[http://ffmpeg.mplayerhq.hu/ FFmpeg (encoding different formats) ]*[http://lame.sourceforge.net Lame ] | ||
+ | *[http://liba52.sourceforge.net/ liba52 ] | ||
+ | *[http://homepage.mac.com/johan/mov/mov.html movtoy4m and movtowav ] | ||
+ | *[http://www.gnu.org/software/vcdimager/ vcdxbuild and vcdxgen ] | ||
+ | *[http://dvdauthor.sourceforge.net/ dvdauthor ] | ||
+ | *[http://cdrecord.berlios.de mkisofs ] | ||
+ | *[http://liba52.sourceforge.net/ liba52 ] | ||
+ | *[http://homepage.mac.com/johan/mov/mov.html movtoy4m and movtowav (QuickTime encoding material) ] | ||
+ | *[http://www.gnu.org/software/vcdimager/ vcdxbuild and vcdxgen (S/VCD images) ] | ||
+ | *[http://dvdauthor.sourceforge.net/ dvdauthor (DVD authorization) ] | ||
+ | *[http://cdrecord.berlios.de mkisofs ] |
Latest revision as of 20:24, 9 February 2009
It would be nice to generate DVD discs from video files or cameras in a simple automated way.
Video specs
- mpeg2 av muxed stream
- Bit rate from 4Mb/s - 10 Mb/s
Audio specs
- mpeg1-layer2
- AC3
- PCM
- Must be 48kHz sample rate
Input
- A directory of video files numbered to indicate their order
Output
- A DVD image file, or
- A finished DVD if the machine has a DVD writer
Packages
apt-get install debian-multimedia-keyring dvdauthor mjpegtools imagemagick toolame
tovid
High level python scripts that tie it all together - probably won't need the make file any more.
Makefile
Here is the basis of a Make file that will eventually perform the whole process from file encoding to burning. It does not work at the moment, but is well documented.
DVD_IMAGE=dvd.image DESTINATION=vob/vob1.vob menu/menu.mpg: menu/background.png ../common/spumux.xml buttons.png highlight.png selected.png dd if=/dev/zero bs=4 count=1920 | toolame -b 128 -s 48 /dev/stdin menu/audio.mp2 # toolame # -b bitrate in kbps # -s audio sample rate in kHz - 48kHz for DVD audio convert menu/background.png -quality 8 menu/background.jpg jpeg2yuv -n 60 -I p -f 25 -j menu/background.jpg | mpeg2enc -n p -f 8 -o menu/background.m2v # jpeg2yuv # -n number of frames to process # -I interlacing mode p = progressive # -f frame rate # -j file name or sequence (see man) # mpeg2enc # -n norm (p|n|s) (pal|ntsc|secam) # -f format 8 = "DVD MPEG-2 for ’dvdauthor" (see man) # -o ouput filename mplex -f 9 -o menu/background.mpg menu/background.m2v menu/audio.mp2 # mplex # -f format 9 = DVD, 8 = DVD with blank blocks # -o output filename # input video # input audio spumux ../common/spumux.xml < menu_background.mpg > menu.mpg # spumux # multiplexes subtitles into existing mpeg2 stream # output menu.mpg stream pal: mencoder "$(SOURCE)" -of mpeg -vf scale=720:576,harddup -oac lavc -ovc lavc -lavcopts \ acodec=ac3:abitrate=192:vcodec=mpeg2video:keyint=150:vbitrate=5000:aspect=4/3 \ -mpegopts format=dvd -srate 48000 -ofps 25 -o "$(DESTINATION)" # mencoder # vbitrate up to 400 - 9800 for DVD - long play vs image quality (bigger number) clean: rm -rf test dvd.img vob/vob1.vob dvd-structure: pal clean dvdauthor -o test -x xml/single.xml dvd: dvd-structure mkisofs -dvd-video -o dvd.img test ntsc: mencoder "$(SOURCE)" -of mpeg -vf scale=720:480,harddup -oac lavc -ovc lavc -lavcopts \ acodec=ac3:abitrate=192:vcodec=mpeg2video:keyint=150:vbitrate=5000:aspect=4/3 \ -mpegopts format=dvd -srate 48000 -ofps 30000/1001 -o "$(DESTINATION)" # <dvdauthor> # <vmgm /> # <titleset> # <titles> # <pgc> # <vob file="video1.mpg" /> # <vob file="video2.mpg" /> # </pgc> # </titles> # </titleset> # </dvdauthor>
See also
- Video encoding
- Linux debian multimedia repository - you'll need to add this to your sources.list to get all the good video packages.
- dvdauthor
- Very good article using unix tools and makefiles to automate the process
- y4mscaler
- growisofs
- openRTSP is a video streaming server
- FFmpeg (encoding different formats) *Lame
- liba52
- movtoy4m and movtowav
- vcdxbuild and vcdxgen
- dvdauthor
- mkisofs
- liba52
- movtoy4m and movtowav (QuickTime encoding material)
- vcdxbuild and vcdxgen (S/VCD images)
- dvdauthor (DVD authorization)
- mkisofs