Как стать автором
Обновить

Комментарии 12

Подскажите, пожалуйста, как наложить png watermark только на первые 30 секунд видео при помощи libavfilter, без резки и склейки?
А Вы ведь это уже спрашивали в прошлый раз. Единственный существующий способ это резка и склейка. Альтернативный вариант — доработать фильтр FFmpeg, который это делает. Добавить ему параметр продолжительности watermark.
Если более точно, то это фильтр overlay (файл libavfilter/vf_overlay.c), добавить необходимые параметры в структуру OverlayContext, и доработать функцию draw_slice.
Так никто и не ответил…

Вот так накладывается прозрачно на все видео
ffmpeg -loop_input -f image2 -i w.png -vframes 901 -vcodec png logo.mov
ffmpeg -i v.mp4 -acodec copy -vf «movie=logo.mov [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]» nv.mp4

Вот так накладывается а через миниту пропадает, но нет прозрачности! Остается черный прямоугольник.
ffmpeg -loop_input -f image2 -i w.png -vframes 901 -vf «fade=out:870:30:alpha=1» -vcodec png logo.mov
ffmpeg -i v.mp4 -acodec copy -vf «movie=logo.mov [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]» nv.mp4

Не могу понять это бага ффмпег или чяднт
Второй вариант работает! Вероятно у Вас старая версия ffmpeg.
Альфа-канал в фильтре fade был добавлен 9 ноября 2011 года. Попробуйте обновиться.
ffmpeg-0.7.11_4 это самая новая в портах фрибсд, не работает.
Но спасибо за подтверждение правильности действий
Так соберите свежую версию из репозитория.
Да, спасибо, на новой версии действительно все работает.
Кстати, не знаете как узнать какая именно аудио дорожка является ru? В mencoder есть -alang ru, а тут только номера.
Ой, расскажите лучше про перемотку, субтитры и всё прочее. Ведь замечательный плеер для embedded может получиться!
Перемотка — один вызов av_seek_frame
А можно чуть подробнее? Конкретно, сейчас есть примитивный плеер на базе ffmpeg для Колибри, но он умеет просто воспроизводить видео. Хотелось бы добавить в него паузу, перемотку, громкость и многое другое, но как это сделать — я не знаю. Хотелось бы знать хотя бы в общих чертах, куда копать.
Занимаюсь чем-то похожим, только для live трансляций. MPEG-TS / HLS

И тут вдруг возник вопрос:
Если у нас видео без b-frames, то DTS не используется,
если с PTS для видео все понятно, — просто увеличиваем на (1 / fps) * 90000 ) для каждого фрейма,
то как установить PTS для аудио?

Последнее время, для аудио-пакетов я ставил PTS соответствующее ближайшему видео пакету (по-моему это логично для live видео).
И на ТВ / Flash плеере, все работало нормально.

И тут я попробовал такой стрим проиграть на ipad недавно, и слышно что аудио-пакеты наезжают друг на друга, т.е. какая-то часть аудио просто вылетает.

Я так понял нужно парсить AAC, брать длительность пакета, и к следующему PTS добавлять эту длительность?
Как ее определить?
Или есть более простой путь?

P.S. Интерисует лишь алгоритм рассчета PTS для аудио.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории