Появилась задачка встроить в своё приложение запись видео с вебкамеры с наложением субтитров. Т.к. приложение адаптировать под мастдай не планируется, то решено было не изобретать велосипед, а использовать встроенные в ОС Linux велосипеды для работы с видео. Я выбрал avconv.
Надо сказать, что выбрал не сразу, а немного поплясал с бубном над разными вариантами вроде mencoder и ffmpeg. Mencoder отказался писать звук. Это меня абсолютно не устроило. В AltLinux ffmpeg заменён полностью на avconv и я решил не сопротивляться.
Звук, кстати, если alsa, смотреть так: cat /proc/asound/cards это понадобится, когда нужно будет указать номер используемой звуковой карты в параметре plughw:1
Мой рабочий скрипт с использованием avconv такой:
1 2 |
#!/bin/sh avconv -f video4linux2 -i /dev/video0 -f alsa -i plughw:1 -vcodec h264 -acodec mp3 video-$1.mp4 |
Где в $1 я передаю суффикс к названию файла.
Дальше субтитры. Не смог нагуглить вменяемой спецификации по srt. В итоге открыл несколько файлов srt к разным фильмам и сделал похоже. Спецификация по сути такая:
- Номер
- Время отображения в формате 00:00:02,943 —> 00:00:03,443
- Текст субтитров
- Пустая строка
Если назвать файл субтитров так же как и файл видео, то vlc подцепляет их автоматом.