58 lines
1.9 KiB
Plaintext
58 lines
1.9 KiB
Plaintext
int dvbSatSearchLnb = LibDvbV5.DvbSatSearchLnb("EXTENDED");
|
|
LibDvbV5SatLnb lnb = new LibDvbV5SatLnb(dvbSatSearchLnb);
|
|
|
|
LibDvbV5Device device = new LibDvbV5Device();
|
|
device.SetLog(8, null);
|
|
device.Find();
|
|
LibDvbV5DeviceList demuxerName = device.SeekBySystemName(0, 0, DvbDeviceType.Demux);
|
|
LibDvbV5DeviceList dvrName = device.SeekBySystemName(0, 0, DvbDeviceType.Dvr);
|
|
LibDvbV5DeviceList frontendName = device.SeekBySystemName(0, 0, DvbDeviceType.Frontend);
|
|
|
|
LibDvb5FrontendParameters frontend = new LibDvb5FrontendParameters(0, 0);
|
|
frontend.SetLnb(lnb);
|
|
frontend.StoreParameter(3, 11362000); //freq
|
|
frontend.StoreParameter(8, 22000000); //symbol rate
|
|
frontend.StoreParameter(17, (uint)LibDvbV5FrontendDeliverySystem.SYS_DVBS2);
|
|
frontend.StoreParameter(256, (uint)LibDvbV5SatPolarization.Horizontal);
|
|
frontend.SetParameters();
|
|
Thread.Sleep(400);
|
|
frontend.GetStatistics();
|
|
Thread.Sleep(400);
|
|
uint retrieveStats = frontend.RetrieveStats(512);
|
|
if ((retrieveStats & 0x10) != 0)
|
|
{
|
|
Console.WriteLine("got lock!");
|
|
LibDvbV5OpenDescriptor dvrFd = device.DeviceOpen(dvrName);
|
|
if (dvrFd == null)
|
|
throw new IOException("open failed");
|
|
dvrFd.SetBufferSize(1024 * 1024);
|
|
|
|
LibDvbV5OpenDescriptor demuxFd = device.DeviceOpen(demuxerName);
|
|
if (demuxFd == null)
|
|
throw new IOException("open failed");
|
|
|
|
demuxFd.DemuxSetPesFilter(0x2000, DemuxerPesType.DMX_PES_OTHER);
|
|
|
|
FileStream fileStream = File.OpenWrite(String.Format("{0}.ts", DateTime.Now.Ticks));
|
|
byte[] packBuffer = new byte[188];
|
|
int readLen = 0;
|
|
for (int i = 0; i < 9001; i++)
|
|
{
|
|
readLen = dvrFd.Read(packBuffer, 188);
|
|
if (readLen > 0)
|
|
{
|
|
fileStream.Write(packBuffer, 0, 188);
|
|
}
|
|
}
|
|
|
|
fileStream.Flush(true);
|
|
fileStream.Close();
|
|
demuxFd.Dispose();
|
|
dvrFd.Dispose();
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("no lock :(");
|
|
}
|
|
frontend.Dispose();
|
|
device.Dispose(); |