Konuyu görüntüle
IUCODERS FORUM > İşletim Sistemleri & Donanım & Network > Microsoft > TV Kartından Görüntü Almak
Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
23.01.2010-21:00 #66325
Arkadaşlar ben uyduya bağlı tv kartından görüntüyü alarak bir media player ile ekrana vermek istiyorum + kanal değişikliği yapabilmek istiyorum. TV kartlarının driverlarının çoğunluğu böyle bir API sağlamıyor windows altında. Bu konu hakkında bilgisi olan var mı?


Not : Eğer yapabilirsem .NET Windows Form üzerinde göstermem gerekli. Fakat .NET böyle birşey desteklemiyorsa mecburen C++ ya da diğer dillere yöneleceğim.

Teşekkürler..


Edit : Araştırırken şurayı buldum ve mail attım. Bunun dışında bildiğiniz varsa fikirlerinize açı(ğı)m :)
http://www.progdvb.com/progdvbengine.html

Edit 2 : Mailime cevap geldi. Bu engine 50.000 €'muş beat up Yuh dedim. Oturur 2 ay kasar yazarım aynısını. nerd





Yazar
blackout


avatar

Kayıt: 11.12.2008
23.01.2010-22:30 #66330
50.000 € olan tam olarak nedir, aşağıdakiler işini görmez mi?

http://www.progdvb.com/order.html





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
23.01.2010-22:38 #66331
blackout yazdi
 
50.000 € olan tam olarak nedir, aşağıdakiler işini görmez mi?

http://www.progdvb.com/order.html


Bu linkte olanlar human control için geçerli :) Yani herhangi bir remote code çalıştıramıyor ya da API çağırarak kanal değiştirip görüntüyü alamıyorsun. Benim yapmam gereken şey merkezi bir makineden o makineye bağlı tüm client'lardaki kendi yazdığım programa "ATV'yi açın" komutu göndermek ve bu programım ile gelen komutu alarak TV kartından ATV'yi açmak.





Yazar
blackout


avatar

Kayıt: 11.12.2008
23.01.2010-23:44 #66337
O zaman iş başa düşer :) Ama instruction setleri temin etmek gerekir bir şekilde.





Yazar
spino


avatar

Kayıt: 22.01.2006
24.01.2010-00:32 #66338

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" _
                                        (ByVal lpszWindowName As String, _
                                        ByVal dwStyle As Long, _
                                        ByVal x As Long, _
                                        ByVal y As Long, _
                                        ByVal nWidth As Long, _
                                        ByVal nHeight As Long, _
                                        ByVal hwndParent As Long, _
                                        ByVal nID As Long) As Long 'returns HWND

Const ws_visible = &H10000000
Const ws_child = &H40000000
Const WM_USER = 1024
Const WM_CAP_EDIT_COPY = WM_USER + 30
Const wm_cap_driver_connect = WM_USER + 10
Const wm_cap_set_preview = WM_USER + 50
Const wm_cap_set_overlay = WM_USER + 51
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_SEQUENCE = WM_USER + 62
Const WM_CAP_SINGLE_FRAME_OPEN = WM_USER + 70
Const WM_CAP_SINGLE_FRAME_CLOSE = WM_USER + 71
Const WM_CAP_SINGLE_FRAME = WM_USER + 72
Const DRV_USER = &H4000
Const DVM_DIALOG = DRV_USER + 100
Const PREVIEWRATE = 30

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim hwndc As Long
Dim temp As String
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
On Error GoTo handler:
hwndc = capCreateCaptureWindow("CaptureWindow", ws_child Or ws_visible, 0, 0, 250, 250, Me.hWnd, 0)
If (hwndc <> 0) Then
temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
temp = SendMessage(Me.hWnd, WM_CAP_EDIT_COPY, 1, 0)
Else
MsgBox "Unable to capture video.", vbCritical
End If
Exit Sub
handler:
End
End Sub



Yukarıdaki VB kodu ile tv kartımdan aldığım görüntüyü boş bir form üzerinde görebiliyorum. İş capCreateCaptureWindow apisinde bitiyor. Ancak burdan aldığın görüntüyü formda istediğin alana yerleştirmek (Yukarıdaki kod 0,0 sol üstten 250 genişlik ve yükseklikte bir pencere açıyor) veya görüntü kaynağını düzgün seçmek (Aynı anda hem TV kartı hem de webcam bağlı olan bir PC'de hangi kaynaktan görüntü alacağını seçtirmek) önemli. Bunun haricinde kanal değiştirme işlemi için heralde biraz uğraşman gerekecek.





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
24.01.2010-00:37 #66339
spino yazdi
 

Yukarıdaki VB kodu ile tv kartımdan aldığım görüntüyü boş bir form üzerinde görebiliyorum. İş capCreateCaptureWindow apisinde bitiyor. Ancak burdan aldığın görüntüyü formda istediğin alana yerleştirmek (Yukarıdaki kod 0,0 sol üstten 250 genişlik ve yükseklikte bir pencere açıyor) veya görüntü kaynağını düzgün seçmek (Aynı anda hem TV kartı hem de webcam bağlı olan bir PC'de hangi kaynaktan görüntü alacağını seçtirmek) önemli. Bunun haricinde kanal değiştirme işlemi için heralde biraz uğraşman gerekecek.


Hmm, ben bu dediğinin C# ile yapılmışını (arka planda işi yapanlar tabi ki cpp) az önce bulmuştum. Kanal bile değiştiriyor :) Bunu uyarlamak gerekiyor dediğin gibi, umarım istediğimi yapabilirim. http://www.codeproject.com/KB/audio-video/tvfinetune.aspx

Alternatif önerilere her zaman açı(ğı)m :)





Yazar
aliozkan


avatar
ist
Kayıt: 01.02.2006
24.01.2010-00:41 #66340
directshownet kütüphanesini kullanabilirsin.
Aşağıda örnek projeler mevcut.
http://sourceforge.net/projects/directshownet/files/





Yazar
aliozkan


avatar
ist
Kayıt: 01.02.2006
24.01.2010-00:47 #66341
Hatta /BDA/DTViewer projesi tv kartı görüntü yakalama örneği imiş.





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb