Категория > Новости > Музыка в пакете. Автоматически конвертируем и аннотируем аудиофайлы в Windows - «Новости»

Музыка в пакете. Автоматически конвертируем и аннотируем аудиофайлы в Windows - «Новости»


14-04-2022, 21:23. Автор: Dodson
прог­рамму ImageMagick. И слу­чай­но обна­ружил, что в сос­тав ее дис­три­бути­ва вхо­дит ути­лита FFmpeg, которая, как извес­тно, уме­ет выпол­нять мно­жес­тво опе­раций над меди­афай­лами. Почему бы не вос­поль­зовать­ся ею для кон­верта­ции и осна­щения тегами фай­лов моей ауди­окол­лекции? Но запус­кать ути­литу коман­дной стро­ки и ука­зывать мно­жес­тво парамет­ров для каж­дого MP3-фай­ла доволь­но уто­митель­но, и оче­вид­но, что про­цесс надо авто­мати­зиро­вать.

Из все­го богато­го спек­тра интер­пре­тиру­емых язы­ков и сис­тем прог­рамми­рова­ния, с помощью которых мож­но было бы лег­ко реали­зовать эту затею, я оста­новил­ся на самом при­митив­ном инс­тру­мен­те — язы­ке сце­нари­ев коман­дно­го про­цес­сора Windows. Почему? Во‑пер­вых, он име­ется на любой Windows-плат­форме, от W2K до W11. Во‑вто­рых, он нап­рямую пред­назна­чен для авто­мати­зации рутин­ных опе­раций с фай­лами. А в‑треть­их, он име­ет встро­енную соп­роводи­тель­ную докумен­тацию — что­бы получить справ­ку, не при­дет­ся даже откры­вать бра­узер.


Читайте также - MyLove - сайт знакомств, который позволяет быстро находить партнеров в своем городе. Для отбора анкет разработан специальный фильтр. Помимо общения и знакомств можно вести дневник, https://lovechart.ru/mylove/.

Итак, сфор­мулиру­ем задачу. Даны ауди­оаль­бомы, пред­став­ленные набора­ми ауди­офай­лов. Тре­бует­ся добавить к этим фай­лам изоб­ражение обложки аль­бома и опи­сатель­ных тегов из тек­сто­вого фай­ла, а так­же при необ­ходимос­ти кон­верти­ровать эти фай­лы в фор­мат MP3 с уста­нов­кой тре­буемых парамет­ров ауди­одан­ных. Для решения задачи попыта­емся исполь­зовать прог­рамму FFmpeg и язык сце­нари­ев коман­дной обо­лоч­ки CMD.EXE, пока кор­порация‑раз­работ­чик не отпра­вила его на свал­ку исто­рии вслед за Paint’ом.


 

Изучение возможностей FFmpeg


На­чать решение задачи я решил с изу­чения воз­можнос­тей FFmpeg в инте­ресу­ющей меня области. В том, что она спра­вит­ся с кон­верта­цией ауди­офай­лов из одно­го фор­мата в дру­гой, я поч­ти не сом­невал­ся. Но суме­ет ли она прик­репить изоб­ражение обложки и добавить информа­цион­ные теги в резуль­тиру­ющие фай­лы?


Мои сом­нения были раз­веяны стать­ей Сте­фана Шмит­ца «Получе­ние и уста­нов­ка метате­гов ID3 с помощью FFmpeg», в которой автор при­вел при­меры инте­ресу­ющих меня команд. Основная идея зак­люча­ется в том, что зна­чения тегов ука­зыва­ются прог­рамме FFmpeg в виде парамет­ров:


-metadataНазваниеТега="ЗначениеТега"

Бо­лее того, в статье име­ется при­мер исполь­зования тек­сто­вого фай­ла в качес­тве источни­ка тегов. К сожале­нию, для это­го нуж­но соз­давать отдель­ные тек­сто­вые фай­лы с тегами для каж­дого ауди­офай­ла, тог­да как гораз­до удоб­нее все све­дения о содер­жимом ауди­оаль­бома дер­жать в одном тек­сто­вом фай­ле.



Ука­зывать пол­ный путь к исполня­емо­му фай­лу FFmpeg в коман­дной стро­ке край­не неудоб­но. Обыч­но при уста­нов­ке прог­раммы пред­лага­ют вклю­чить путь в сис­темную перемен­ную окру­жения PATH, но я пред­почитаю ее не засорять. Вмес­то это­го мож­но помес­тить в пап­ку, уже при­сутс­тву­ющую в этой перемен­ной, коман­дный файл ffmpeg.cmd сле­дующе­го содер­жания:


Сим­вол @ подав­ляет эхо‑печать коман­дной стро­ки, а вмес­то сочета­ния %* при выпол­нении будут под­став­лены все парамет­ры, передан­ные сце­нарию ffmpeg.cmd. Таким обра­зом, исполь­зовать FFmpeg из коман­дной стро­ки для кон­верта­ции фай­ла SRCsample.wav в TGTsample.mp3 мож­но так:




От­вет на воп­рос, мож­но ли с помощью FFmpeg снаб­дить MP3-файл изоб­ражени­ем обложки, был прак­тичес­ки момен­таль­но получен в поис­ковой сис­теме. Ока­залось, что с точ­ки зре­ния FFmpeg изоб­ражение обложки явля­ется для MP3-фай­ла виде­опо­током и, что­бы скле­ить его с ауди­одан­ными, надо вос­поль­зовать­ся коман­дой вида


С помощью опций -map источни­ки дан­ных из вход­ных фай­лов отоб­ража­ются в потоки выход­ного фай­ла. Пер­вая опция опре­деля­ет пер­вый поток, ее параметр 0 говорит о том, что надо исполь­зовать пер­вый ука­зан­ный с помощью опции -i источник, в при­веден­ном при­мере это ауди­одан­ные из фай­ла SRCaudio.mp3. Вто­рая опция опре­деля­ет вто­рой поток, ее параметр 1 говорит, что надо исполь­зовать вто­рой ука­зан­ный с помощью опции -i источник — изоб­ражение из фай­ла SRCcover.jpg.


Музыка в пакете. Автоматически конвертируем и аннотируем аудиофайлы в Windows - «Новости»
Сли­яние фай­лов с ауди­одан­ными и изоб­ражени­ем в аудио- и виде­опо­токи фай­ла‑кон­тей­нера MP3

По умол­чанию FFmpeg авто­мати­чес­ки кодиру­ет потоки в соот­ветс­твии со сво­ими пре­дус­танов­ками так, что­бы они отве­чали фор­мату выход­ного фай­ла (опре­деля­ется по рас­ширению). Нап­ример, аудио она кон­верти­рует кодеком LAME с час­тотой дис­кре­тиза­ции 44 100 Гц и ско­ростью потока 128 Кбит/с, а изоб­ражение пре­обра­зует в фор­мат PNG. Если манипу­ляции с обложкой еще мож­но прос­тить, то опи­сан­ные дей­ствия со зву­ком мелома­ны могут вос­при­нять как лич­ное оскор­бле­ние. К счастью, мож­но зап­ретить прог­рамме выпол­нять какие бы то ни было пре­обра­зова­ния, ука­зав в коман­дной стро­ке опцию -c copy. Или зап­ретить пре­обра­зовы­вать толь­ко аудио, кон­кре­тизи­ровав опцию так: -c:a copy.



Перейти обратно к новости