[gst-devel] Next task: Generate QuickTime output for Cinelerra editing

Jason L. Buberel jason at buberel.org
Sat Mar 8 07:42:34 CET 2008


Now that (I think) I have done as much damage as possible to the art of 
creating Ogg-formatted files containing vorbis-encoded audio and 
theora-encoded video (http://www.buberel.org/best.ogg) with a webcam, I 
would now like to capture video + audio to a file format that can be 
edited by Cinelerra.

According to the Cinelerra docs here:
http://cv.cinelerra.org/docs/cinelerra_cv_manual_en.html#SEC70

The preferred file format is QuickTime-formatted files containing 
MPEG4-encoded video and MPEG4-encoded audio.

In reviewing the gstreamer documentation, I found that 'ffmux_mov' 
should be able to mux those two inputs:

ffmux_mov:       audio/mpeg
ffmux_mov:                    rate: [ 8000, 96000 ]
ffmux_mov:                channels: [ 1, 2 ]
ffmux_mov:             mpegversion: 4
[snip]
ffmux_mov:       video/mpeg
ffmux_mov:                   width: [ 16, 4096 ]
ffmux_mov:                  height: [ 16, 4096 ]
ffmux_mov:               framerate: [ 0/1, 2147483647/1 ]
ffmux_mov:             mpegversion: 4
ffmux_mov:            systemstream: false

After reviewing the set of audio and video codecs, it looked like I 
should be using:

ffenc_mpeg4:       video/mpeg
ffenc_mpeg4:                   width: [ 16, 4096 ]
ffenc_mpeg4:                  height: [ 16, 4096 ]
ffenc_mpeg4:               framerate: [ 0/1, 2147483647/1 ]
ffenc_mpeg4:             mpegversion: 4
ffenc_mpeg4:            systemstream: false

and for the audio there seems to be a single option:

faac:       audio/mpeg
faac:             mpegversion: { 4, 2 }
faac:                channels: [ 1, 6 ]
faac:                    rate: [ 8000, 96000 ]


But when I run a test command to validate just the audio pathway, the 
file that is generated cannot be played back in xine or mplayer. The 
error message produced seems to indicate that the problem is with the 
quicktime file format and header information:

 > gst-launch-0.10 -v   alsasrc device="hw:1,0"  !  
audio/x-raw-int,rate=16000,channels=1,depth=16 ! faac bitrate=16000 
name=aenc ! ffmux_mov name=mux ! filesink location=out.mov

See: http://www.buberel.org/qt-audio.mov

 > mplayer out.mov
Playing out.mov.
ISO: File Type Major Brand: Original QuickTime
MOV: missing header (moov/cmov) chunk! Maybe broken file...
ISO: File Type Major Brand: Original QuickTime
MOV: missing header (moov/cmov) chunk! Maybe broken file...
libavformat file format detected.
LAVF: no audio or video headers found - broken file?

The debug output from the gstreamer encoding command is:

Setting pipeline to PAUSED ...
/pipeline0/alsasrc0.src: caps = audio/x-raw-int, endianness=(int)1234, 
signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)16000, 
channels=(int)1
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock
/pipeline0/capsfilter0.src: caps = audio/x-raw-int, 
endianness=(int)1234, signed=(boolean)true, width=(int)16, 
depth=(int)16, rate=(int)16000, channels=(int)1
/pipeline0/capsfilter0.sink: caps = audio/x-raw-int, 
endianness=(int)1234, signed=(boolean)true, width=(int)16, 
depth=(int)16, rate=(int)16000, channels=(int)1
/pipeline0/aenc.sink: caps = audio/x-raw-int, endianness=(int)1234, 
signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)16000, 
channels=(int)1
0:00:00.441527000 19778 0x80698c0 DEBUG                 faac 
gstfaac.c:366:gst_faac_configure_source_pad:<aenc> allowed caps: 
audio/mpeg, mpegversion=(int)4, channels=(int)[ 1, 2 ], rate=(int)[ 
8000, 96000 ]
0:00:00.442645000 19778 0x80698c0 DEBUG                 faac 
gstfaac.c:413:gst_faac_configure_source_pad:<aenc> retrieving decoder info
0:00:00.443035000 19778 0x80698c0 DEBUG                 faac 
gstfaac.c:427:gst_faac_configure_source_pad:<aenc> src pad caps: 
audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)16000, 
codec_data=(buffer)0c08
/pipeline0/aenc.src: caps = audio/mpeg, mpegversion=(int)4, 
channels=(int)1, rate=(int)16000, codec_data=(buffer)0c08
/pipeline0/mux.audio_0: caps = audio/mpeg, mpegversion=(int)4, 
channels=(int)1, rate=(int)16000, codec_data=(buffer)0c08

Is there something about the ffmux_mov that I am missing? There are no 
options that I can give it (besides 'name').

Thanks,
jason




More information about the gstreamer-devel mailing list