Bug 15089

Summary: не добавляет mp3 в аудио-проект
Product: Sisyphus Reporter: Eugene V. Horohorin <genix>
Component: k3bAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: mike, rom_as, warframe
Version: unstable   
Hardware: all   
OS: Linux   

Description Eugene V. Horohorin 2008-03-26 15:22:46 MSK
Не удается добавить некоторые mp3-файлы в аудиопроект.
для этого приходится перегонять mp3 в wav и их уже добавлять в проект аудиодиска.
могу приложить пример такого файла если требуется или дать дополнительную
информацию по нему.
амарок такие файлы играет без проблем

ошибка при добавлении:
 Невозможно обработать следующие файлы из-за неподдерживаемого формата:
Вы можете вручную преобразовать эти звуковые файлы в wave, используя другую
программу, поддерживающую звуковой формат и после этого добавить wave-файлы в
проект K3b.
Comment 1 Alexey Lokhin 2008-03-26 20:19:58 MSK
Давайте, что-ли, файл...
Comment 2 Alexey Lokhin 2008-03-31 14:25:02 MSD
Дайте файл, пожалуйста.
Comment 3 Eugene V. Horohorin 2008-03-31 19:23:19 MSD
отправил в личку
Comment 4 Alexey Lokhin 2008-03-31 20:48:07 MSD
Результаты на данный момент таковы:

Натравил /usr/bin/file на проблемный файлик...
Имеем:
RIFF (little-endian) data, WAVE audio, MPEG Layer 3, stereo 44100 Hz

Т.е. это RIFF, содержащий WAVE с 'MPEG Layer 3'-кодированием, а не mp3.
Обнаружено, что k3b понимает RIFF+WAVE_FORMAT_PCM ("wav"), но не то, что имеем.

От баги пока не отказываюсь )
Comment 5 Eugene V. Horohorin 2008-04-01 10:54:22 MSD
ух, ясно.
собственно остался только резонный вопрос -- чем пользуется k3b для
преобразования звуковых файлов, что не умеет RIFF/mp3?
Comment 6 Alexey Lokhin 2008-04-01 13:10:53 MSD
(In reply to comment #5)
> ух, ясно.
> собственно остался только резонный вопрос -- чем пользуется k3b для
> преобразования звуковых файлов, что не умеет RIFF/mp3?

k3b перебирает все доступные декодеры (дебаг):

k3b: (K3bAudioDecoderFactory::createDecoder( /tmp/a.wav )
k3b: (K3bFLACDecoder) /tmp/a.wav: not a FLAC file
k3b: (K3bMpcWrapper) Not a valid musepack file: "/tmp/a.wav"
k3b: (K3bOggVorbisDecoder) not an Ogg-Vorbis file: /tmp/a.wav
k3b: (K3bWaveDecoder) /tmp/a.wav: wrong format:
k3b:                 format:      85
k3b:                 channels:    2
k3b:                 samplerate:  44100
k3b:                 bits/sample: 0
k3b: (K3bFFMpegFile) found codec for /tmp/a.wav
Input #0, wav, from '/tmp/a.wav':
  Duration: 00:03:50.5, start: 0.000000, bitrate: 96 kb/s
  Stream #0.0: Audio: mp3, 44100 Hz, stereo, 96 kb/s
k3b: (K3bLibsndfileDecoder) Supported file format but file is malformed.
k3b: (K3bAudioDecoderFactory::createDecoder( /tmp/a.wav ) no success

Здесь видим, что пользуясь libsndfile k3b решил, что формат файла неправильный.
На самом деле, k3b действительно, не хочет рассматривать как wav что-то,
отличное от RIFF WAVE_FORMAT_PCM. Можно, конечно, это ограничение выкусить, ведь
в анализируемом файле - RIFF WAVE_FORMAT_MPEGLAYER3. Такая комбинация не
запрещена. Правда, мне пока не ясно, насколько это wav, т.е. обязан ли wav
содержать исключительно PCM.

Использовав libffmpeg, программа обнаружила там MPEG, но почему-то отказалась
использовать кодек.

Следствие продолжается.
Comment 7 Eugene V. Horohorin 2008-04-01 14:19:29 MSD
ffmpeg -i файл.mp3 /tmp/a.wav сделал нормальный wav который легко потом
добавился в audio-проект
Comment 8 Alexey Lokhin 2008-04-01 18:36:17 MSD
(In reply to comment #7)
> ffmpeg -i файл.mp3 /tmp/a.wav сделал нормальный wav который легко потом
> добавился в audio-проект

неее. не то это. сейчас принципиальный вопрос стоит: а чего это нельзя RIFF с
чем-то, отличным от PCM в аудиопроект вставлять? ведь в принципе, при правильном
выборе кодека может же k3b автоматом в wav перегнать!
Comment 9 Alexey Lokhin 2008-04-01 20:23:21 MSD
Решение найдено. Только текст ("теги") из RIFF не читаются (
Comment 10 Alexey Lokhin 2008-04-02 12:06:43 MSD
Итак. Результаты: sndfile-плагин отказывается признавать такие файлы,
wave-плагин можно заставить распознавать, но конвертированный wav содержит шум,
ffmpeg-плагин может распознать и перевести в wav, но...

В исходниках ffmpeg-плагина есть следующий комментарий:
only allow tested formats. ffmpeg seems not to be too reliable with every format.
mp3 being one of them sadly. Most importantly: allow the libsndfile decoder to
do its thing.

Вобщем, не знаю, что там ненадёжно, у меня "тот самый файл" перекодировался
успешно. Я могу сделать сборку с поддержкой плагином "непротестированных"
форматов. Вас устроит это?
Comment 11 Eugene V. Horohorin 2008-04-02 12:39:59 MSD
я вот думаю, что лучше.
а почему sndfile не признает такие wave файлы?
может таки его попробовать запинать?
Comment 12 Alexey Lokhin 2008-04-02 13:15:41 MSD
(In reply to comment #11)
> я вот думаю, что лучше.
> а почему sndfile не признает такие wave файлы?
> может таки его попробовать запинать?

Попробую выяснить.
Comment 13 Eugene V. Horohorin 2009-01-26 18:28:08 MSK
нет новостей?
Comment 14 Michael Shigorin 2015-01-07 17:59:48 MSK
Видимо, закапываем -- если на нынешних версиях и файликах ещё вылазит, просьба переоткрыть или переповесить.