6 channel AAC -> AC3

Yleiset ongelmat, ohjelmien kääntäminen, kernel, lirc jne.
josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

6 channel AAC -> AC3

Post by josk »

Tein tällaisen pikaisen kuvan selventämään mitä haluaisin tehdä 6 kanavaisille AAC ääniraidoille. Eli haluaisin tietokoneen jotenkin lennosta muuttamaan sen 5.1 AC3 ääneksi, mitä vahvistimenikin ymmärtää. Näin homma toimi aikoinaan windowsin puolella, mutta miten tällainen tehdään Linuxissa? Onko kellään kokemusta tai vinkkejä? Äänet liikkuvat digitaalisesti SPDIF liitännän kautta laitteiden välillä.

Image
kuvan osoite mikäli ei lataudu näkyviin: http://xs435.xs.to/xs435/09026/ac3_encoding756.png
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

User avatar
phelin
Yli-ihminen
Posts: 1256
Joined: 09.02.2005 3:00
Location: Helsinki

Post by phelin »

a52Encode Alsa pluginiin kannattaa tutustua.

Mutta taitaa silti vaatia myös tukea sovellukselta, eikä esim xbmc tue kyseistä ominaisuutta: http://xbmc.org/forum/showthread.php?t=34130

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

Yllättävän vähän löytyi faktaa googlella, mutta nyt löysin sen mitä etsin. Pitää kokeilla heti kun saan rikkomani xserverin taas kuntoon.

Härski copy/paste asiasta, jos joku muukin ihmettelee.

On-the-fly Dolby Digital Encoding
Note: Author's note: This setup does not support mixing. It's nice for listening to music, but you may want to avoid setting this to default and just set your media player's output to this manually.
Note: Upmixing can be processor intensive and can severely affect video playback. If you find your video doesn't play back properly after adding these configs it's very likely the upmixing is too demanding for your system
Alternatively, ALSA can encode to a Dolby Digital data stream. The media-plugins/alsa-plugins package has a plugin called a52 that handles the encoding. Enabling on-the-fly dolby encoding is as easy as adding this to your /etc/alsa/alsa.conf or your ~/.asoundrc:

pcm.a52encode {
type a52
}

This is the bare minimum setup. By default, it uses audio card 0, 6 channels, and a 48 KHz samplerate. Additional options can be found in /usr/share/doc/alsa-plugins-version/a52.txt.bz2.
Note: If you do not have the a52 plugin in /usr/lib/alsa-lib/libasound_module_pcm_a52.so even after emerging the latest media-plugins/alsa-plugins then your media-video/ffmpeg version most likely is too old. At the time of writing the stable ffmpeg-0.4.9_p20070616 causes media-plugins/alsa-plugins to report checking for avcodec_open in -lavcodec... no at the configure step and not to build the a52 plugin. Instead unmask and install media-video/ffmpeg-0.4.9_p20080206 and recompile alsa-plugins afterwards.
Unfortunately, stereo sound doesn't get upmixed without additional work. Add this to ~/.asoundrc as well.

pcm.stereoupmix {
type upmix
slave.pcm "a52encode"
channels 6
}

This will upmix stereo sound into surround sound and send it to the encoder plugin. I report this setup doesn't work with Amarok. Use this one instead for the same result

pcm.stereoupmix {
type route
slave.pcm "a52encode"
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5
ttable.1.4 0.5
ttable.0.5 0.5
ttable.1.5 0.5
}


And in Amarok, configure output with alsa, and plug:stereoupmix in the correct fields.
Note: This is a simple upmixer. It copies the audio to the rear speakers and averages the left/right channels before sending them to the center and subwoofer channels. If your receiver has Dolby ProLogic 2, or some other upmixing feature, try it out as well, you may prefer that sound instead.
Like above, setting alsa to use this by default is done by adding this to ~/.asoundrc:

pcm.!default "plug:a52encode"

or if you want your audio upmixed,

pcm.!default "plug:stereoupmix"
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

Edistystä, sain vahvistimen DD valon syttymään, mutta ääni oli rikkinäinen ja video jumittui paikalleen.

Argh, pitää lopettaa konffaillu tältä illalta ja kokeilla tällä täydellisemmällä ohjeella huomenna.

http://www.johannes-bauer.com/dolby/
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

Stobe
Vastasyntynyt
Posts: 4
Joined: 17.01.2009 21:17

Post by Stobe »

Mplayerillä sain tuon toimimaan lisäämällä seuraavat rivit ~/.mplayer/config tiedostoon.
channels=6
af=scaletempo,lavcac3enc=1:640:3

P.Kosunen
Yli-ihminen
Posts: 1148
Joined: 06.11.2005 14:08
Location: Helsinki

Post by P.Kosunen »

Stobe wrote:Mplayerillä sain tuon toimimaan lisäämällä seuraavat rivit ~/.mplayer/config tiedostoon.
channels=6
af=scaletempo,lavcac3enc=1:640:3
Toimiiko tuolla suoraan ilman asoundrc-virityksiä?

nm
Johtava konsultti
Posts: 3160
Joined: 22.07.2005 3:00

Post by nm »

Toimii. Nuo ovat MPlayerin audiosuotimia ja ohjelma syöttää järjestelmän S/PDIF-äänilaitteelle AC3-pakattua dataa.

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

nm wrote:Toimii. Nuo ovat MPlayerin audiosuotimia ja ohjelma syöttää järjestelmän S/PDIF-äänilaitteelle AC3-pakattua dataa.
Kiitoksia. Tämähän riittää, koska mplayeria käytän leffojen katsomiseen.
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

Ei näytä onnistuvan tämä Mplayer kikka. 6 kanavainen AAC ääni tulee 2 kanavaisena AC3:na ulos. Mikäköhän mulla on väärin?

Lihavoituna komento, punaisena input ja vihreänä ouput.
josk@vdr:/varasto$ mplayer aac-6.mkv -ao alsa:device=hw=0.2 -ac hwac3, -channels 6 -af lavcac3enc=1:640 -af channels=6
MPlayer dev-SVN-r26940 (C) 2000-2007 MPlayer Team
CPU: AMD Phenom(tm) 9550 Quad-Core Processor (Family: 16, Model: 2, Stepping: 3)
CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
Can't open joystick device /dev/input/js0: No such file or directory
Can't init input joystick
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing aac-6.mkv.
[mkv] Track ID 1: video (V_MPEG4/ISO/AVC), -vid 0
[mkv] Track ID 2: audio (A_AAC) "5.1", -aid 0, -alang fre
[mkv] Track ID 3: audio (A_AAC) "5.1", -aid 1, -alang eng
[mkv] Track ID 4: subtitles (S_VOBSUB), -sid 0, -slang fre
[mkv] Track ID 5: subtitles (S_VOBSUB), -sid 1, -slang fre
[mkv] Track ID 6: subtitles (S_VOBSUB), -sid 2, -slang eng
[mkv] Will play video track 1.
Matroska file format detected.
VIDEO: [avc1] 640x352 24bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: No such file or directory.
s3fb: can't open /dev/fb0: No such file or directory
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Forced audio codec: hwac3
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
FAAD: compressed input bitrate missing, assuming 128kbit/s!
AUDIO: 48000 Hz, 6 ch, s16le, 128.0 kbit/2.78% (ratio: 16000->576000)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio) decoder)

==========================================================================
[AO_ALSA] alsa-lib: conf.c:3843:(parse_args) Unknown parameter AES0
[AO_ALSA] alsa-lib: conf.c:3969:(snd_config_expand) Parse arguments error: No such file or directory
[AO_ALSA] alsa-lib: pcm.c:2202:(snd_pcm_open_noupdate) Unknown PCM hw:0,2,AES0=6
AO: [alsa] 48000Hz 2ch ac3 (1 bytes per sample)

Starting playback...
VDec: vo config request - 640 x 352 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.82:1 - prescaling to correct movie aspect.
VO: [xv] 640x352 => 640x352 Planar YV12
[h264 @ 0x878b090]Cannot parallelize deblocking type 1, decoding such frames in sequential order
A: 78.4 V: 78.4 A-V: 0.002 ct: 0.044 0/ 0 11% 1% 15.4% 0 0

MPlayer interrupted by signal 2 in module: sleep_timer
A: 78.4 V: 78.4 A-V: 0.001 ct: 0.044 0/ 0 11% 1% 15.4% 0 0
Exiting... (Quit)
josk@vdr:/varasto$
aac-6.mkv on 6-kanavainen aac-leffa.
-ao alsa:device=hw=0.2 osoittaa SPDIF laitteeseen
-channels 6 pyytää prosessoimaan 6 kanava ääntä
-ac hwac3, yrittää ensiksi tällä kodekilla hwac3 codec, mikäli se ei toimi, niin käyttää default kodekkia.
-af lavcac3enc=1:640 konvertoi äänen hyvä laatuiseksi ac3-tiedostoksi
-af channels=6 varmistaa, että lopullinen ääni on 6 kanavainen
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

nm
Johtava konsultti
Posts: 3160
Joined: 22.07.2005 3:00

Post by nm »

josk wrote:Ei näytä onnistuvan tämä Mplayer kikka. 6 kanavainen AAC ääni tulee 2 kanavaisena AC3:na ulos.
Miten olet todennut, että se on kaksikanavaista? MPlayerin ALSA-ulostulon tuloste on luultavasti harhaanjohtava silloin kun käytetään DD/DTS passthrough'ta. Itselläni tuo kyllä tuntui antavan 5.1 AC3-ääntä DTS-lähteestä muunnettuna (tosin kanavat olivat väärillä paikoilla vakiosäädöillä). Siis vaikka MPlayerin tulosteessa luki "AO: [alsa] 48000Hz 2ch ac3 (1 bytes per sample)". Samaa se sanoo silloinkin kun toistan alkuperäistä 5.1 DD/DTS-raitaa hwac3/hwdts-kodekilla.

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

nm wrote: Miten olet todennut, että se on kaksikanavaista? MPlayerin ALSA-ulostulon tuloste on luultavasti harhaanjohtava silloin kun käytetään DD/DTS passthrough'ta. Itselläni tuo kyllä tuntui antavan 5.1 AC3-ääntä DTS-lähteestä muunnettuna (tosin kanavat olivat väärillä paikoilla vakiosäädöillä). Siis vaikka MPlayerin tulosteessa luki "AO: [alsa] 48000Hz 2ch ac3 (1 bytes per sample)". Samaa se sanoo silloinkin kun toistan alkuperäistä 5.1 DD/DTS-raitaa hwac3/hwdts-kodekilla.
Otin nyt 6 channel AC3/DTC/AAC testivideot käyttöön ja homma näyttäisi toimivan kuten sanoit, vaikka logissa lukee ihan omia. Olisi pitänyt tehdä parempi testi heti alkuun kuin lukea logia ja katsella jotain 6 kanavaista leffaa. Kiitoksia ja suuri kumarrus. Nyt pulttaa tuon vielä mplayerin confikkiin ja varmistan, että saan MMS:n toistamaan samalla tavalla.
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

Jesh, nyt toimii tuo komentorivi oikein...

ensiksi tarkistaa, että onko DTS, jos on niin päästää sen lävitse
seuraavaksi tarkistaa, että onko AC3, jos on niin päästää sen lävitse
kaikki muut 6 kanava äänet koodataan lennosta AC3 ääniksi

mplayer DTS/AC3/AAC.avi -ao alsa:device=hw=0.2 -ac hwdts, -ac hwac3, -channels 6 -af lavcac3enc=1:640 -af channels=6
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

josk
Vanhempi asiantuntija
Posts: 170
Joined: 02.07.2004 3:00
Location: HELSINKI

Post by josk »

Toimiva .mplayer/config mikäli joku tuota kaipailee:

Code: Select all

#SUBTITLE FONT SIZE AND SUPPORT FOR 4 CORE CPU'S
subfont-text-scale=3
lavdopts:threads=4

# AC3/DTS PASSTHROUGH and ON THE FLY AC3 ENCODING FOR 6 CHANNEL AAC FILES
ao=alsa:device=hw=0.2 
#For both AC-3 and DTS passthroug, use -afm hwac3
afm=hwac3, 
channels=6 
af=scaletempo,lavcac3enc=1:640:3
Mikäli My Media System käytössä, niin /etc/mms/config -tiedostoon seuraavat rivit tällaisiksi, niin johan toimii

Code: Select all

first_dev_name = Default
first_dev_digital = 
first_dev_channels = 
first_dev_output = alsa
first_dev_path = default

second_dev_name =
second_dev_digital = 
second_dev_channels = 
second_dev_output = 
second_dev_path = 

third_dev_name =
third_dev_digital =
third_dev_channels =
third_dev_output =
third_dev_path =
-- elämä on kuolemaanjohtava tauti, joka tarttuu sukupuolisessa kanssakäymisessä ---

wilho
Vastasyntynyt
Posts: 6
Joined: 05.09.2007 8:34

Post by wilho »

Onko kellään käsitystä, saako noita mplayerin audiofilttereitä säädettyä jotenkin äänilähteen mukaan?

DTS:t ja AC3:t menee passthroughna + monikanava-aac -äänet enkoodaantuu nätisti ac3:na näin:

mplayer -ac hwdts,hwac3, -channels 6 -af channels=6:6:0:0:1:4:2:3:3:5:4:1:5:2,lavcac3enc=1:640 tiedosto.mp4

Mutta mutta, stereoäänillä varustettu tiedosto ei soikkaan, mplayer antaa erroria "[channels] Invalid routing in pair nr. 2".

Ajattelin tehdä bashi-skriptin, jolla valitaan eri parametrit eri tiedostopäätteelle, mutta sitä ennen, onko tuohon parempaa keinoa?

P.Kosunen
Yli-ihminen
Posts: 1148
Joined: 06.11.2005 14:08
Location: Helsinki

Post by P.Kosunen »

mplay-0.5.3.tgz

Tuossa on monipuolinen mplayerin käynnistyspaketti. Tuon kanssa voi käyttää omia konffeja kontainerin/videon/audion yms. mukaan. Vaikka et koko skriptiä käyttäsi niin tuosta saa hyvin mallia.

http://www.vdr-portal.de/board/thread.p ... adid=62306

Post Reply