GStreamer에서 Numpy 배열 실시간 수신

Jefflgaol

GStreamer 프레임 워크에서 실시간으로 프레임에서 프레임으로 numpy 배열을 수신하려고했습니다.

나는 이미 파이썬 에서 ( http://stackoverflow.com/questions/8187257/play-audio-and-video-with-a-pipeline-in-gstreamer-python/8197837에서) 다음같은 파이프 라인을 사용하려고했습니다 .

self.filesrc = Gst.ElementFactory.make('filesrc')
self.filesrc.set_property('location', self.source_file)
self.pipeline.add(self.filesrc)

# Demuxer
self.decoder = Gst.ElementFactory.make('decodebin')
self.decoder.connect('pad-added', self.__on_decoded_pad)
self.pipeline.add(self.decoder)

# Video elements
self.videoqueue = Gst.ElementFactory.make('queue', 'videoqueue')
self.pipeline.add(self.videoqueue)

self.autovideoconvert = Gst.ElementFactory.make('autovideoconvert')
self.pipeline.add(self.autovideoconvert)

self.autovideosink = Gst.ElementFactory.make('autovideosink')
self.pipeline.add(self.autovideosink)

# Audio elements
self.audioqueue = Gst.ElementFactory.make('queue', 'audioqueue')
self.pipeline.add(self.audioqueue)

self.audioconvert = Gst.ElementFactory.make('audioconvert')
self.pipeline.add(self.audioconvert)

self.autoaudiosink = Gst.ElementFactory.make('autoaudiosink')
self.pipeline.add(self.autoaudiosink)

self.progressreport = Gst.ElementFactory.make('progressreport')
self.progressreport.set_property('update-freq', 1)
self.pipeline.add(self.progressreport)

모든 파이프 라인도 이미 연결되었습니다. 그러나 스트림에서 실시간으로 numpy 배열 검색을 수행하는 방법에 대한 아이디어가 부족합니다. 제안 사항이 있습니까?

Velovix

원래 질문의 파이프 라인은 비디오를 표시하고 오디오를 재생하도록 설계되었으므로 각각 autovideosinkautoaudiosink요소를 사용합니다 . 비디오 프레임이 화면이 아닌 애플리케이션으로 이동하려면 .NET Framework appsink대신 다른 싱크 요소를 사용해야합니다 autovideosink.

self.appsink = Gst.ElementFactory.make('appsink')
self.pipeline.add(self.appsink)

appsink요소는 새로운 프레임을 사용할 때 appsink의 "발광-신호"속성을 사용하는 경우는, 그 화재에 연결할 수 있는지 "새로운 샘플"라는 신호를 가지고있다.

serf.appsink.set_property("emit-signals", True)
handler_id = self.appsink.connect("new-sample", self.__on_new_sample)

그런 다음 GStreamer의 버퍼 형식을 Numpy 배열로 변환하는 문제입니다.

def __on_new_sample(self, app_sink):
    sample = app_sink.pull_sample()
    caps = sample.get_caps()

    # Extract the width and height info from the sample's caps
    height = caps.get_structure(0).get_value("height")
    width = caps.get_structure(0).get_value("width")

    # Get the actual data
    buffer = sample.get_buffer()
    # Get read access to the buffer data
    success, map_info = buffer.map(Gst.MapFlags.READ)
    if not success:
        raise RuntimeError("Could not map buffer data!")

    numpy_frame = np.ndarray(
        shape=(height, width, 3),
        dtype=np.uint8,
        buffer=map_info.data)

    # Clean up the buffer mapping
    buffer.unmap(map_info)

이 코드는 프레임 데이터에 대해 특정 가정을합니다. 즉, RGB와 같은 3 색 형식이고 색상 데이터는 부호없는 8 비트 정수가 될 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

간단한 배열로 된 JSONObject에서 데이터를 수신하는 방법

분류에서Dev

16 진수 문자열에서 NumPy와 배열을 구축

분류에서Dev

numpy에서 배열 결합

분류에서Dev

첫 번째 열> 1 및 두 번째 열이 <1 인 numpy 배열에서 총 시간을 계산하는 방법

분류에서Dev

정수 numpy 배열에 중간 float 배열없이 float 스칼라를 곱하기

분류에서Dev

Numpy 배열의 정수 배열로 배열의 Numpy 배열

분류에서Dev

Numpy 배열에서 소수점 이하 자릿수 추출

분류에서Dev

전체 매개 변수 공간 / 2d 배열에 함수 적용, Numpy

분류에서Dev

시리즈 또는 numpy 배열에서 음수 및 양수 부호 변경을 구별하는 방법

분류에서Dev

실행 시간에 길이가 정의 된 정수 배열

분류에서Dev

자체 계산을 수행하여 1dim numpy 배열에서 numpy 행렬을 만드시겠습니까?

분류에서Dev

Numpy 배열의 요소를 시작 배열의 특정 영역에 따라 다른 numpy 배열에 저장 (Python)

분류에서Dev

Numpy Python에서 배열 청크 수정

분류에서Dev

파이썬에서 숫자 배열 목록을 간단한 1D numpy 배열로 어떻게 변환 할 수 있습니까?

분류에서Dev

numpy 배열에서 배열 추출

분류에서Dev

Linux에서 역순으로 수신 된 실시간 신호

분류에서Dev

numpy 배열에서 하위 배열을 재정렬 하시겠습니까?

분류에서Dev

numpy에서 행렬과 1d 배열 간의 내적

분류에서Dev

Numpy 배열에서 두 값을 동시에 뒤집기

분류에서Dev

O (n log n) 시간에 배열에서 발생 횟수

분류에서Dev

Numpy 배열에서 시퀀스 풀기

분류에서Dev

numpy 배열에서 배열 추출

분류에서Dev

마스크 배열에서 numpy 함수 percentile ()을 어떻게 실행할 수 있습니까?

분류에서Dev

numpy 배열에서 특정 값이 n 번째 초과 된 시간 찾기

분류에서Dev

numpy 배열에서 Tensorflow classify_image 실행

분류에서Dev

Numpy 배열 수정

분류에서Dev

PendingIntent는 알람 시간이 실시간에서 1 시간의 배수 일 때 실행됩니다.-Android

분류에서Dev

numpy 배열에 2D 배열 함수 반환 값 할당

분류에서Dev

numpy / scipy에서 보간 된 배열 값을 얻는 방법

Related 관련 기사

  1. 1

    간단한 배열로 된 JSONObject에서 데이터를 수신하는 방법

  2. 2

    16 진수 문자열에서 NumPy와 배열을 구축

  3. 3

    numpy에서 배열 결합

  4. 4

    첫 번째 열> 1 및 두 번째 열이 <1 인 numpy 배열에서 총 시간을 계산하는 방법

  5. 5

    정수 numpy 배열에 중간 float 배열없이 float 스칼라를 곱하기

  6. 6

    Numpy 배열의 정수 배열로 배열의 Numpy 배열

  7. 7

    Numpy 배열에서 소수점 이하 자릿수 추출

  8. 8

    전체 매개 변수 공간 / 2d 배열에 함수 적용, Numpy

  9. 9

    시리즈 또는 numpy 배열에서 음수 및 양수 부호 변경을 구별하는 방법

  10. 10

    실행 시간에 길이가 정의 된 정수 배열

  11. 11

    자체 계산을 수행하여 1dim numpy 배열에서 numpy 행렬을 만드시겠습니까?

  12. 12

    Numpy 배열의 요소를 시작 배열의 특정 영역에 따라 다른 numpy 배열에 저장 (Python)

  13. 13

    Numpy Python에서 배열 청크 수정

  14. 14

    파이썬에서 숫자 배열 목록을 간단한 1D numpy 배열로 어떻게 변환 할 수 있습니까?

  15. 15

    numpy 배열에서 배열 추출

  16. 16

    Linux에서 역순으로 수신 된 실시간 신호

  17. 17

    numpy 배열에서 하위 배열을 재정렬 하시겠습니까?

  18. 18

    numpy에서 행렬과 1d 배열 간의 내적

  19. 19

    Numpy 배열에서 두 값을 동시에 뒤집기

  20. 20

    O (n log n) 시간에 배열에서 발생 횟수

  21. 21

    Numpy 배열에서 시퀀스 풀기

  22. 22

    numpy 배열에서 배열 추출

  23. 23

    마스크 배열에서 numpy 함수 percentile ()을 어떻게 실행할 수 있습니까?

  24. 24

    numpy 배열에서 특정 값이 n 번째 초과 된 시간 찾기

  25. 25

    numpy 배열에서 Tensorflow classify_image 실행

  26. 26

    Numpy 배열 수정

  27. 27

    PendingIntent는 알람 시간이 실시간에서 1 시간의 배수 일 때 실행됩니다.-Android

  28. 28

    numpy 배열에 2D 배열 함수 반환 값 할당

  29. 29

    numpy / scipy에서 보간 된 배열 값을 얻는 방법

뜨겁다태그

보관