Kaip konvertuoti *.avi failą į DVD formatą?

Facebooktwittergoogle_pluspinterestlinkedintumblrmail

Toks klausimas man neseniai kilo pažįstamiems paprašius įrašyti vaikišką filmuką į diską jų vaikui taip, kad būtų galima žiūrėti per jų DVD leistuvą. O jų leistuvas senovinis, nepalaiko ko gero mpeg4 formato ir *.avi failų, įrašytų į diską, jame pasižiūrėti negalima…

Viską darysiu komandų eilutės priemonėmis – gal iš tingėjimo (kam ieškoti tų grafinių programų? Mokėti už jas nesiruošiu), o ir dėl patogumo (tas aspektas labiau pasijaučia, kai reikia tokias pačias užduotis atlikti pakartotinai). Įrankiai elementarūs bet kuriam Linux distributyvui: ffmpeg failų konvertavimui, „dvdauthor“ dvd gaminimui, ir „mkisofs“ dvd *.iso atvaizdo sukūrimui.

Taigi, susižvejojau internete vieną iš daugelio instrukcijų ir pamėginau.

Štai kokį failą bandžiau konvertuoti į DVD:

$ ffmpeg -i ~/Video/Video.avi
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers
  built on Jan  4 2012 16:21:50 with gcc 4.6.1
<...>
Seems stream 0 codec frame rate differs from container frame rate: 23.98 (65535/2733) -> 23.98 (10000000/417083)
Input #0, avi, from '/home/dg/Video/Video.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
    title           : Video
  Duration: 01:37:51.02, start: 0.000000, bitrate: 2142 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
<...>

Standartinė procedūra lyg ir būtų tokia:

## konvertuojam mpeg4 formatų failą į mpeg2 formatą:
$ ffmpeg -i Video.avi -aspect 16:9 -target pal-dvd video-mpeg2.mpg 
## paverčiam tą mpeg2 formato failą vienu DVD takeliu:
$ dvdauthor -o dvd/ -t video-mpeg2.mpg
## suformuojam DVD disko struktūrą
$ dvdauthor -o dvd/ -T
## gaminam DVD disko atvaizdą, kurį po to galima įkepti į fizinį DVD diską:
$ mkisofs -dvd-video -o Video-dvd.iso dvd/

Taip pagamintas DVD buvo ištemptas vertikaliai. Taip nutiko todėl, kad šio video įrašo dydis yra 720×304 px, o MPEG2 standartas būtų 720×405 px, kuris po to pritempiamas iki 16:9 santykio.

Taigi, visų pirma teko pridėti tuos 100 pikselių kaip juodas juostas virš kadro ir po kadru:

$ ffmpeg -i Video.avi -vcodec mpeg4 -vf pad=720:405:0:50:black -r 25 -aspect 16:9 -sameq -acodec copy Video-su-juostom.avi

Taigi, kas čia vyksta:
„-i Video.avi“ – pirminis filmo failas;
„-vcodec mpeg4“ – naudojamas mpeg4 kodekas;
„-vf pad=720:405:0:50:black“ – pritaikomas video filtras: „pad“ reiškia, kad pridedamos juostos, „720:405“ – filmo naujame faile dydis, „0:50“ – kad pirminio failo kadras talpinamas naujajame nuliniame stulpelyje ir penkiasdešimtoje eilutėje nuo viršutinio kairiojo kampo; „black“ – kad juostos turi būti juodos;
„-r 25“ – naujas kadrų dažnis, nes pirminio failo kadrų dažnis buvo nestandartinis (23.98), ir be šios parinkties ffmpeg failo nekonvertuodavo, rodydavo klaidą.
„-aspect 16:9“ – dvd vaizdo vienas iš galimų santykių (kitas būtų 4:3);
„-sameq“ – naudoti tą pačią vaizdo kokybę apdorojant vaizdą;
„-acodec copy“ – audio takelį tiesiog nukopijuoti;
„Video-su-juostom.avi“ – čia jau rezultatas – šiek tiek apdorotas vaizdo failas.

Šią seką atlikus gavau tokį failą:

$ ffmpeg -i Video-su-juostom.avi
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers
<...>
Input #0, avi, from 'Video-su-juostom.avi':
  Metadata:
    title           : Video
    encoder         : Lavf53.3.0
  Duration: 01:37:51.08, start: 0.000000, bitrate: 3291 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x404 [PAR 254:255 DAR 3048:1717], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
<...>

Kurį nesunkiai konvertavau į DVD diskuose naudojamą mpeg2 formatą. Beje, gali būti, kad yra būdas sujungti aukščiau esančią ir žemiau esančią komandą į vieną, gal net galutinio DVD vaizdo kokybė nuo to pagerėtų. Jei kas žinote, kaip – pasidalinkite. O aš toliau dariau taip:

$ ffmpeg -i Video-su-juostom.avi -aspect 16:9 -target pal-dvd video-mpeg2.mpg

O tada – kūriau DVD struktūrą:

$ export VIDEO_FORMAT=PAL
$ dvdauthor -o dvd/ -t video-mpeg2.mpg
$ dvdauthor -o dvd/ -T

Atkreipkite dėmesį į „export VIDEO_FORMAT=PAL.“ komandą. Nenurodžius VIDEO_FORMAT aplinkos kintamojo vykdant pirmąją komandą su „dvdauthor“ rodydavo tokią informaciją apie galimą problemą:
„INFO: no default video format, must explicitly specify NTSC or PAL“
o antroji komanda su „dvdauthor“ baigdavosi klaida, ir dvd struktūra nebūdavo iki galo sukuriama.

Na, o sukūrus visą dvd disko aplankų ir failų struktūrą (ją rasite aplanke „dvd“) belieka sukurti *.iso atvaizdą:

$ mkisofs -dvd-video -o Video-dvd.iso dvd/

Kurį po to su bet kuria dvd įrašymo programa (pvz., su K3b) galima įrašyti į DVD diską.

Arba, DVD diską galima iškepti tiesiogiai iš kietajame diske esančio aplanko „dvd“ tokia komanda:

$ growisofs -Z /dev/dvd -dvd-video dvd/

🙂

Facebooktwittergoogle_pluspinterestlinkedintumblrmail