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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
http://www.xmission.com/~ink/gnash/README.txt:
Gnash stream dumper
===================
This is an experimental build of gnash that allows the user to dump
both the raw (BGRA24) video stream, and the raw (PCM/Wave) audio
stream from a movie. The "dump gui" is disabled by default, you'd
need to compile it with something like this:
./configure \
--prefix=/usr/local/gnash-dump \
--enable-renderer=agg \
--enable-gui=gtk,dump \
--enable-media=ffmpeg \
--disable-kparts \
--disable-nsapi \
--disable-menus
It *requires* AGG as the renderer and *ffmpeg* as the sound driver.
Although audio and video are separate (you can dump video, even if you
choose gstreamer for audio output).
Two new command-line parameters are available:
-A <file> Audio dump file (wave format)
-D <file> Video dump file (only valid with dump-gnash)
Once invoked, gnash will output sh-friendly information about the
results:
$ /usr/local/gnash-dump/bin/dump-gnash -D blah.out -A \
blah.wav -t 85 ./sbemail45.swf
# Created 44100 16Mhz stereo wave file:
AUDIOFILE=blah.wav
# WARNING: Gnash was told to loop the movie
# Gnash created a raw dump file with the following properties:
COLORSPACE=BGRA32
NAME=blah.out
WIDTH=550
HEIGHT=400
INTERVAL=83
FPS_DESIRED=12.0482
TIME=85.0749
FPS_ACTUAL=12.0482
# Finished writing file
FRAMECOUNT=1026
One could then play the movie with mplayer:
mplayer -demuxer rawvideo \
-rawvideo fps=12.0482:w=550:h=400:format=bgra blah.out \
-audiofile ./blah.wav
Or play it fullscreen, with hardware acceleration:
mplayer -demuxer rawvideo \
-rawvideo fps=12.0482:w=550:h=400:format=bgra blah.out \
-audiofile ./blah.wav \
-fs \
-vo xv
Or, convert it to YUV:
mplayer blah.out -vo yuv4mpeg:file=blah.yuv \
-demuxer rawvideo \
-rawvideo w=550:h=400:format=bgra:fps=12
And then make an MPEG-4/AC3 out of it:
mencoder blah.yuv -audiofile ./blah.wav \
-ovc lavc -oac lavc \
-lavcopts vcodec=mpeg4:acodec=ac3 -o blah.avi
Things To Do
============
o Investigate gstreamer for audio stream capture.
o Let gnash send the bitmap data to places other than a file (eg, use
ffmpeg to encode on-the-fly).
o Have SDL output PCM data as fast as we can play the movie?
o Use something other than a polling loop for driver method.
o Use ffmpeg's swscale to convert AGG's RGB-only output to YUV, which
could then be sent to X11's XVideo extension for hardware scaling
(ala Adobe's Flash 9). This could be a raw X11-only gui, or an
add-on to the gtk gui -- much in the same way that X11-shm is
#ifdef'd right now.
o Let the user specify which color space/bpp from AGG they want to
see (RGB24, RGB16, BGRA32, etc.).
o Remove gettimeofday calls so that it works on more operating
systems.
o Change automake to *not* include X11 libraries for the dump
renderer. There is no reason that this "gui" couldn't run on a
headless server.
|