Ogg to MP3

Fórumok

Sziasztok!

ADott egy könyvtár ami tele van .ogg zenékkel. Ezeket szeretném átkonvertálni mp3ba. Lehetőleg valami olyan megoldás kéne, hogy hangminőség jó legyen, és ne kelljen egyenként beírogatnom a fájlneveket.

Üdv, és előre is köszönöm

Hozzászólások

script + decode + lame
It doesn't matter if you like my song as long as you can hear me sing

scriptet ki tudnátok fejteni bővebben?:) köszi

itt a kész megoldás:

http://marginalhacks.com/bin/ogg2mp3

#!/usr/bin/perl -w
# Filename: ogg2mp3
# Author: David Ljung Madison
# See License: http://MarginalHacks.com/License
# Description: Converts ogg to mp3, with artist/title/info
# Ideas from: Joseph E. O'Doherty

use strict;
use File::Spec;

##################################################
# Setup the variables
##################################################
my $PROGNAME = $0;
$PROGNAME =~ s|.*/||;

my $TMPFILE = File::Spec->catfile( File::Spec->tmpdir(), "$PROGNAME.$$.wav" );

#########################
# Ogg decoder
#########################
# Different versions of ogg123 handle files differently! Argh!
#my $OGGDEC = "ogg123 -d wav -o file:$TMPFILE";
#my $OGGDEC = "ogg123 -d wav -f $TMPFILE";
# Just use oggdec instead.
# Add -Q for quiet..
my $OGGDEC = "oggdec -o $TMPFILE";

#########################
# MP3 encoder
# Choose your favorite..
#########################
my $MP3ENC = "toolame"; <-------------- csak a linkelt scripten erre át kell irni, mert alapból lame itt
#my $MP3ENC = "notlame";

my $OGGINFO = "ogginfo";
my $MP3INFO = "id3tool";

##################################################
# Usage
##################################################
sub usage {
foreach my $msg (@_) { print STDERR "ERROR: $msg\n"; }
print <

Usage:\t$PROGNAME [-d] [-o ] ..
Converts ogg to mp3
-d Set debug mode
-o Specify output directory
-keepdir Keep directory structure inside specified -o directory
-f Force rewriting of mp3 if it already exists
--enc_opts .. -- Options for encoding tool
--dec_opts .. -- Options for decoding tool

Example: $PROGNAME --enc_opts -b 64 -- *.ogg

USAGE
exit -1;
}

sub get_dashdash {
my @dash;
while ($#ARGV>=0) {
my $arg=shift(@ARGV);
last if $arg eq "--";
push(@dash,$arg);
}
@dash;
}

sub parse_args {
my $opt = {};
my $outdir;
my @oggs;
while (my $arg=shift(@ARGV)) {
if ($arg =~ /^-h$/) { usage(); }
if ($arg =~ /^-d$/) { $MAIN::DEBUG=1; next; }
if ($arg =~ /^-o$/) { $opt->{out}=shift @ARGV; next; }
if ($arg =~ /^-keepdir$/) { $opt->{keepdir}=1; next; }
if ($arg =~ /^-f$/) { $opt->{force}=1; next; }
if ($arg =~ /^--enc_opts$/) { push(@{$opt->{enc_opts}}, get_dashdash()); next; }
if ($arg =~ /^--dec_opts$/) { push(@{$opt->{dec_opts}}, get_dashdash()); next; }
if ($arg =~ /^-/) { usage("Unknown option: $arg"); }
push(@oggs, $arg);
}
usage("No oggs specified") unless @oggs;

($opt,@oggs);
}

sub debug {
return unless $MAIN::DEBUG;
foreach my $msg (@_) { print STDERR "[$PROGNAME] $msg\n"; }
}

##################################################
# Genre code
##################################################
my @GENRES;
open(G,"$MP3INFO -l|") || die("[$PROGNAME] Can't get genre info: [$MP3INFO -l]\n");
while () {
push(@GENRES,$1) if (/^(\S.*\S)\s+\|/);
}
close G;

sub get_genre {
my ($genre) = @_;
return undef unless $genre;
my @g = grep(/^$genre$/i, @GENRES);
return $g[0] if @g;
@g = grep(/$genre/i, @GENRES);
print STDERR "[$PROGNAME] Multiple genre matches [$genre -> @g]\n" if $#g>0;
return $g[0] if @g;
# No match
print STDERR "[$PROGNAME] Unknown genre [$genre]\n";
return undef;
}

##################################################
# Main code
##################################################
sub ogginfo {
my ($ogg) = @_;

# Get ogg tags
open(TAGS,"$OGGINFO \Q$ogg\E |") || die("[$PROGNAME] Couldn't run ogginfo [$ogg]\n");
my %i;
while() {
chomp;
next if /^\s*$/;

## The old way:
# die("[$PROGNAME] Bad ogginfo: [$_]") unless /^\s*(\S+)=(.*)$/;
# $i{$1} .= $2;

## Old ogginfo:
## "key=value"
##
## New ogginfo:
## "Some comment stuff..."
## " key=value"
##
## I suppose I could parse the entire output to see if it's new or
## old, but it looks like the comments never have '=' in them, and who
## cares if it does anyways? So, we'll just use a loose regexp:
if (/^\s*(\S+)=(.*)$/) {
my ($tag,$val) = (lc($1),$2);
$i{$tag} .= $val
}
}
close(TAGS);
\%i;
}

sub set_mp3info {
my ($mp3,$info) = @_;
my $set;
# Newer id3tool supports setting track
#$set .= " -n \QTrack $info->{tracknumber}\E" if $info->{tracknumber} && !$info->{comment};
$set .= " -c \Q$info->{tracknumber}\E" if $info->{tracknumber};
$set .= " -t \Q$info->{title}\E" if $info->{title};
$set .= " -a \Q$info->{album}\E" if $info->{album};
$set .= " -r \Q$info->{artist}\E" if $info->{artist};
$set .= " -n \Q$info->{comment}\E" if $info->{comment};
my $genre = get_genre($info->{genre});
$set .= " -G \Q$genre\E" if $genre;
$set .= " -y \Q$info->{date}\E" if $info->{date} && $info->{date} =~ /^\d+$/;
return print STDERR "[$PROGNAME] No tag info for [$mp3]\n" unless $set;
system("$MP3INFO $set \Q$mp3\E");
print STDERR "[$PROGNAME] Errors from:\n $MP3INFO $set $mp3\n $!\n" if $?;
}

sub ogg2mp3 {
my ($opt,$ogg) = @_;
my $mp3 = $ogg;
$mp3 =~ s/(\.ogg)?$/.mp3/i;

# Handle outdir if specified
if ($opt->{out}) {
$mp3 =~ s|.*/||g unless $opt->{keepdir};
$mp3 = "$opt->{out}/$mp3";
}

return print STDERR "[$PROGNAME] Skipping mp3 (already exists) [$mp3]\n"
if !$opt->{force} && -f $mp3;

my $dec_opts = $opt->{dec_opts} ? join(' ',@{$opt->{dec_opts}}) : "";
my $enc_opts = $opt->{enc_opts} ? join(' ',@{$opt->{enc_opts}}) : "";

print "$ogg -> $mp3\n";

# Decode
# system("$OGGDEC \Q$ogg\E | $MP3ENC - \Q$mp3\E");
# print STDERR "[$PROGNAME] Errors from:\n $OGGDEC \Q$ogg\E | $MP3ENC - \Q$mp3\E\n $!\n"
# if $?;
system("$OGGDEC $dec_opts \Q$ogg\E");
print STDERR "[$PROGNAME] Errors from:\n $OGGDEC \Q$ogg\E\n $!\n" if $?;

# Encode
system("$MP3ENC $enc_opts $TMPFILE \Q$mp3\E");
print STDERR "[$PROGNAME] Errors from:\n $MP3ENC $TMPFILE \Q$mp3\E\n $!\n" if $?;
unlink $TMPFILE;

my $info = ogginfo($ogg);
set_mp3info($mp3,$info);
}

sub main {
my ($opt,@oggs) = parse_args();

map(ogg2mp3($opt,$_), @oggs);
}
main();

Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.

debian 4.0 - linux-2.6.22.1-pancs1-wifi1 - 2.6.22.1 kernel madwifivel itt

Sztem ez elég egyszerű, én így szoktam:

#!/bin/bash

current_directory=$( pwd )

#remove spaces
for i in *.ogg; do mv "$i" `echo $i | tr ' ' '.'`; done

#remove uppercase
for i in *.[Oo][Gg][Gg]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done

#Rip with Mplayer / encode with LAME
for i in *.ogg ; do mplayer -ao pcm:file=tmp.wav $i && lame tmp.wav $i; done

rm tmp.wav
#convert file names
for i in *.ogg; do mv "$i" "`basename "$i" .ogg`.mp3"; done

--
Ubuntu Linux

Hi!

Minek akarod az oggokat mp3ba kodolni?

By(t)e
TBS::Antiemes

Ez engem is érdekelne.
Egyébként soundkonvert, vagy soundconverter (kde/gnome de a gnomes iszonyú buta:))
Persze, szubjektív, de én 40-45%helyet takarítottam meg az mp3->ogg konvertálással, medium beállítás mellett, a különbséget ugyanis nem lehet hallani (értsd: én nem hallom:)) a loseless meg a medium kozt, ha a source mp3. És az mp3 licenszileg sem áll a toppon, tehát ha csak magadnak akarod, akkor nincs értelme. Persze, ha nem oggmentes mp3lejátszóra akarod... de arra meg ott az a2mp3 vagy mi.

__________________________________________________________________
A tudatlanság: erő.

Sok haszna van, ha mondjuk 1-2 éve vettél MP3 lejátszót, amikor Vorbist is ismerő eszköz még a mocskosul drága, és a dzsunka gagyi ("for updates please visit our web site", de a manualban URL sehol, a google pedig csak annak a boltnak az árlistáját dobja ki a "márka"névre, ahol vetted - ismerős? :) ) kategóriában volt csak.

Hi!

Itt ragadom meg az alkalmat: Hol/mennyiert lehet venni Ogg-os lejatszot? Hatalmas elony, ha Linux alol ra tudom tolteni a zeneket, peldaul ha pendrive-kent is funkcional. Tovabbi nagy elony, ha nem tul csicsa (nekem a lekerekitett forma, illetve az "ezust" szinu reszek a "csicsa").

By(t)e
TBS::Antiemes

én is szívtam már pár kört ezzel az autórádiós usb-s témával. végül arra jutottam, hogy az én mp3 játékosomat (creative muvo tx se) nem volt hajlandó felismerni, de a kínai dzsunka játékost, amiben volt elem azt igen. szóval nem adott tápot az usb-re szerintem, vagy nemtom. lehet, hogy a kínai eszközök egymással kompatibilisek, csak a márkákkal nem? :D
--
Peace, Love, Unity, Respect

Szerző: antiemes
Dátum: cs, 2007-08-02 02:47

-----------------------------------------------------

Hi!

Itt ragadom meg az alkalmat: Hol/mennyiert lehet venni Ogg-os lejatszot? Hatalmas elony, ha Linux alol ra tudom tolteni a zeneket, peldaul ha pendrive-kent is funkcional. Tovabbi nagy elony, ha nem tul csicsa (nekem a lekerekitett forma, illetve az "ezust" szinu reszek a "csicsa").

Mindjárt kétféle tippet is tudok:
1.) Auchan: Orinon OMP4 1GB és garantáltan lejátsza az ogg-vorbist,bár ezt a leírás NEM írja róla (külsőre hasonlít az ipodra) csak 1,5"-os OLED kijelzője van, de magyar menü,rádió, hangfelvétel rádióról és mikrofonról (mikrofon: 32, 64Kbps /8000Hz/ wav és rádióról 32, 64Kbps és 192Kbps MONÓ) stb.
Továbbá a 2.4.x-es Linux kerneltől felfelé kompatibilis és PenDrive-ként is használható.
2.4.x-es kernellel /dev/sda-ként mountolható

Az ára az Auchanban 14 900- FT körül van, de szerintem máshol olcsóbban is hozzájuthatsz.

2.) e-RONIX EMP-620 ami a leírás szerint is lejátsza az ogg-vorbist.
http://www.edigital.hu/product.php?productid=27720&cat=0&page=

A 2GB-os jelenleg 16 900FT

Köszönöm szépen a válaszokat, többet is kiprobáltam és müködnek! :)