2012-05-24 2 views
2

Я ищу инструмент командной строки, работающий на linux, который доступен для сценариев, и он может давать выходное видео с мозаичными видеороликами внутри. Проблема в том, что мозаичные видеоролики должны меняться внутри выхода. Представьте видеоизображение 4 * 4 мозаики, но есть больше входных видеороликов, чем 16, поэтому, например, каждые 10 секунд мне приходится менять плитку в мозаике на другое видео.Инструмент командной строки для видеоизображения мозаики

Я нашел инструмент командной строки VLC и avisynth, который может генерировать вывод мозаики, но, как я вижу, они не поддерживают смену видео, описанное выше.

Кто-нибудь знает другие варианты?

Заранее благодарен!

ответ

0

AviSynth может присоединиться к видео, поэтому вы можете изменить источник видео в любое время в скрипте.

Например, в следующем примере, в левом верхнем углу видео из четырех входов изменится на другой видео через 6 секунд:

v11 = AviSource("SomeSampleVideo.avi", false). \ 
    Crop(0, 0, 320, 240).AssumeFPS(25).ConvertToRGB32.Trim(0, 150).FadeOut(25, $FF0000) 

v12 = AviSource("AnotherSampleVideo.avi", false). \ 
    Crop(40, 10, 320, 240).AssumeFPS(25).ConvertToRGB32.FadeIn(25, $FF0000) 

v1 = v11 + v12 

v2 = ImageReader("SomeSampleBitmap.bmp").Crop(20, 10, 320, 240).ConvertToRGB32 
v3 = AviSource("YetAnotherVideo.avi", false).Crop(30, 30, 320, 240).ConvertToRGB32 
v4 = v1.Subtract(v2) 

return StackVertical(StackHorizontal(v1, v2), StackHorizontal(v3, v4)) 


Вполне возможно, что я неправильно требования, хотя ..

+0

спасибо, что сработало! –

0

работа вокруг может быть, чтобы запустить видео через UDP поток, генерируемый VLC например:

vlc -vvv $YOUR_INPUT_VIDEO_AS_A_VARIABLE --sout='#transcode{vcodec=h264, vb=768, fps=25.0, width=1920, height=1080, scale=1, acodec=aac, ab=128, samplerate=32000}:standard{access=udp, mux=ts, dst=239.0.0.1}' 

Затем включите этот UdP поток в вашем VLC мозаика, например:

setup video1 input udp://@239.0.0.1 

Позже я полагаю, вы можете написать скрипт, который вызывается с переменным являются путем к новому видео ($ YOUR_INPUT_VIDEO_AS_A_VARIABLE) в конечном счете убивает ранее экземпляр VLC и повторный запуск его с новым видео, отправляя его на тот же адрес udp. В вашем случае вам необходимо учитывать порты, например. отправка видео от 1 до 239.0.0.1:1234; видео от 2 до 239.0.0.1:1236; видео 3 до 239.0.0.1:1238 - и так далее.

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

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

Смежные вопросы