LINUX.ORG.RU

Сегментация видео по времени (GStreamer)

 , ,


0

1

Привет.

Имеется входящий видео-поток (к примеру v4l). Требуется нарезать видео-поток и записывать его в виде последовательности файлов, ограниченных промежутком времени.

В результате должно получиться что-то вроде этого:

2012-04-22_15-30-00.avi
2012-04-22_15-31-00.avi
2012-04-22_15-32-00.avi

Сейчас делаю так - посредством Python создается и запускается Pipeline, вроде этого:

gst-launch-0.10 v4l2src ! videorate ! x264enc ! avimux ! filesink location=result.avi

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

В этом подходе две проблемы. Из за перезапуска Pipiline'a, во первых - ролики имеют разную длину, во вторых - между видеороликами есть пропуск кадров.

Посоветуйте, как можно решить данную проблему? Хотелось бы решение вроде multifilesink, только с возможностью разбивки файлов по времени.

Спасибо!



Последнее исправление: aveiv (всего исправлений: 1)
Ответ на: комментарий от r2d2

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

Т.е. получается:

import shlex
import subprocess
import threading
import time

class Mencoder(threading.Thread):
    def __init__(self):
        super(Mencoder, self).__init__()

        self.daemon = True

        self.cmd = 'mencoder -endpos 00:00:10 tv:// -ovc lavc -o {0}.avi'
        self.filename = 0

    def run(self):
        while True:
            pipe = subprocess.Popen(shlex.split(self.cmd.format(self.filename)))
            while pipe.poll() is None:
                pass
            self.filename += 1

def main():
    mc = Mencoder()
    mc.start()
    time.sleep(120)

if __name__ == "__main__":
    main()

А нужно что-бы mencoder, gstreamer, etc сам не разрывая потока разбивал видео на части в зависимости от времени, как это делает multifilesink в gstreamer (только там в зависимости от размера файла).

aveiv
() автор топика
10 марта 2013 г.
Ответ на: комментарий от aveiv

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

Xuch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.