LINUX.ORG.RU

[печаль] LOSSLESS 2 LOSSLESS без потерь? Ага, как же!

 


0

0

Если декодеры/кодеры годные и правильно настроены, то конвертирование lossless (далее LL) 2 LL колько угодно раз должно происходить без потерь. Проведем эксперимент:

Действующие лица: flac, ffmpeg, mplayer, альбом Pink Floyd в формате ape.

Задача: ape -> wav, wav -> flac, flac -> wav. При этом первый и последний wav'ы должны быть одинаковыми до байта.

~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ file CDImage.ape 
CDImage.ape: Monkey's Audio compressed format version 3990 with normal compression, stereo, sample rate 44100
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ ls
covers/  CDImage.ape  CDImage.cue  CDImage.log
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ cat `which any2wav`
#!/bin/sh

INPUTFILE=$1
OUTPUTFILE=$2

mplayer "$INPUTFILE" -vc null -vo null -ao pcm:fast:file="$OUTPUTFILE.wav"
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ any2wav CDImage.ape "1_ape2wav"
MPlayer SVN-r31303-4.4.3 (C) 2000-2010 MPlayer Team

Playing CDImage.ape.
libavformat file format detected.
[lavf] stream 0: audio (ape), -aid 0
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 0.0 kbit/0.00% (ratio: 0->176400)
Selected audio codec: [ffape] afm: ffmpeg (FFmpeg Monkey's Audio)
==========================================================================
[AO PCM] File: 1_ape2wav.wav (WAVE)
PCM: Samplerate: 44100Hz Channels: Stereo Format s16le
[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A:2576.7 (42:56.7) of 2576.7 (42:56.7)  0.9% 

Exiting... (End of file)
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ flac --best --verify "1_ape2wav.wav" -o "2_wav2flac.flac"

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

1_ape2wav.wav: Verify OK, wrote 218614157 bytes, ratio=0.481
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ any2wav 2_wav2flac.flac "3_flac2wav"
MPlayer SVN-r31303-4.4.3 (C) 2000-2010 MPlayer Team

Playing 2_wav2flac.flac.
Audio only file format detected.
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 678.7 kbit/48.10% (ratio: 84841->176400)
Selected audio codec: [ffflac] afm: ffmpeg (FFmpeg FLAC audio)
==========================================================================
[AO PCM] File: 3_flac2wav.wav (WAVE)
PCM: Samplerate: 44100Hz Channels: Stereo Format s16le
[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A:2578.1 (42:58.0) of 2576.0 (42:56.0)  0.2% 

Exiting... (End of file)
|
|
~/tmp/1973 The Dark Side Of The Moon (Black Triangle) $ llr
total 1303676
drwxr-xr-x 2 X Y      4096 2010-04-03 03:20 covers/
-rw-r--r-- 1 X Y 454535804 2010-06-10 14:53 1_ape2wav.wav
-rw-r--r-- 1 X Y 218614157 2010-06-10 14:53 2_wav2flac.flac
-rw-r--r-- 1 X Y 454443052 2010-06-10 14:58 3_flac2wav.wav
-rw-r--r-- 1 X Y 207332660 2010-04-03 03:21 CDImage.ape
-rw-r--r-- 1 X Y      1062 2010-04-03 03:19 CDImage.cue
-rw-r--r-- 1 X Y       834 2010-04-03 03:19 CDImage.log

Кому лень читать портянку бреда привожу результат:

454535804 1_ape2wav.wav
454443052 3_flac2wav.wav
Есть, конечно, предположение о том, что кто-то в цепочке чуть лучше сжал какой-то промежуточный файл, но вериться с трудом и доверият к такому LL у меня уже точно нет. Скажите, кто виноват и что делать?

Версии программ:

~ $ flac --version
flac 1.2.1
.
~ $ mplayer -version
MPlayer SVN-r31303-4.4.3 (C) 2000-2010 MPlayer Team
.
~ $ ffmpeg --version
FFmpeg version SVN-r23019-4:0.6~svn20100505-1ubuntu1~multimediappa2, Copyright (c) 2000-2010 the FFmpeg developers

Попробуй тогда, ради эксперимента, `mac` ape<->wav перегнать.

ostin ★★★★★
()
Ответ на: комментарий от RealSiberianMan

> что надо сделать.

Прекратить аудиодрочку. Можешь ещё сделать -ao pcm:fast:file=«$OUTPUTFILE.wav»:waveheader и опять новый результат получиться на выходе. К чему бы это?

shahid ★★★★★
()

> Задача: ape -> wav, wav -> flac, flac -> wav. При этом первый и последний wav'ы должны быть одинаковыми до байта.

Дальше можно не читать. Автор, кури мануалы, что ли. Заодно прочитай про чексуммы аудиоданных.

annoynymous ★★
()
Ответ на: комментарий от shahid

Можешь ещё сделать -ao pcm:fast:file=«$OUTPUTFILE.wav»:waveheader и опять новый результат получиться на выходе.

ВНЕЗАПНО, нет.

$ cat `which any2wav`
#!/bin/sh

INPUTFILE=$1
OUTPUTFILE=$2

mplayer "$INPUTFILE" -vc null -vo null -ao pcm:fast:file="$OUTPUTFILE.wav":waveheader
$ llr
total 2404860
drwxr-xr-x 2 X Y      4096 2010-04-03 03:20 covers/
-rw-r--r-- 1 X Y 454535804 2010-06-10 14:53 1_ape2wav.wav
-rw-r--r-- 1 X Y 454535804 2010-06-10 15:45 2.1_ape2wav.wav

-rw-r--r-- 1 X Y 218614157 2010-06-10 14:53 2_wav2flac.flac
-rw-r--r-- 1 X Y 218614157 2010-06-10 15:45 2.2_wav2flac.flac

-rw-r--r-- 1 X Y 454443052 2010-06-10 14:58 3_flac2wav.wav
-rw-r--r-- 1 X Y 454443052 2010-06-10 15:50 2.3_flac2wav.wav

-rw-r--r-- 1 X Y 207332660 2010-04-03 03:21 CDImage.ape
-rw-r--r-- 1 X Y      1062 2010-04-03 03:19 CDImage.cue
-rw-r--r-- 1 X Y       834 2010-04-03 03:19 CDImage.log
RealSiberianMan
() автор топика
Ответ на: комментарий от YAR

Да, в общем-то, это конечно понятно, что теоретически никакая информация потеряться не может, я веду речь о качестве различных конвертеров. Получается в моей цепочке косячит mplayer, который использует ffmpeg. Вот я и хочу выяснить, что я делаю не так.

Почему мне так важен ffmpeg — потому что в бубунте это на данный момент единственное приемлемое средство конвертации ape -> нормальный_формат (блджад, как же бесят дебилы, которые рипают в этот говноформат!).

RealSiberianMan
() автор топика
Ответ на: комментарий от namezys

Как я и предполагал, косячит ffmpeg:

$ ffmpeg -i "CDImage.ape" "ffmpeg_ape2wav.wav"

$ mac "CDImage.ape" "mac_ape2wav.wav" -d

$ llr
total 1978052

-rw-r--r-- 1 X Y 207332660 2010-04-03 03:21 CDImage.ape

-rw-r--r-- 1 X Y 454535804 2010-06-10 17:06 ffmpeg_ape2wav.wav
-rw-r--r-- 1 X Y 454538532 2010-06-10 17:04 mac_ape2wav.wav

вообще wav это не только pcm, это еще контенер, метки и тд

Ну, терять бы все равно ничего не хотелось, если есть инструменты, которые позволяют этого не делать. Печально, в общем.

RealSiberianMan
() автор топика
Ответ на: комментарий от RealSiberianMan

> если есть инструменты, которые позволяют этого не делать.

Пользуйся официальными кодерами/декодерами и все будет хорошо. flac есть в официальном репозитории, mac можно доставить/собрать отдельно.

YAR ★★★★★
()

декодировать APE надо через mac (mac-3.99-u4-b5.tar.gz)

далее проверять

tommy@ch01:/home/ftp/pub$ wavcrc32
EAC wavcrc32 v0.22 (c) ]DichlofoS[ Systems, 2007
thanx to: BakLAN, siro and other beta-testers/contributors!
*** invalid cmdline arguments!
syntax: wavcrc32 filename.wav


wavcrc32 тут http://dl.rutracker.org/forum/dl.php?t=357895

как там «декодирует» ffmpeg лучше не думать.

в эту тему не вчитывался, лень.

tommy ★★★★★
()
Ответ на: комментарий от RealSiberianMan

>Да, в общем-то, это конечно понятно, что теоретически никакая информация потеряться не может


Самое банальное: тэги, метаданные, обложки.

Lighting ★★★★★
()
Ответ на: комментарий от RealSiberianMan

> Ну, терять бы все равно ничего не хотелось, если есть инструменты, которые позволяют этого не делать. Печально, в общем.

Эти потери того же типа, что и потери при записи на разные файловы системы - фаил то все равно читается

namezys ★★★★
()
Ответ на: комментарий от namezys

У меня wav -> flac -> wav происходит как надо: первый и последний wav совпадают побайтно.

dm1024 ★★★
()
Ответ на: комментарий от Lighting

>Самое банальное: тэги, метаданные, обложки.

самое банальное - левая реализация Monkey's Audio в ffmpeg. а она там левая.

tommy ★★★★★
()

>Кому лень читать портянку бреда привожу результат:

454535804 1_ape2wav.wav

454443052 3_flac2wav.wav



А теперь прогони ту же цепочку _еще_ раз. Если результат будет отличаться от второго - уже можно будет бить тревогу.

tensai_cirno ★★★★★
()
Ответ на: комментарий от tensai_cirno

Разобрался в вашем «бреде». mplayer -ao pcm действительно портит lossless - обрезает в конце. Вот тест:

aep@home ~ $ mplayer -really-quiet sample.flac -vc null -vo null -ao pcm:fast:file=sample.wav
aep@home ~ $ ffmpeg -i sample.flac 2>&1 | grep Duration
  Duration: 00:00:05.74, bitrate: 647 kb/s
aep@home ~ $ ffmpeg -i sample.wav 2>&1 | grep Duration
  Duration: 00:00:05.66, bitrate: 1411 kb/s

Все видят разницу длительности? Если открыть оба файла в audacity, видно, что mplayer при перекодировании обрезал конец. ffmpeg, в отличие от mplayer -ao pcm, конец не обрезает.

AEP ★★★★★
()
Ответ на: комментарий от AEP

Прямо как в Венде. Те Фубаром конвертируют, эти Мплеером.

dm1024 ★★★
()

У меня такие результаты, исходник (аудиозапись с микрофона) test.wav - 568.9 kb кодировщик flake: $ flake -12 test.wav на выходе файл test.flac - 157.9 kb обратно в wav (через ffmpeg): $ ffmpeg test.flac test1.wav на выходе test1.wav - 284.5 kb И потом данные уже не менялись : $ flake -12 test1.wav # 157.9 kb $ ffmpeg test1.flac test2.wav # 284.5 kb

Chu
()
Ответ на: комментарий от Chu

поправка, ffmpeg -i test.flac test1.wav конечно же. И ffmpeg -i test1.flac test2.wav

Chu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.