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
- 5346 megtekintés
Hozzászólások
Írj rá scriptet.
- A hozzászóláshoz be kell jelentkezni
+1
ha másképp nem akkor ogg->wav és utána wav->mp3
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
- A hozzászóláshoz be kell jelentkezni
+ A wav mentése rész pipe-al áthidalható :)
- A hozzászóláshoz be kell jelentkezni
script + decode + lame
It doesn't matter if you like my song as long as you can hear me sing
- A hozzászóláshoz be kell jelentkezni
scriptet ki tudnátok fejteni bővebben?:) köszi
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
A lame nem tud a stdin-re fogadni anyagot, vagy a mplayer nem tud a stdout-ra küldeni wav-ot?
- A hozzászóláshoz be kell jelentkezni
stin/out-ra sose küldem még hangot, sztem egyszerűbb egy temporary állományba tárolni a dolgokat amivel dolgozhat, de miért fontos stdin/out-ra küldeni a hangot?
--
Ubuntu Linux
- A hozzászóláshoz be kell jelentkezni
Mert akkoe elméletben nincs annyi lemezmozgás, egyből a mp3 fájl íródik meg.
- A hozzászóláshoz be kell jelentkezni
Igaz, erre nem is gondoltam :)
--
Ubuntu Linux
- A hozzászóláshoz be kell jelentkezni
az mplayer nem tud küldeni.
- A hozzászóláshoz be kell jelentkezni
És ha a file neve /dev/stdout?
- A hozzászóláshoz be kell jelentkezni
Az MPlayer nem tud "kussban maradni" a stdoutot really-quiet módban is telenyomja statisztikával, ami persze korruptálja a kimeneti streamet.
A HTML dokumentációban (vagy a manpage-ben) meg is említik, hogy a program nem működik pipe-ban (csak olvasni tud, az stdinről)
- A hozzászóláshoz be kell jelentkezni
Damn... Nem tudtam.
- A hozzászóláshoz be kell jelentkezni
Hi!
Minek akarod az oggokat mp3ba kodolni?
By(t)e
TBS::Antiemes
- A hozzászóláshoz be kell jelentkezni
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ő.
- A hozzászóláshoz be kell jelentkezni
szerintem vagy telefonon vagy mp3 lejátszón akarja hallgatni, annó nekem is azért kellett
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Nezd a Samsungokat IMHO. Dragak, viszont jo a hangjuk es altalaban tudjak az ogg-ot. Ja, es normal PD-kent mukodnek. (Egyedul az autoradioban nem sikerult mukodesre birnom, az csak normal PD-t visel el, minden mas, USB-csatlakozoval rendelekzo gepen tarolokent ismerte fel.)
- A hozzászóláshoz be kell jelentkezni
é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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Ne is mondd. Ilyen avs se létezik, csak ennél a cégnél.
__________________________________________________________________
A tudatlanság: erő.Ne
- A hozzászóláshoz be kell jelentkezni
dupla
- A hozzászóláshoz be kell jelentkezni
Köszönöm szépen a válaszokat, többet is kiprobáltam és müködnek! :)
- A hozzászóláshoz be kell jelentkezni