[C#] WMV stream capturen. Encodering probleempje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online
..

[ Voor 138% gewijzigd door ? ? op 25-01-2013 09:32 ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Zo'n WMV is een binair formaat. Lijkt mij dat je dan een binary reader oid moet gebruiken.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

En zelfs een BinaryReader maakt gebruik van encoderingsformaten. Het kan zijn dat de karakters die gebruikt worden niet binnen de karakterset passen en dat het een vertaalslag nodig heeft om het op te kunnen schrijven. Binnen het .NET-framework zou je gebruik kunnen maken van Stream.CopyTo. Een mogelijke implementatie is alsvolgt:

C#:
1
2
3
4
5
6
7
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream responseStream = response.GetResponseStream();
Stream fileStream = new FileStream(filename, FileMode.Create);

// Eventueel buffered met BufferedStream
responseStream.CopyTo(fileStream);

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Die encoding van de BinaryWriter word zover ik weet alleen gebruikt als je strings of chars schrijft. Als je gewoon de Write(byte[]) gebruikt zou er gewoon exact de bytes die je meegeeft geschreven moeten worden.

Verder is het inderdaad het makkelijkst om de CopyTo van Stream te gebruiken zoals Feanathiel aangeeft.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online
..

[ Voor 150% gewijzigd door ? ? op 25-01-2013 09:32 ]


Acties:
  • 0 Henk 'm!

  • barfieldmv
  • Registratie: Maart 2004
  • Laatst online: 23-08 21:37
Komt het probleem niet elke X bytes voor? Dan zouden het een paar sync/correctie bits/bytes kunnen zijn. Als je de film op een andere manier opslaat ziet wireshark dan andere data langs komen?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Fastman schreef op maandag 17 januari 2011 @ 13:35:
update: Ik heb WireShark er even bijgehaald. Als ik mijn programma run, dan zie ik dezelfde binaire waarden over Wireshark. Is dat normaal? Ik verwachtte dat Wireshark "voor" mijn C# code zou draaien en ongeacht enige vorm van encodering gewoon de binaire data dat over het netwerk raast zou uitspuwen. Maar dat zijn dus dezelfde waarden als in het C# programma.
Wireshark luisterd gewoon op je netwerk interface, dus als de bytes daar al verkeerd langs komen, dan hoef je niet bij de ontvangende partij te kijken, maar gaat er iets mis bij de versturende partij.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Fastman schreef op maandag 17 januari 2011 @ 13:35:
update: Ik heb WireShark er even bijgehaald. Als ik mijn programma run, dan zie ik dezelfde binaire waarden over Wireshark. Is dat normaal? Ik verwachtte dat Wireshark "voor" mijn C# code zou draaien en ongeacht enige vorm van encodering gewoon de binaire data dat over het netwerk raast zou uitspuwen. Maar dat zijn dus dezelfde waarden als in het C# programma.
Dat doet wireshark ook. Het toont de data die jou applicatie binnenkrijgt. Jou app zet de data immers direct naar file, en stuurt niks meer over het netwerk.

Het feit dat je in wireshark dezelfde 'foutive' data ziet, houdt gewoonweg in dat de stream die je aangeleverd krijgt al niet helemaal goed is. Of in ieder geval niet is zoals je verwacht. Waarschijnlijk wordt het niet aangeleverd in de juiste encoding.
De CopyTo geeft precies hetzelfde :(
Help :(
Dat CopyTo dezelfde 'fout' geeft, bevestigd mijn punt alleen maar. CopyTo kopieert de stream byte voor byte en doet daar verders niks mee.


meer refreshen volgende keer :P

Acties:
  • 0 Henk 'm!

  • Cypher87
  • Registratie: Oktober 2004
  • Laatst online: 31-08 10:00
Wellicht dat het een soort van end-of-packet markering is die tussendoor komt. Is het bestand wat je opslaat wel even groot als je bron?

Acties:
  • 0 Henk 'm!

  • Kaw
  • Registratie: Maart 2001
  • Laatst online: 03-09 20:24

Kaw

Het is maar een schot voor het doel, maar misschien een gevalletje?: Wikipedia: Chunked transfer encoding

Het zou helpen als je de header van de response zou zetten op het forum.

Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online
..

[ Voor 131% gewijzigd door ? ? op 25-01-2013 09:32 ]


Acties:
  • 0 Henk 'm!

  • Kaw
  • Registratie: Maart 2001
  • Laatst online: 03-09 20:24

Kaw

Als je googled, dan merk ik niet dat .Net daar een ingebouwde oplossing voor heeft. Gelukkig zijn die chunks niet zo lastig. Met 4 regels extra zou je klaar moeten kunnen zijn.
Pagina: 1