Показаны сообщения с ярлыком Multimedia. Показать все сообщения
Показаны сообщения с ярлыком Multimedia. Показать все сообщения

среда, 14 февраля 2007 г.

Запись интернет радио в Linux. Streamripper.

В статье Запись интернет радио в Linux я описал простой пример, показывающий, как легко можно записать mp3 c интернет радио пользуясь популярным плеером Mplayer. Там же была упомянута программа Streamripper и то, как хорошо она работает в паре с Winamp в Windows. Но я даже и не подозревал, что эта программа существует и для Linux (спасибо anonymous, что подсказал в комментариях).

Что меня не устраивало в Mplayer и почему я решил попробовать Streamripper? Mplayer весь поток пишет в один файл, что для прослушивания не очень удобно. Полученный файл нужно разбивать на отдельные песни в специальном редакторе. Хлопотно, в общем. Streamripper же пишет отдельные треки в отдельные mp3 файлы. Бери и слушай!




Установка.

Streamripper включен [K]Ubuntu репозитории. Поэтому ставим с помощь apt-get:

sudo apt-get install streamripper kstreamripper

kstreamripper - это KDE frontend для streamripper. Если Вас не пугает консоль, то его можно и не ставить. Здесь я буду рассматривать лишь streamripper.

Пользователи других дистрибутивов могут скачать исходники,
разархивировать и поставить:

$tar -xzvf streamripper-1.61.27.tar.gz
$cd streamripper-1.61.27
$./configure
$make
$sudo make install

(не проверив, есть ли эта программа в репозиториях, я ставил из источников. Так что проблем возникнуть не должно.)

Запись радио.

Наверное, это не законно :). Страшно? Если нет, то пошли дальше...

Первое что нам нужно - это собственно интернет радио. Будем тестировать на радио The EDGE ROCKS!!

$ streamripper http://67.43.161.248:6005 -d songs2
Connecting...

Синтаксис довольно прост. После команды нужно записать URL вещающего сервера. В принципе, этого достаточно. Треки будут сохраняться в директории, с которой был запущен streamripper. Если хотите, чтобы файлы сохранялись в отдельную директорию, задайте ее название после ключа -d.
А вот ответ сервера и информация о треках.

stream: The EDGE ROCKS!! - 100% ROCK :::: (Godsmack, Ozzy, SlipKnot, Pantera, etc) :::: Format: Active Rock / Extreme Rock 24 HOURS a day :::
server name: SHOUTcast/Linux v1.9.5
bitrate: 128
meta interval: 32768
[ripping... ] ****** - **** [ 2,53M]
[ripping... ] ***** - **** [ 4,49M]
..........................
Видим, что каждая песня идет одним файлом. Вместо **** должны быть названия исполнителя и песни.

Если возникает желание одновременно и сохранять песни и слушать радио, нужно воспользоваться ключем -r, который создает ретрансляционный сервер по умолчанию на порту 8000. Все что теперь нужно, открыть адрес http://localhost:8000 в любимом mp3 плеере.

Это, пожалуй, все, что я хотел сказать касательно самой программы.

Теперь пару слов о русскоязычных песнях. Может случиться, что названия песен и теги будут в кодировке CP1251 (скорей всего, так оно и будет). Поэтому придется их перекодировать. Как это сделать с помощь программы EasyTag, можно почитать здесь. Там же написано, как заполнить имена файлов из тегов. Если по каким нибудь причинам Вам это не нравится, то сами имена файлов можно перекодировать с помощь convmv:

$ convmv -f CP1251 -t UTF-8 --notest *.mp3

Это нужно запустить в директории с файлами. Если у Вас другая кодировка (KOI8-R) - замените UTF-8 на KOI8-R. Результат можно проверить командой ls.


Читать дальше...

четверг, 25 января 2007 г.

Работаем с FFmpeg.

В предыдущей статье - Как конвертировать .flv в .mpg (.avi) - я описал как конвертировать видео с .flv в .mpg (.avi). А сегодня хочу поведать о том:

как можно извлечь аудио из видео-файла;
как создать thumbnail c файла .flv;
как создать видео файл из набора изображений в формате JPG.

Все это я буду делать с помощью утилиты FFmpeg. Поэтому для начала расскажу немного о ней.


FFmpeg - это набор программ с помощью которых можно записывать, перекодировать и проигрывать аудио и видео файлы. Данные программы используют библиотеку libavcodec. FFmpeg изначально разрабатывался под Linux, но на данный момент эту программу можно использовать из-под большинства операционных систем, включая Windows. Стоит также заметить, что большинство разработчиков FFmpeg также участвуют и в разработке Mplayer, поэтому эти два проекта тесно связаны. Следовательно саму программу и документацию к ней можно найти на сервере Mplayer.

В случае Debian (Ubuntu) программу устанавливаем стандартным способом:
$sudo apt-get install ffmpeg
На самом деле это не одна программа, а пакет, состоящий из различных утилит:

ffmpeg - это утилита позволяющая конвертировать видео файлы в различные форматы. Также она позволяет захватывать и кодировать видео с TV-карт в режиме реального времени.

ffserver - это HTTP (RTSP is being developed) мультимедиа сервер для телевещания
ffplay - медиаплеер.
libavcodec, libavformat, libavutil, libpostproc, libswscale - различные библиотеки

Рассмотрим некоторые полезные примеры применения ffmpeg:

Вытягиваем аудио с видео файла:

Не буду сильно отклонятся от темы предыдущего поста, поэтому экспериментировать буду с файлами .flv.
В комментариях к предыдущему посту были упомянуты два расширения для Firefox, с помощью которых можно скачать видео файл в формате .flv, например с YouTube, а именно - UnPlug и Fast Video Download. Будем считать, что с первой половиной задания мы справились - файл скачали. Теперь извлекаем из него аудио:
ffmpeg -i video.flv -f mp3 -vn -acodec copy audio.mp3
где,
-i - задает файл, из которого будем извлекать аудио.
-f - задает формат аудио файла.
-vn - отключает запись видео.
-acodec - задает аудио кодек.

Полученный файл можно прослушать в ffplay:
$ffplay audio.mp3
Также можно перекодировать видео с .flv в .avi и после этого извлечь аудио с .avi c помощью mplayer:
mplayer -dumpaudio video.avi
(Извлечь напрямую с .flv у меня не получилось)

Еще можно воспользоваться услугами специально созданного для этого сайта http://flv2mp3.com/. Загружаем на сайт нужный файл или указываем его URL и ждем когда нам на E-mail придет аудио с этого файла.


Создаем thumbnail c видео-файла:

ffmpeg -i video.flv -an -ss 00:00:02 -an -vframes 1 -y %d.jpg
где
-an - запрещает перекодировку
-ss - время. В нашем случае это будет кадр на второй секунде (избегаем снимка черного экрана)
-vframes - устанавливает количество кадров
-y - переписать полученный файл

В результате выполнения данной программы, появится файл 1.jpg, представляющий собой кадр второй секунды видео.

Также, можно создать thumbnail и в PNG-формате:
ffmpeg -i video.flv -vcodec png -vframes 1 -an -f rawvideo  png.png
где
-vcodec - выставить видео кодек.


Создаем видео с набора JPG файлов:

Заходим в папку, в которой находятся изображения в формате JPG и запускаем следующую команду:
ffmpeg -r 5 -b 1800 -i %03d.jpg video.avi
(предполагается что названия файлов имеют следующий вид - 001.jpg, 002.jpg)

-r - задает количество кадров в секунду
-b - устанавливает видеобитрейт в килобитах в секунду (по умолчанию 200 кб/с)

Полученный файл просматриваем с помощью ffplay:
$ ffplay video.avi
Таким образом, на основе нескольких примеров я показал что можно сделать с помощью программы FFmpeg. Естественно, это лишь малая часть того, что может делать данная утилита. Для более подробной информации обратитесь к man ffmpeg или на сайте разработчика.

Используемые источники:
1.Making movies from image files using ffmpeg/mencoder.
2.Using ffmpeg to create jpg thumbnails from flv files
3. copy-mode extract of audio from youtube flv video

Читать дальше...

вторник, 23 января 2007 г.

Как конвертировать .flv в .mpg (.avi).

Вы наверное замечали, что самый популярный видео-сервис YouTube предоставляет видеофайлы в специальном Flash-формате - .flv. При попытке скачать такой ролик с YouTube с помощью плагина к Firefox VideoDownloader, последний предложил заодно скачать и FLV-Player для просмотра данного видео. К совету я не прислушался - хватит с меня уже плееров. Решил пойти другим путем. А именно - перекодировать с .flv в .mpg (.avi). Но не тут то было, VideoDownloader ролик так и не скачал. Таким образом, имея лишь ссылку на понравившееся мне видео и желание его скачать, обратился к Google. И нашел.
Программа называется GenTube. На самом деле это обычный скрипт который скачивает и перекодирует видео-файл с формата .flv в .mpg.




Для нормальной работы скрипта нужны следующие программы:
Kdialog, ffmpeg, player of mpg ( mplayer), wget. Тут вроде понятно. Kdialog осуществляет диалог скрипта с пользователем, wget - загружает, ffmpeg - перекодирует и mplayer - проигрывает.
На сайте разработчика можно найти различные версии скрипта и на разных языках. Я остановился на этой - (скачать GenTube-1.0-Jan.tar.gz ).

Работа с данной программой:

Распаковываем скачанный архив и заходим в созданную директорию:


$ tar xzvf GenTube-1.0-Jan.tar.gz
$ cd GenTube-1.0-Jan/


Просмотрев файл README (он, оказывается, на испанском) и описания на сайте - запускаем:


$ ./gentube.sh


Скрипт запускает Kdialog, где нужно выбрать сначала язык интерфейса (English), а потом - Download Video



и ввести URL видео-ролика с YouTube. Скрипт сам запустит, скачает и перекодирует видео. После этого в Kdialog можно нажать Play video и просмотреть ролик в формате .mpg.
Довольно легко и удобно!

В процессе поиска столкнулся с еще некоторыми методами.
1. Скачать видео-ролик в формате .flv и перекодировать с помощью утилиты mencoder:

mencoder input.flv -ofps 15 -vf scale=300:-2 -oac lavc -ovc lavc -lavcopts vcode c=msmpeg4v2:acodec=mp3:abitrate=64 -o output.avi

2. Скачать видео-ролик в формате .flv и перекодировать с помощью утилиты ffmpeg:

ffmpeg -i videotoconvert.flv -ab 56 -ar 22050 -b 500 -s 320x240 output.mpg

(Источник)
3. Попробовать скрипты, написанные на Perl или Bash с сайта bashscripts.org.

Все эти три метода я не проверял по двум причинам:
а. Задача была выполнена с помощью GenTube;
b. Я не смог загрузить файл .flv с YouTube вручную :(.
Вот что выдает wget:

Resolving www.youtube.com...
failed: Name or service not known.

Но GenTube также использует wget и вроде бы без дополнительных ключей. В общем, если Вы сможете загрузить файл с YouTube, то перекодировать можно любым из указанных выше способов.

Читать дальше...