![]() |
Работа с Mp3 файлами
Здравствуйте.
Дело вот в чем: допустим в папке лежат мп3 файлы. Их примерно 10-15 (может больше). В другой папке лежат картинки. Тоже 10-15 (может больше). *.jpg файлы, разные. В чем задача: Как сделать программу, чтобы она поочереди добавляла к мп3 файлам картинки. То есть прописывала в тег к мп3 файлу. Алгоритм примерно такой: к первому мп3, первую картинку---положил в третью папку, ко второму мп3, вторую картинку---положил в третью папку и так далее до конца. Чтобы потом при воспроизведении можно было видеть эту картинку в плеере как обложку диска. Я нашел команды на С++. Могу дать ссылки. Понимаю, что тут должен быть цикл, но сделать не могу. Вообще можно же такое не только на С++ написать? Помогите пожалуйста с кодом. Если не трудно. |
Возьмите готовую программу.
Например посмотрите здесь: http://forum.oszone.net/thread-201713.html |
Спасибо конечно. Я бы все-таки хотел за одно посмотреть как это работает. В готовом виде. Поэтому и прошу код. А так, да вы правы у меня надо мноого файлов обработать.))
|
Vovchik1900, поясните, какой из ID3 тэгов будет использоваться для:
Цитата:
|
Iska,
Мой медиа плеер на нокии)) А если серьезно, то аимп, винамп, винмедиа плеер. Или я что-то не так понял? Команды для работы с *.jpg файлами нашел в ID3Lib 3.05. |
|
Цитата:
Знаю, что такое как мне надо может делать аимп. Полностью *.jpg файл добавляет к мп3 файлу. Например был мп3 размером 1 мегабайт, а jpg 500 килобайт. В аимпе соединишь и получишь мп3 файл размером 1.5 мегабайт. Я это делал через редактор тегов в аимпе. Поэтому и подумал, что в тег к мп3 файлу прописывается. А про прогу спрашиваю, потому, что надоело в аимпе много кнопок тыкать. Надо около 1000 мп3 файлов обработать. Положил их в одну папку, картинки в другую, запустил прогу, она их соединила (не знаю как), и все.)) |
Цитата:
|
Iska,
В аимпе файлы кидал в плейлист, потом тыкал по файлу и заходил в: информация о файле. Открывался quick tag editor. В нем можно добавить. |
Vovchik1900, да не про то уже в третий раз я спрашиваю Вас, а в какой именно тэг добавляете? Назовите его. Скриншот, наконец, сделайте, и обведите поле нужного тэга красной линией. Хоть как-нибудь укажите этот тэг.
|
Iska,
А! вот вы о чем! Не знаю какой тег. А команду нашел вот: Binary Fields The last type field that ID3Lib provides support for is a binary field. This holds miscellaneous data that can't be easily described any other way, such a JPEG image. ID3_Field::Set() отсюда: http://id3lib.sourceforge.net/id3lib-manual.php |
Vovchik1900, в общем и целом я понял, что Вы имели в виду. Теперь я уточню: Вы хотите каким-либо образом программным способом внедрять в тело указанного файла формата mp3 (или любого другого формата, поддерживающего внедрение ID3V2 тэгов) указанный файл изображения в формате jpg. Так?
|
Iska,
Да, вы правы. |
Iska,
Не обязательно Цитата:
|
Vovchik1900, ясно. Со своей стороны могу предложить, например, следующее:
1. Загрузить и установить ActivePython (я пробовал на версии ActivePython 2.6.6.17, сейчас для загрузки доступна и версия 2.6.6.18; 3.x в любом случае не рекомендую, дабы не править скрипты). В дальнейшем предполагается, что установка была произведена в умолчальную папку «C:\Python26». 2. Загрузить и установить модуль eyeD3. Для установки потребуется предварительно распаковать «eyeD3-0.6.17.tar.gz» в произвольную папку, я взял — «C:\PyModules». Внутри неё после распаковки архива (сгодится и WinRAR, и 7-Zip) должна оказаться папка «eyeD3-0.6.17» из архива со следующим содержимым: Далее нужно переименовать следующие файлы: Код:
C:\PyModules\eyeD3-0.6.17\setup.py.in Код:
C:\PyModules\eyeD3-0.6.17\setup.py Код:
C:\PyModules\eyeD3-0.6.17\src\eyeD3\__init__.py.in Код:
C:\PyModules\eyeD3-0.6.17\src\eyeD3\__init__.py Код:
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\setup.py install Код:
C:\Python26\Lib\site-packages 3. Теперь можно попробовать добавить потребный тэг. Сначала я приведу команду целиком, затем попробую расписать отдельные детали. Итак, добавим изображение из файла «C:\Мои проекты\Wallpapers\wallpaper_su.jpg» в тэг ID3v2.3 «Передняя обложка альбома» в аудиофайл «E:\Песочница\0056\ABBA (Eagle).mp3»: Код:
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="C:\Мои проекты\Wallpapers\wallpaper_su.jpg"`FRONT_COVER "E:\Песочница\0056\ABBA (Eagle).mp3" * «--no-color» — параметр, запрещающий добавление в вывод Escape-последовательностей для работы с цветом. * «-F `» — параметр, меняющий умолчальный разделитель двоеточие («:») множественных полей в атрибутах на гравес («`»), что позволяет указывать полные пути (разбором исходного кода было установлено, что иначе полный путь, например — «C:\Мои проекты\Wallpapers\wallpaper_su.jpg», будет воспринят как два отдельных поля). Разумеется, можно указать свой разделитель. * «--v2» — внедрение поддерживается только во второй версии тэгов, посему указываем, что будем работать именно со второй версией — ID3v2.x. * «--to-v2.3» — принудительная конвертация существующих тэгов ID3 в версию ID3v2.3. Вынужденный шаг, сделанный специально для Вас, ибо по умолчанию, при задании потребного параметра «--v2» создаются тэги версии ID3v2.4, а мне не удалось добиться отображения внедрённых обложек данной версии тэгов ни в AIMP2 (несмотря на заявленное: Цитата:
Цитата:
NB: Изложенное выше не претендует ни на полноту, ни на абсолютную корректность. Vovchik1900, если Вас устраивает подобный подход — попробуйте и отпишитесь, сработало ли у Вас внедрение изображения на одиночном файле. Тогда будем двигаться дальше. |
Вложений: 1
Iska,
Когда устанавливаю eyeD3 , выдает такую ошибку: |
Vovchik1900:
1. Ошибка возникает на этом этапе? Код:
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\setup.py install 3. Наличествует ли в папке «C:\PyModules\eyeD3-0.6.17\src» папка «eyeD3»? |
Iska,
1. да. ошибка на этом этапе. 2. и 3. Конечно. все папки на своих местах. команду C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\setup.py install ввожу в командную строку. У меня вин7 макс СП1 может я не там прописываю команду или винда тупит? |
Vovchik1900, сложно сказать. Я использую Windows XP Professional SP3, доступа к Windows 7 нет — посему, к сожалению, даже не могу попробовать воспроизвести Ваши действия. Здесь: Justin Wishart: Python: eyeD3 Installation on Windows, например, есть подтверждение работоспособности под Windows 7.
Попробуйте, на всякий случай, попробовать исполнить установку в командной строке, запущенной с повышенными привилегиями. Если не поможет — попробуйте задать вопрос на русскоязычных питоношных форумах: Портал Python-программистов VPF::Python - Форум программистов PyDev: Форум python-разработчиков дав ссылку на данную тему. |
Iska,
вы писали раньше будет добавлена папка «eyeD3» со следующим содержимым: Код:
« скрыть Я подумал, что если эти файлы себе положу в C:\Python26\Lib\site-packages\eyeD3 то заработает |
Vovchik1900, я попробую сравнить содержимое «C:\Python26» до и после установки «eyeD3» и отпишусь здесь.
|
Iska,
помучился и подключил eyeD3. Код:
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="C:\Мои проекты\Wallpapers\wallpaper_su.jpg"`FRONT_COVER "E:\Песочница\0056\ABBA (Eagle).mp3" а как много картинок ко многим файлам добавить? |
Vovchik1900, заработало? Тогда по #21 я не экспериментирую и не отписываюсь. А в чём же там дело было? Отпишитесь, пожалуйста, на этот счёт.
Цитата:
Цитата:
1. Речь идёт только о передней обложке альбома? То есть, как правило — будет одно изображение на группу файлов *.mp3, так? 2. Как соотносить, по каким правилам — какие изображения к каким файлам *.mp3 соответствуют? |
Iska,
в файле setup.py папки eyeD3 (она же eyeD3-0.6.17. просто переименовал) было написано Код:
package_dir={'eyeD3':'src\eyeD3'}, Код:
package_dir={'eyeD3':'C:\PyModules\eyeD3\src\eyeD3'}, Цитата:
2. все картинки и мп3 пронумерованы. пусть соединяет 1й+1я, 2й+2я....... (мп3+картинка). |
Ориентироваться будем на какую-то систему именования пар *.mp3/*.jpg или просто идти по порядку, независимо от имён?
|
Iska,
на систему именования пар. например: Treck1 только к Picture1, Treck2 только к Picture2 и так далее до конца. |
Vovchik1900, тогда попробуем с помощью пакетного файла (правильнее и удобнее бы было на самом Python'е, но мой опыт работы с ним — от силы часов шесть, посему — не берусь), например:
Пример вызова пакетного файла: Код:
0001.cmd "E:\Песочница\0056\mp3" "E:\Песочница\0056\jpg" |
Iska,
работает. Спасибо большое))!! А можно: 1. код подробней расписать. например не очень ясно echo Need arguments или rem echo Need arguments. Вы например Цитата:
2. если у меня треки имеют формат 1.Исполнитель-Название трека.mp3 и так до nnnn.Исполнитель-Название трека.mp3, а картинки тоже как-нибудь пронумерованы. Напрмер 1.Picture и так до nnnn.Picture. как тогда будет? в принципе меня устраивает, то что есть..... любопытно все-таки. |
|
Iska,
Спасибо большое!!)) а теперь самый последний вопрос: вот этот код, который находит папку.... сшивает картинки и музыку...... это на каком языке программирования? на Python? |
Справка по тэгам форума
Это язык пакетных файлов. Здесь он именуется также как «Категория CMD/BAT» — по расширениям пакетных файлов. |
Спасибо за разъяснения.
|
Время: 01:09. |
Время: 01:09.
© OSzone.net 2001-