문제

좋아, 그래서 나는 Pygst 바인딩으로 음악을 연주하는 앱을 작성하고 있습니다.

이를 위해서는 재생을 처리하기 위해 스레드를 사용해야합니다. 바인딩 라이브러리는 대부분의 스레드 컨트롤을 처리합니다.

이제이 개념을 완전히 이해하지 못하므로 일부 참고 문헌을 간절히 원할 것입니다. 그러나 내가 이해하는 방식은 기본적으로 여러 스레드를 사용할 수 있음을 기본적으로 알려야한다는 것입니다.

나는 이것을 이 호출을 사용하는 GSTREAMER 사이트에서 다음과 같습니다.

gtk.gdk.threads_init()  
gtk.main()

~에 따르면 여기, 이것은 앱에 여러 스레드 (다소)를 사용할 수 있음을 알려줍니다.

그것이 배경입니다. 이제 이것을 얻으십시오. 나는 그 줄을 내 코드에 넣었고 잘 작동합니다. 내 앱은 시도 할 때마다 충돌하지 않고 음악을 재생합니다. 그러나 무언가가 옳지 않습니다.
내가 그 라인을 얻은 예제에서 그들은 전체 GUI에 GTK를 사용하지만 wxwidgets를 사용하고 싶기 때문에이 GTK 기능을하는 것은 잘못된 느낌이 들었습니다.

이것과 동등한 WX가 있습니까? 아니면 이것을 사용해도 괜찮습니까? 여전히 크로스 플랫폼이 작동합니까?

또한 Exit 에서이 모든 스레드를 죽이는 방법을 알아 내야합니다 (지금은 그렇지 않습니다) 나는 GTK 메소드를 다시 사용하여 예제에서 어떻게 수행하는지 알 수 있으므로 WX 동등한 것을 찾습니다.

추신 :이 (또는 솔루션)은 wx.app.mainloop () 함수와 관련이있을 수 있지만이 루프가 어떻게 작동하는지 이해하려고 노력하면서 길을 잃었으므로 다시 한번, 이에 대한 좋은 언급은 높이 평가 될 것입니다. 좋은 해결책이있는 한 필요하지 않다고 가정하십시오.

도움이 되었습니까?

해결책

대신 이것을 사용해보십시오.

import gobject
gobject.threads_init()

모든 Python GStreamer 플러그인 문서의 시작 부분에서 그것이 대규모 인쇄로 작성되지 않은 방법이 궁금합니다. 찾는 데 몇 시간 밖에 걸리지 않았습니다.

조금 더 자세한 내용 여기.

다른 팁

Pygst에 대한 경험은 없지만 스레드와 Wxpython을 사용하는 일반적인 조언은 기본 스레드에서 GUI를 업데이트하는 것입니다 (즉, 메인 루프를 시작하는 스레드). 보다 http://wiki.wxpython.org/longrunningtasks 자세한 내용은.

파이썬 바인딩에 대한 경험은 없지만 WXWIDGET과 GSTREAMER를 Windows에서 함께 사용하여 성공했습니다. 문제는 wxwidgets가 Windows 이벤트 루프를 실행하고 GSTREAMER는 GLIB 이벤트 루프를 사용한다는 것입니다. GSTREAMER 이벤트에 관심이 없다면 아무것도 할 필요가 없습니다. 그러나 GSTREAMER 이벤트를 받으려면 별도의 gmaincontext가있는 별도의 스레드에서 자신의 Glib 이벤트 루프 (gmainloop)를 실행해야합니다. GST_BUS_CREATE_WATCH를 사용하여 GST 이벤트 소스를 작성하고 G_SOURCE_SET_CALLBACK을 사용하여 소스에 콜백을 추가 한 다음 G_SOURCE_ATTACH를 사용하여 GLIB 이벤트 루프의 주요 컨텍스트에 첨부하십시오. 그런 다음 콜백에서 GST를 처리하여 이벤트를 WX 메인 이벤트 루프로 전달할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top