Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6004[/thread]

Datei kopieren (Seite 3)

Leser: 7


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
esskar
 2004-01-10 21:28
#78579 #78579
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use strict;

open(FILE, "> movie.mov") or die;
binmode(FILE);

my $hexcode = "ac4165ffff32765ff3";
for(my $i = 0; $i < length($hexcode); $i += 2)
{
print FILE chr(hex(substr($hexcode, $i, 2)));
}
close(FILE);
anti
 2004-01-10 23:09
#78580 #78580
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
Danke an alle Helfer - es funktioniert endlich :)
esskar
 2004-01-11 00:44
#78581 #78581
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=anti,10.01.2004, 22:09]Danke an alle Helfer - es funktioniert endlich :)[/quote]
und wie?
havi
 2004-01-11 14:50
#78582 #78582
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=eisbeer,09.01.2004, 14:18]Ihr solltet mal diese Diskussion lesen...
90% der Posts sind vollkommen unwichtig.

:rock:[/quote]
Das sehe ich nicht so!

Auch durch genau solche Diskussionen lernt man eine Menge!!!

Gruss
anti
 2004-01-11 18:08
#78583 #78583
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
So:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
open(FILE, "> VIDEO.AVI") or die;
binmode(FILE);

my $hexcode = "52 49 46 46 f8 e9 08 00 41 ... ";
$hexcode =~ s/ //g;

for(my $i = 0; $i < length($hexcode); $i += 2)
{
print FILE chr(hex(substr($hexcode, $i, 2)));
}
close(FILE);

open(IN, "< TTVIDEO.AVI") or die "can't open $oldfile: $!";
open(OUT, ">> VIDEO.AVI") or die "can't open $newfile: $!";
binmode(IN);
binmode(OUT);
$blksize = (stat IN)[11] || 16384; # preferred block size?
while ($len = sysread IN, $buf, $blksize) {
if (!defined $len) {
next if $! =~ /^Interrupted/; # ^Z and fg
die "System read error: $!\n";
}
$offset = 0;
while ($len) { # Handle partial writes.
defined($written = syswrite OUT, $buf, $len, $offset)
or die "System write error: $!\n";
$len -= $written;
$offset += $written;
};
}
close(IN);
close(OUT);


Jetzt nur den doppelten Header löschen (probiere schon mit seek()) und es funktioniert (ich kann also Videos aufnehmen und währenddessen bereits ansehen).
Sicherlich gibt es intelligentere Lösungen, aber ich bin schon mal froh, dass es so läuft ... ;)
Also Danke noch mal an alle Beteiligten!!
esskar
 2004-01-11 18:44
#78584 #78584
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
open(IN, "< TTVIDEO.AVI") or die "can't open $oldfile: $!";
open(OUT, "> VIDEO.AVI") or die "can't open $newfile: $!";
binmode(IN);
binmode(OUT);

my $hexcode = "52 49 46 46 f8 e9 08 00 41 ... ";

for(my $i = 0; $i < length($hexcode); $i += 3)
{
print OUT chr(hex(substr($hexcode, $i, 2)));
}

$blksize = (stat IN)[11] || 16384; # preferred block size?
while ($len = sysread IN, $buf, $blksize) {
if (!defined $len) {
next if $! =~ /^Interrupted/; # ^Z and fg
die "System read error: $!\n";
}
$offset = 0;
while ($len) { # Handle partial writes.
defined($written = syswrite OUT, $buf, $len, $offset)
or die "System write error: $!\n";
$len -= $written;
$offset += $written;
}
}
close(OUT);
close(IN);
Dubu
 2004-01-12 00:34
#78585 #78585
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=esskar,11.01.2004, 17:44]
Code: (dl )
1
2
3
4
5
6
7
my $hexcode = "52 49 46 46 f8 e9 08 00 41 ... ";

for(my $i = 0; $i < length($hexcode); $i += 3)
{
   print OUT chr(hex(substr($hexcode, $i, 2)));
}
...
[/quote]
Code: (dl )
print OUT map { chr hex } split " ", $hexcode;

;)
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2004-01-07 22:16.