С плагином player_ffmpeg проигрыватель не воспроизводит flac. Это странно, учитывая, что вообще говоря должен даже ape работать. В консоль пишет так:
[flac @ 0x859b840]buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE
В окно сообщений пишет так: Tue Jun 30 19:37:58 2009 Add URL: file:///home/combine/.cuberok/Playlist 1.xspf 46 record(s) Tue Jun 30 19:37:58 2009 Database ready Tue Jun 30 19:37:58 2009 User select engine: FFmpeg Tue Jun 30 19:37:58 2009 Selected engine: GStreamer Tue Jun 30 19:37:58 2009 file:///home/vasya/music/song/123.mp3 Tue Jun 30 19:37:58 2009 /home/vasya/music/song\123.mp3 Tue Jun 30 19:37:58 2009 /home/vasya/music/song\123.mp3 Tue Jun 30 19:37:58 2009 file:///home/vasya/music/song\123.mp3
Про ape пишет так: [ape @ 0x86469c0]Too long 'j' tag was truncated. [ape @ 0x86deab0]buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE - то же самое в принципе. Может, надо что-то ещё скомпилять? mplayer играет всё. Если выбрать плагин gstreamer, то cuberok тоже играет ape.
Cuberok v 0.0.10 build: 19:19:32 Jun 30 2009 Qt: 4.5.1 X11 Current plugin: GStreamer Available plugins are: Null engine FFmpeg GStreamer Phonon FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib -- mandir=/usr/share/man --enable-static --enable-shared --cc=gcc --disable- debug --disable-ffplay --disable-encoders --enable-libdc1394 --disable- demuxer=oss --disable-muxer=oss --enable-x11grab --enable-pthreads -- enable-libdirac --enable-libschroedinger --disable-altivec --disable-mmx2 --cpu=native --disable-vhook --enable-gpl --enable-postproc --enable- avfilter --enable-avfilter-lavf --enable-swscale --disable-stripping
Comment #1
Posted on Jul 1, 2009 by Swift KangarooИграть то оно начало, тока seek у меня на flac ни в какую не идёт, виснет или падает. На ape не проверял ещё
r237
Comment #2
Posted on Jul 1, 2009 by Quick GiraffeК сожалению, боюсь, что у меня оно играть не начало:
../../src/player_ffmpeg.cpp:330: ошибка: целая константа слишком велика для типа ‘long’ ../../src/player_ffmpeg.cpp:343: ошибка: целая константа слишком велика для типа ‘long’
Comment #3
Posted on Jul 1, 2009 by Swift Kangarooбыстрофикс r238
Comment #4
Posted on Jul 1, 2009 by Quick GiraffeСтранно, не помогло...
Comment #5
Posted on Jul 1, 2009 by Quick GiraffeНа ape не проверял ещё
На ape "квакает", как будто не успевает читать файл.
Comment #6
Posted on Jul 2, 2009 by Quick GiraffeСтранно, не помогло...
В интернетах говорят, что это из-за того, что ffmpeg написан на C, а не на C++ Попробовал рекомендуемый метод http://forum.motama.com/viewtopic.php?t=12 (там два метода, результат одинаковый) - компиляется но при воспроизведении виснет на seek
Comment #7
Posted on Jul 2, 2009 by Swift KangarooТо, что оно виснет, это ожидаемо...
Покажи дифф при котором компиляется корректно, внесу в svn
Comment #8
Posted on Jul 2, 2009 by Quick GiraffeНа прямую мой дифф вносить не стоит, потому что при компиляции появляется такая ругань:
../../src/player_ffmpeg.cpp:332: предупреждение: сравнение знакового и беззнакового целых выражений ../../src/player_ffmpeg.cpp:345: предупреждение: сравнение знакового и беззнакового целых выражений
Кроме того, я не уверен, нужна ли строка
undef __STDC_CONSTANT_MACROS
да и вообще, для меня это тёмный лес
Выглядит примерно так:
Index: player_ffmpeg.pro
--- player_ffmpeg.pro (revision 238) +++ player_ffmpeg.pro (working copy) @@ -1,7 +1,9 @@ CONFIG += release TEMPLATE = lib CONFIG += plugin - INCLUDEPATH += ../../src + INCLUDEPATH += ../../src \ + /usr/include/libavcodec/ \ + /usr/include/libavformat/ HEADERS = ../../src/player_ffmpeg.h \ ../../src/player.h SOURCES = ../../src/player_ffmpeg.cpp
$ svn diff ../../src/player_ffmpeg.cpp
Index: ../../src/player_ffmpeg.cpp
--- ../../src/player_ffmpeg.cpp (revision 238) +++ ../../src/player_ffmpeg.cpp (working copy) @@ -16,16 +16,13 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA.
*/
+#define __STDC_CONSTANT_MACROS 1 #include "player_ffmpeg.h" +#undef __STDC_CONSTANT_MACROS #include #include
#define SDL_AUDIO_BUFFER_SIZE 1024 -#ifdef WIN32 -#define localAV_NOPTS_VALUE int64_t(0x8000000000000000) -#else -#define localAV_NOPTS_VALUE AV_NOPTS_VALUE #endif
Q_EXPORT_PLUGIN2(player_ffmpeg, PlayerFfmpeg) @@ -332,7 +329,7 @@ } } while(packet.stream_index!=audioStream);
- if(packet.pts != localAV_NOPTS_VALUE)
- if(packet.pts != AV_NOPTS_VALUE) curts = packet.pts; if(stopts && curts >= stopts) { if(packet.data!=NULL) @@ -345,7 +342,7 @@ rawData=packet.data; } frame_unpacked:
- if(packet.pts == localAV_NOPTS_VALUE) {
- if(packet.pts == AV_NOPTS_VALUE) { curts += audio_buf_ptr / 2 / pCodecCtx->channels; }
Comment #9
Posted on Jul 2, 2009 by Quick GiraffeИ, кстати, на seek виснет не только на flac, но и на mp3 и на ogg/vorbis
Comment #10
Posted on Jul 3, 2009 by Swift Kangaroo
- INCLUDEPATH += ../../src \
- /usr/include/libavcodec/ \
- /usr/include/libavformat/
PKGCONFIG не сработал? или в генту как то не так?
Добавил специально для flac другой режим seek. Там щас не совсем совпадает время (у меня позиционирует чуть дальше чем надо) интересует разброс на разных флаках r239
Comment #11
Posted on Jul 3, 2009 by Quick GiraffePKGCONFIG не сработал? или в генту как то не так? Честно говоря, не понимаю, почему возникает проблема, поэтому не стал репортить. Вот для сравнения как он отработал для phonon и для lavc
name_no@name_no_new: ~ $ pkg-config --libs phonon -L/usr/lib/qt4 -lphonon -lQtGui -lQtDBus -lQtXml -lQtCore name_no@name_no_new: ~ $ pkg-config --libs libavcodec -lavcodec name_no@name_no_new: ~ $ locate avcodec.h /usr/include/libavcodec/avcodec.h
Ещё для сравнения, SDL: name_no@name_no_new: ~ $ pkg-config --libs sdl -lSDL -lpthread name_no@name_no_new: ~ $ locate SDL.h /usr/include/SDL/SDL.h
Comment #12
Posted on Jul 6, 2009 by Quick GiraffeИнтересно, что вот такой "патч" решает мою проблему. Видимо, гента виновата ))
# ln -s /usr/include/libavcodec/ /usr/include/avcodec # ln -s /usr/include/libavformat/ /usr/include/avformat
Дома ещё на дебиане посмотрю.
Comment #13
Posted on Jul 6, 2009 by Quick GiraffeИнтересно, что вот такой "патч" решает мою проблему.
А, нет, не решает, поспешил я
Comment #14
Posted on Jul 7, 2009 by Quick GiraffeНа рабочем компе есть проблемы с seek на mp3-файлах, на домашнем, вроде, такой проблемы нет. flac не воспроизводится на обоих компах.
Версии всего одинаковые, разницы в use-флагах. дома: 3dnow 3dnowext X alsa amr bindist dirac ieee1394 ipv6 mmx mp3 network schroedinger ssse3 theora threads v4l v4l2 vorbis x264 xvid zlib -altivec -custom-cflags -debug - doc -encode -faac -faad -gsm -hardcoded-tables -jpeg2k -mmxext -oss -sdl -speex - test -vhook
на работе: 3dnowext X alsa encode ipv6 mmx mmxext mp3 network ssse3 theora threads vorbis xvid zlib -3dnow -altivec -amr -bindist -custom-cflags -debug -dirac -doc -faac -faad - gsm -hardcoded-tables -ieee1394 -jpeg2k -oss -schroedinger -sdl -speex -test -v4l - v4l2 -vhook -x264
// Кстати, хотел же разобраться, кто мне 3dnow включил...
Comment #15
Posted on Jul 7, 2009 by Quick Giraffeа ещё с этим плагином очень интересную фигню замечаю: как только появляется нагрузка на хард (не процессор, а именно на дисках, чтение) cuberok начинает запинаться. Не сильно и не долго, но заметно и неприятно. Может, кеш прикрутить?
Comment #16
Posted on Jul 9, 2009 by Swift KangarooИтак: Флак целым файлом воспроизводится, по cue пока нет.
Глюки: Один и тот же флак на винде seek'ает примерно в 3 раза дальше, на дебе (версия 2008 02 06) примерно в полтора раза дальше. Сик работает в бинарном режиме, как его лечить я пока не догоняю.
Интересует: Какие будут ошибки seek на разных флаках, а ещё лучше на разных версиях ffmpeg
Comment #17
Posted on Jul 9, 2009 by Swift KangarooА что у нас с ape? (у меня нету, тестить не на чем)
Comment #18
Posted on Jul 9, 2009 by Quick GiraffeИнтересует: Какие будут ошибки seek на разных флаках, а ещё лучше на разных версиях ffmpeg
На амароке я замечал, что неправильно выбирается новая позиция, если в файле есть тишина. Видимо, это каким-то образом связано с методом сжатия. Ещё замечал, что в mplayer flac с тишиной (полностью только тишина), длиной примерно в полторы минуты, воспроизводился всего долю секунды. Сейчас на генте при прокрутке флака в консоли пишет так: [flac @ 0x9d8d930]qlevel -12 not supported, maybe buggy stream [flac @ 0x9d8d930]decode_frame() failed [flac @ 0x9d8d930]FRAME HEADER not here Насчёт точности позиционирования на работе некогда )))
С ape ничего неизменилось
Comment 5 by nomen.infitior, Jul 01, 2009 На ape "квакает", как будто не успевает читать файл. Может, и не как будто не успевает, но как если часто включать выключать динамик (очень часто). И медленно играет.
тот самый, который квакает (десять метров): http://g.imagehost.org/download/0898/Track11
Comment #19
Posted on Jul 9, 2009 by Quick GiraffeПри воспроизведении флака ещё (видимо та же проблема, что и с seek) неправильно отображается время. Я запустил трек и за 15 секунд реального прослушивания песенки на пололе прокрутки отображалось (00:00:08 / 00:03:03)
Comment #20
Posted on Jul 10, 2009 by Quick GiraffeЯ запустил трек и за 15 секунд реального прослушивания песенки на пололе прокрутки отображалось (00:00:08 / 00:03:03)
Мнится мне, что это и есть проблема, интерпретированная как "флак seek'ает примерно в 3 раза дальше". Т.е. если судить по времени, отображённому на полосе прокрутки, он играет десятую секунду, а на самом деле он играет двадцатую.
Comment #21
Posted on Jul 10, 2009 by Quick GiraffeТ.е. если судить по времени, отображённому на полосе прокрутки, он играет десятую секунду, а на самом деле он играет двадцатую.
И воспроизведение трека заканчивается ровно на середине прогрессбара. Наоборот, если сделать seek, то время, отображаемое на полосе прокрутки окажется больше того, что на самом деле играет и воспроизведение трека прекратится раньше, чем трек закончится. Во всяком случае, так у меня происходит сейчас.
Comment #22
Posted on Jul 24, 2009 by Swift KangarooДля флака сделан "тупой" seek, то есть при перемещении вперёд поток раскодируется до нужного места, при перемещении назад - поток сбрасывается в начало и раскодируется опять же до нужного места. На моём тестовом флаке позиция совпадает с желаемой, сик делается заметно долго (последняя композиция в часовом флаке стартует ок. 5 секунд)
Если не придумается ничего лучше, то будет хоть так работать. r278
Comment #23
Posted on Jul 24, 2009 by Quick GiraffeПо описанию получается примерно то, что надо, но надо как-то оптимизировать ))
P.S. на моей gentoo сохраняется ситуация с неправильным отображением времени на прогрессбаре, в результате чего seek дальше середины трека стабильно приводит к переходу на следующий трек (flac потрековый).
Comment #24
Posted on Jul 24, 2009 by Swift KangarooВот эта проблема с отображением времени мне непонятна. На настоящий момент timestamp вычисляется как объём пройденных аудиоданных делённый на количество каналов и ещё делённый на 2 (ибо звук считается 16 битным)
В проблемном флаке каналов случайно не больше двух? или звук сильно не 16-ти битный?
Comment #25
Posted on Jul 24, 2009 by Quick Giraffe$ file 01\ Holidays\ In\ The\ Sun.flac 01 Holidays In The Sun.flac: Audio file with ID3 version 23.0 tag, MP3 encoding
$ kfile -av 01\ Holidays\ In\ The\ Sun.flac 01 Holidays In The Sun.flac: Звуковой файл FLAC (audio/x-flac) -- /home/name_no/Музыка/Sex Pistols/Sex Pistols - Never Mind The Bollocks [Black Triangle Edition 32VD-1011]/01 Holidays In The Sun.flac =All Values= Comment: Album: Never Mind The Bollocks Comment: Artist: Sex Pistols Comment: Comment: Track 1 Comment: Date: 1977 Comment: Genre: Punk Rock Comment: Title: Holidays In The Sun Comment: Track Number: 1
Technical Details: Average Bitrate: 995 kbps Technical Details: Channels: 2 Technical Details: Length: 03:22 Technical Details: Sample Rate: 44.100 Hz Technical Details: Sample Width: 16 bits
Но выглядит так, будто проблема и вправду в лишнем делении на два. Такая ерунда на всех треках. В идеале, конечно, точнее всего было бы по фреймам считать (см. замечание про amarok и mplayer)
Status: Started
Labels:
Type-Defect
Priority-Medium