Closed lubosz closed 11 years ago
Yes, that's something to add to integration tests, fairly simple, for now we only test encoding with an ogg profile.
These is a excerpt of the log (i deleted duplicate errors) from the integration test suite
Lines like these confirm this bug: ges/integration.c:432:E:render:test_effect_render_to_aac_h264_quicktime_mp3_h264_mov:0: (after this point) Test timeout expired
Do you also encounter them?
bmonkey@bbook:~/workspace/ges/gst-editing-services (integration)$ make check-integration
cd tests/check && make check-integration
make[1]: Entering directory `/home/bmonkey/workspace/ges/gst-editing-services/tests/check'
./integration
Running suite(s): ges-render
0:00:25.029348973 25325 0x7f4618029730 ERROR check ges/integration.c:184:my_bus_callback: Error: No valid frames found before end of stream
0:00:29.618217891 25401 0x7f4604155390 ERROR libav :0:: get_buffer() failed (stride changed)
0:00:29.618319929 25401 0x7f4604155390 ERROR libav :0:: decode_slice_header error
0:00:29.618337110 25401 0x7f4604155390 ERROR libav :0:: no frame!
Unexpected critical/warning: No headers or buffers on pad muxer:video_763748129
x264 [error]: high10 profile doesn't support 4:4:4
0:02:05.485445372 26450 0x7f4620054330 ERROR check ges/integration.c:374:run_simple_seeks_test: Seeking at 0:00:01.500000000 to 0:00:01.800000000 did not happen
76%: Checks: 76, Failures: 7, Errors: 11
ges/integration.c:517:E:render:test_basic_render_to_aac_h264_quicktime_vorbis_vp8_webm:0: (after this point) Test timeout expired
ges/integration.c:517:E:render:test_basic_render_to_aac_h264_quicktime_mp3_h264_mov:0: (after this point) Test timeout expired
ges/integration.c:517:E:render:test_basic_render_to_vorbis_h264_matroska_vorbis_vp8_webm:0: (after this point) Received signal 11 (Segmentation fault)
ges/integration.c:517:E:render:test_basic_render_to_vorbis_h264_matroska_mp3_h264_mov:0: (after this point) Received signal 11 (Segmentation fault)
gstcheck.c:75:F:render:test_effect_render_to_vorbis_theora_ogg_mp3_h264_mov:0: Unexpected critical/warning: No headers or buffers on pad muxer:video_763748129
ges/integration.c:432:E:render:test_effect_render_to_aac_h264_quicktime_vorbis_vp8_webm:0: (after this point) Test timeout expired
ges/integration.c:432:E:render:test_effect_render_to_aac_h264_quicktime_mp3_h264_mov:0: (after this point) Test timeout expired
ges/integration.c:432:E:render:test_effect_render_to_vorbis_h264_matroska_vorbis_vp8_webm:0: (after this point) Received signal 11 (Segmentation fault)
ges/integration.c:432:E:render:test_effect_render_to_vorbis_h264_matroska_mp3_h264_mov:0: (after this point) Received signal 11 (Segmentation fault)
ges/integration.c:476:E:render:test_transition_render_to_aac_h264_quicktime_vorbis_vp8_webm:0: (after this point) Test timeout expired
ges/integration.c:476:E:render:test_transition_render_to_aac_h264_quicktime_mp3_h264_mov:0: (after this point) Test timeout expired
ges/integration.c:270:F:render:test_transition_render_to_vorbis_h264_matroska_mp3_h264_mov:0: Duration 0:00:02.776689340 not in range [0:00:02.900000000 -- 0:00:03.100000000]
ges/integration.c:551:F:render:test_image_playback_vorbis_vp8_webm:0: Assertion 'asset1 != NULL' failed
ges/integration.c:551:F:render:test_image_playback_vorbis_theora_ogv:0: Assertion 'asset1 != NULL' failed
ges/integration.c:551:F:render:test_image_playback_raw_h264_mov:0: Assertion 'asset1 != NULL' failed
ges/integration.c:551:F:render:test_image_playback_mp3_h264_mov:0: Assertion 'asset1 != NULL' failed
ges/integration.c:231:E:render:test_seeking_playback_raw_h264_mov:0: (after this point) Test timeout expired
ges/integration.c:379:F:render:test_seeking_audio_playback_raw_h264_mov:0: Got EOS before being able to execute all seeks
make[1]: *** [check-integration] Error 18
make[1]: Leaving directory `/home/bmonkey/workspace/ges/gst-editing-services/tests/check'
make: *** [check-integration] Error 2
Yes we do, working on fixing these one error at a time :)
This can be closed, I was using a wrong caps constructor (or it was fixed somewhere else in gst)
This works now:
#!/usr/bin/python
from gi.repository import GES, Gst, Gtk, GstPbutils, GObject
import signal
outputFile = 'file:///home/bmonkey/workspace/ges/export/quickTimeTest'
def handle_sigint(sig, frame):
Gtk.main_quit()
def busMessageCb(bus, message):
if message.type == Gst.MessageType.EOS:
print("eos")
Gtk.main_quit()
elif message.type == Gst.MessageType.ERROR:
print (message.parse_error())
def duration_querier(pipeline):
print(pipeline.query_position(Gst.Format.TIME)[1] / Gst.SECOND)
return True
def encoderProfile(container, video, audio):
cont_caps = Gst.Caps.from_string(container)
container_profile = GstPbutils.EncodingContainerProfile.new(
"quicktime",
"QuickTime Encoding Profile",
cont_caps,
None)
video_profile = GstPbutils.EncodingVideoProfile.new(
Gst.Caps.from_string(video),
None,
Gst.Caps.from_string("video/x-raw"),
0)
container_profile.add_profile(video_profile)
audio_profile = GstPbutils.EncodingAudioProfile.new(
Gst.Caps.from_string(audio),
None,
Gst.Caps.from_string("audio/x-raw"),
0)
container_profile.add_profile(audio_profile)
return container_profile
if __name__ =="__main__":
Gst.init(None)
GES.init()
timeline = GES.Timeline.new_audio_video()
layer = GES.Layer()
timeline.add_layer(layer)
asset = GES.Asset.request(GES.TestClip, None)
layer.add_asset(asset, 0 * Gst.SECOND, 0, 10 * Gst.SECOND, GES.TrackType.UNKNOWN)
timeline.commit()
pipeline = GES.Pipeline()
pipeline.add_timeline(timeline)
format = ["video/quicktime,variant=iso", "video/x-h264", "audio/mpeg,mpegversion=1,layer=3", "mov"]
container_profile = encoderProfile(format[0], format[1], format[2])
pipeline.set_render_settings(outputFile + "." + format[3], container_profile)
pipeline.set_mode(GES.PipelineFlags.RENDER)
pipeline.set_state(Gst.State.PLAYING)
bus = pipeline.get_bus()
bus.add_signal_watch()
bus.connect("message", busMessageCb)
GObject.timeout_add(300, duration_querier, pipeline)
signal.signal(signal.SIGINT, handle_sigint)
Gtk.main()
This script shows that the timeline does not start for quicktime, but for matroska. Same codecs.