Login

Statistici

Membri: 188
Stiri: 1023
Linkuri: 24
Vizitatori: 1641711

Sponsored links

Mirror MYLRo.org

Carti Linux direct de pe mirror-ul MYLRo.org
 
HowTo: Conversie video cu mencoder E-mail
  • Currently 4.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Rating: 4.0/5 (20 votes cast)

Scris de Cypress   
Sunday, 28 October 2007
Când am dat de mencoder acum mulţi ani, nu i-am acordat prea multă atenţie... Asta până ce nu am avut nevoie să convertesc nişte fişiere video. Am căutat string-uri de comenzi pe Google, mi-am făcut treaba şi m-am apucat apoi curios să văd ce mai poate să facă. Am salvat liniile de comenzi într-un fişier din KNotes şi de atunci le folosesc ori de câte ori am nevoie să redimensionez un film sau să convertesc un fişier multimedia.
Mencoder este parte a pachetului MPlayer şi este un utilitar de conversie a fişierelor multimedia. Dispune de câteva interfeţe grafice, dar nu acestea sunt scopul prezentului articol. Oricine poate downloada una dintre acestea si să facă clicka-clicka. Numiţi-mă de modă veche dar eu încă prefer CLI-ul, cel puţin în cazul conversiilor. Văd în real-time ce se petrece şi nu îmi consum resursele cu un GUI care poate se şi blochează.
Mencoder suportă - la fel ca şi MPlayer - o mulţime de formate: MPEG/VOB, AVI, ASF/WMA/WMV, RM, QT/MOV/MP4, Ogg/OGM, MKV, VIVO, FLI, FLV si multe altele.

Sintaxa este destul de simplă dar suportă o mulţime de opţiuni. Sunt puţine lucrurile pe care progarmul să nu le ştie face când vine vorba de conversii multimedia. În cazul fişierelor video, putem converti un fişier video cam aşa:
mencoder fisier.mpg -o fişier.avi -ovc lavc -oac lavc
-ovc şi -oac reprezintă opţiunile pentru codecul video, respectiv audio pe care mencoder le va folosi în acest exemplu. Cum aflăm ce codecuri avem instalate? Folosind
mencoder -ovc help
şi
mencoder -oac help
De exemplu, prima comandă afişează - în cazul meu - următoarele:
cypress@malacka:~$ mencoder -ovc help
MEncoder 1.0rc1-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Genuine Intel(R) CPU           T2400  @ 1.83GHz (Family: 6, Model: 14, Stepping: 8)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   vfw      - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.
   qtvideo  - QuickTime DLLs, currently only SVQ1/3 are supported.
   xvid     - XviD encoding

a doua comandă îmi oferă lista codecurilor audio de care dispun:
cypress@malacka:~$ mencoder -oac help
MEncoder 1.0rc1-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Genuine Intel(R) CPU           T2400  @ 1.83GHz (Family: 6, Model: 14, Stepping: 8)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2


Available codecs:
   copy     - frame copy, without re-encoding (useful for AC3)
   pcm      - uncompressed PCM audio
   mp3lame  - cbr/abr/vbr MP3 using libmp3lame
   lavc     - FFmpeg audio encoder (MP2, AC3, ...)
   faac     - FAAC AAC audio encoder

Buuun. Deci pot converti diverse formate în XviD cu parte audio MP3. Dar poate doresc un fişier cu partea audio lipsită de compresie şi mă decid să folosesc PCM:
mencoder fisier.mpg -o fisier.avi -ovc lavc -oac lavc -lavcopts acodec=pcm
După cum vedeţi, putem specifica cu opţiunea acodec tipul codecului audio pe care vrem să-l folosim. În cazul fişierelor cu compresie MP3 putem chiar alege un bitrate dacă ataşăm opţiunea abitrate:
mencoder fisier.mpg -o fisier.avi -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128
Ne putem folosi şi de lameopts dacă dorim. În plus, putem crea şi fişiere cu compresie audio VBR (Variable Bit Rate):
mencoder fisier -o fisier.avi -ovc lavc -oac mp3lame -lameopts vbr=2:q=3
(unde q poate fi orice cifră între 0 şi 9)
Desigur, acelaşi lucru îl putem face şi cu partea video a fişierului:
mencoder fisier.mpg -o fisier.avi -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128 vcodec=xvid
Dacă nu doriţi compresie video, folosiţi vcodec=copy. Frame-urile vor fi copiate bucată cu bucată din fişierul-sursă.
Putem să folosim direct xvid sau divx fără a mai specifica că dorim lavc:
mencoder -ovc xvid -oac mp3lame -o destinatie.avi sursa.avi
Dacă vrem calitate customizabilă, adăugăm câteva opţiuni conversiei XviD:
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=878 -o destinatie.avi sursa.avi
Cu cât bitrate-ul este mai mare, cu atât calitatea fişierului video va fi mai bună (în detrimentul dimensiunii fişierului rezultat).
Şi dacă tot am ajuns până aici, să trecem la lucruri mai serioase şi să vedem cum putem realiza o copie XviD după un DVD folosind modul two pass. Folosind two pass vom obţine un fişier mult mai bine comprimat dar va trebui să aşteptăm în faţa monitorului o bună bucată de vreme în timp ce procesorul se chinuie pe la 98% să termine codarea.
mencoder dvd:// -oac mp3lame -ovc xvid -xvidencopts pass=1 -o /dev/null
mencoder dvd:// -oac mp3lame -ovc xvid -xvidencopts pass=2:bitrate=800 -o fisier.avi
Bitrate-ul il puteti specifica dupa gust. Cum problema fisierelor care nu incap pe CD nici cu overburn inca persita la unii, sa va dau un exemplu de conversie din DVD în XviD cu rezultat un fişier de 700MB folosind bitrate:
mencoder dvd:// -ovc xvid -oac mp3lame -xvidencopts bitrate=-700000 -o fisier.avi
Dar staţi o clipă. Nu ne convine că procesorul este turat la maxim aşa că am vrea puţină libertate de mişcare. Ne vom folosi de nice e pentru a putea folosi PC-ul şi pentru alte lucruri în timpul conversiei:
nice -n 19 mencoder dvd:// -ovc xvid -oac mp3lame -xvidencopts bitrate=-700000 -o fisier.avi


Ce mai putem face cu mencoder?



Raspuns: multe chestii. Iată mai jos câteva exemple în clasicul stil mură-n gură:

Creăm un fişier video din totalul fişierelor JPG al directorului curent, totul la un FPS de 24:
mencoder "mf://*.jpg" -mf fps=24 -o fisier.avi
Să zicem că avem un folder plin de filmuleţe de diferite formate şi am vrea să le unim cap la cap într-un singur mare fişier. Le redenumim în funcţie de ordinea în care dorim să apară în fişierul-destinaţie şi folosim
mencoder * -o output.avi
Poate vrem să adăugăm un fişier audio diferit unui anumit film (ca un soundtrack). Folosim
mencoder sursa.avi -o destinatie.avi -ovc copy -oac mp3lame -audiofile fisier.wav (in cazul fişierelor necomprimate)
mencoder sursa.avi -o destinatie.avi -ovc copy -oac copy -audiofile fisier.mp3 (in cazul fişierelor comprimate)
Cum mai demult foloseam iPodLinux pe Nano-ul meu de 1GB, converteam fişierele video folosind
mencoder -ovc raw -ofps 15 -oac pcm -vf scale=176:-2,expand=176:132,format=bgr16 input.file -o output.avi
Am şi un PocketPC pe care îl iau cu mine la drum lung. De obicei pun vreo două filme pe un SD de 512MB, filme pe care le convertesc în prealabil cu
mencoder -oac mp3lame -lameopts mode=3:preset=24 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=384:keyint=250 -vop expand="320:240" -o aoutout.avi input.avi
sau
mencoder input.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=200:abitrate=48 -vop scale=320:240 -oac copy -o output.avi
Diferenţa dintre prima şi a  doua comandă este că numero due scalează fişierul iar numero uno doar îl întinde pe întreg ecranul de 320x240 al PDA-ului.
Ai o cameră web? Ia încearcă să înregistrezi ce vede:
mencoder tv:// -tv driver=v4l:device=/dev/video0:width=640:height=480:forceaudio -ovc lavc -oac lavc -lavcopts vcodec=mpeg4:acodec=mp3 -ffourcc divx -o test.avi
Poate vrei să îţi înregistrezi show-urile preferate de la TV prin placa de sunet. E noapte, e târziu, vrei să dormi dar parca nu ai rata filmul serii. Cu o comandă precum cea de mai jos introdusă în cron, împaci şi capra, şi varza:
mencoder tv:// -v -tv driver=v4l:width=720:height=576:input=1:device=/dev/video0:immediatemode=0: /
alsa:adevice=hw.0,0:outfm t=yv12 -o rezultat.avi -af volume=10:0 -ovc lavc -lavcopts vcodec=mjpeg:aspect=4/3 -aspect 4:3 -oac pcm -endpos 02:00:00
Dacă vrei să adaugi şi comentarii sau alte date filmului, obţinând în acelaşi timp un fişier video de dimensiuni rezonabile, foloseşte
mencoder -tv on:driver=v4l:device=/dev/v4l/video1: channel=27:width=768:h eight=576: fps=25 -vop lavcdeint,denoise3d=4:3:6 -oac mp3lame -lameopts abr=:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500 -info name=testez:artist=channel-27:genre=horror: /
subject=tralala:copyright=Cypress:srcform=tv:comment='ripped by cypress' -frames 500 -o videocap.avi
Mai jos aveţi două scripturi interesante care automatizează procesul de DVD ripping, respectiv de înregistrare de la TV. Nu sunt autorul lor, le-am găsit pe net şi poate vă vor fi de ajutor:

#!/bin/bash

if [ $# != 1 ]; then
  echo "Use: dvd-ripping <movie size in seconds>"
  echo ""
  exit 1
fi

# Biggest file size is 700mb, which is
# 716800kbytes but just in case we use a little smaller size

MAXSIZE=700000
SEGUNDOS=$1
MINUTOS=$(($SEGUNDOS/60))

#Audio rate is 128bits/s which is 16kbytes/s
AUDIOSIZE=$((16*$SEGUNDOS))
LIBRE=$(($MAXSIZE - $AUDIOSIZE))
RATE=$((($LIBRE*8) / $SEGUNDOS))

echo "Calculating rate for movie which lasts $MINUTOS minutes..."
echo "Estimated rate: $RATE"
FINALSIZE=$(( ($RATE * $SEGUNDOS)/8 + $AUDIOSIZE))
echo "Estimated size: $FINALSIZE"
echo "The command is:"
echo "mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=$RATE \
 -vop scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o file.avi"
Script TV-Rip

#!/usr/bin/perl -w
################################################
#   tv_rec
#
#   Records TV using mencoder and my bttv tv card.
#
#   $ARGV[0] is the name of the show (used in the filename).
#   $ARGV[1] is the channel to record.
#   $ARGV[2] is the time in minutes to record.
################################################
use POSIX;

die "3 Args: Name, Channel, Minutes\n" unless @ARGV == 3;

my ($show, $channel, $length) = @ARGV;
my $tvDir = "/home/josiah/tv";
$length *= 60; # Go from minutes to seconds.
my $today = strftime "%Y-%m-%d", localtime;
my $file = "$tvDir/$show-$today.avi";

if (-f $file)
{
  foreach (0..1000)
  {
    print "($_)\n($file.$_)\n";
    next if -f "$file.$_";
    $file .= ".$_";
    last;
  }
}

my $cmd = "/usr/bin/mencoder -tv on:" .
          "driver=v4l:" .
          "norm=PAL:" .
          "chanlist=newzealand:" .
          "width=320:" .
          "height=240:" .
          "channel=$channel:" .
          "alsa:amode=1 " .
          "-ovc lavc " .
          "-lavcopts vcodec=mpeg4:vhq:vbitrate=1000:vme=5 " .
          "-oac mp3lame " .
          "-lameopts vbr=0:br=128:aq=5:mode=1 " .
          "-ofps 25 " .
          "-o $file " .
          "-endpos $length";
my $ret = system $cmd;
exit $ret;



Cu aceasta închei şi vă doresc ripping plăcut. Acest articol îl declar sub Creative Commons şi poate fi modificat/adăugit/postat prin alte părţi. Faceţi ce vreţi cu el :)

GUI-uri Mencoder

   

 

Comments
Add NewSearchRSS
Only registered users can write comments!

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.


 

Ultimele comentarii

Tips & Tricks

Foloseste aceeasi partitie SWAP in Linux si Windows
Daca esti in lipsa de spatiu si doresti sa folosesti aceeasi partitie swap si in Linux si in Windows, poti sa faci urmatorul truc:
1. Formateaza partitia ca si partitie DOS si creaza fisierul SWAP Windows pe ea, dar nu rula inca sistemul de operare.
2. Booteaza in Linux si s alveaza partitia intr-un fisier. Presupunand ca partitia swap se afla pe /dev/hda5, vom face
dd if=/dev/hda5 of=/etc/dosswap
3. Comprima fisierul dosswap:
gzip -9 /etc/dosswap
4. Adauga urmatoarele in fisierul /etc/rc pentru a pregati si instala swap-ul in Linux. XXXXX este numarul de blocuri din partitia swap:
mkswap /dev/hda5 XXXXX
swapon -av   

5. Adauga partitia in /etc/fstab
 

Vizitatori Online

Doneaza pentru un banner MYLRo.org pe Distrowatch

Introdu o suma de macar 5$ (astfel incat suma donata sa fie cu ceva mai mare decat taxa de transfer PayPal) si trimite-mi un mail cu un link catre site-ul tau. Link-ul va fi afisat pe mainpage-ul MYLRo.org si 90% din paginile aferente site-ului pe intreaga perioada a hostarii bannerului de pe DistroWatch.

Sponsored links