Hi,
Is gapless playback only possible with playbin? I have a fairly complicated pipeline using a uridecodebin, two video sink bins and an audio sink (plus video and audio converters) which works but I can't load a new uri for gapless playback. I can't persuade playbin to use a similar custom sinkbin which does offer the uri queuing. I am currently trying the approach of using the uridecodebin drained signal to trigger the creation of a new pipeline - it this the correct approach? Regards, Dave. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Thu, 2016-07-14 at 16:43 +0930, Digits wrote:
Hi Dave, > Is gapless playback only possible with playbin? I have a fairly > complicated pipeline using a uridecodebin, two video sink bins and an > audio sink (plus video and audio converters) which works but I can't > load a new uri for gapless playback. I can't persuade playbin to use > a similar custom sinkbin which does offer the uri queuing. I am > currently trying the approach of using the uridecodebin drained > signal to trigger the creation of a new pipeline - it this the > correct approach? It is of course possible to do gapless playback also with a custom pipeline, but it's quite involved and not easy to get right. There are many ways to achieve the same thing though. If you're looking to do some kind of playout application, perhaps this will do the job: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examp les/playout.c Cheers -Tim -- Tim Müller, Centricular Ltd - http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Digits Info
What about using GES or gnonlin?
|
In reply to this post by Digits Info
On 2016-07-14 09:13, Digits wrote:
Hi, As Tim said, it is certainly possible to do it without playbin, but more complex. For example, I've implemented gapless playback without playbin, but for audio-only playback. I used the concat element. I couldn't use playbin, because I had to be able to prefetch data for the next stream properly (for example, start the prefetch 10 seconds before the current stream ended). With concat, you can notice when the switch happened by installing a pad probe on its srcpad that checks for a stream-start event. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Tim Müller
Hi Tim,
Thanks for the link to playback.c - I have now tried this but it only seems to play multiple mp4 files. Other containers result in demuxer non-negotiated errors (I tried qtdemux, matroskademux and mpegpsdemux), the playback then stalls on the last frame. The only modification I made to the code is to make it print the filenames. However, it validates the direction I was heading by queuing a complete pipeline and blocking until required. DEBUG level2: dave@OpenGL-Test-2:~/Dropbox/R+D/Digits/Decklink/gstreamer$ ./playout '/Storage/Tests/matroska/tasA1.mkv' '/Storage/Tests/matroska/tasA2.mkv' '/Storage/Tests/matroska/tasA3.mkv' filename: /Storage/Tests/matroska/tasA1.mkv filename: /Storage/Tests/matroska/tasA2.mkv filename: /Storage/Tests/matroska/tasA3.mkv 0:00:00.023151845 3326 0x9f14c0 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:00:00.023609446 3326 0x9f14c0 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:00:00.035824577 3326 0x7f7a100142d0 WARN libav gstavcodecmap.c:3089:gst_ffmpeg_caps_with_codecid: No specified format 0:00:00.035874890 3326 0x7f7a100142d0 WARN libav gstavcodecmap.c:2413:gst_ffmpeg_caps_to_pixfmt: ignoring insane framerate 1/0 0:00:00.151779451 3326 0x7f7a100142d0 WARN alsa conf.c:4705:snd_config_expand: alsalib error: Unknown parameters {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02} 0:00:00.151836019 3326 0x7f7a100142d0 WARN alsa pcm.c:2239:snd_pcm_open_noupdate: alsalib error: Unknown PCM default:{AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02} 0:00:00.153569495 3326 0x7f7a100142d0 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:00:00.153932424 3326 0x7f7a100142d0 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:00:00.159456785 3326 0x7f7a100142d0 WARN libav gstavviddec.c:1326:gst_ffmpegviddec_video_frame: Change in interlacing ! picture:1, recorded:0 0:00:00.170395006 3326 0x89b590 WARN libav gstavcodecmap.c:3089:gst_ffmpeg_caps_with_codecid: No specified format 0:00:00.170490941 3326 0x89b590 WARN libav gstavcodecmap.c:2413:gst_ffmpeg_caps_to_pixfmt: ignoring insane framerate 1/0 0:00:00.208710409 3326 0x89b590 WARN libav gstavviddec.c:1326:gst_ffmpegviddec_video_frame: Change in interlacing ! picture:1, recorded:0 0:01:46.734048970 3326 0x7f7a04003e30 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:01:46.734437850 3326 0x8a7f20 WARN matroskademux matroska-demux.c:4639:gst_matroska_demux_loop:<matroskademux1> error: stream stopped, reason not-negotiated 0:01:46.734602076 3326 0x7f7a04003e30 WARN basesrc gstbasesrc.c:3481:gst_base_src_start_complete:<source> pad not activated yet 0:01:46.734727856 3326 0x7f7a04003e30 WARN playout playout.c:454:playout_item_pad_probe_event: /Storage/Tests/matroska/tasA1.mkv: video pad went EOS before audio pad! There will be audio/video glitches while switching. 0:01:46.738367932 3326 0x7f79c0004140 WARN libav gstavcodecmap.c:3089:gst_ffmpeg_caps_with_codecid: No specified format 0:01:46.738407250 3326 0x7f79c0004140 WARN libav gstavcodecmap.c:2413:gst_ffmpeg_caps_to_pixfmt: ignoring insane framerate 1/0 0:01:46.755357066 3326 0x7f79c0004140 WARN libav gstavviddec.c:1326:gst_ffmpegviddec_video_frame: Change in interlacing ! picture:1, recorded:0 0:02:06.600578151 3326 0x9c2d90 WARN xvimagesink xvimagesink.c:555:gst_xv_image_sink_handle_xevents:<autovideosink0-actual-sink-xvimage> error: Output window was closed ^C On 14/07/2016 6:04 PM, Tim Müller
wrote:
On Thu, 2016-07-14 at 16:43 +0930, Digits wrote: Hi Dave,Is gapless playback only possible with playbin? I have a fairly complicated pipeline using a uridecodebin, two video sink bins and an audio sink (plus video and audio converters) which works but I can't load a new uri for gapless playback. I can't persuade playbin to use a similar custom sinkbin which does offer the uri queuing. I am currently trying the approach of using the uridecodebin drained signal to trigger the creation of a new pipeline - it this the correct approach?It is of course possible to do gapless playback also with a custom pipeline, but it's quite involved and not easy to get right. There are many ways to achieve the same thing though. If you're looking to do some kind of playout application, perhaps this will do the job: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examp les/playout.c Cheers -Tim -- Tim Müller, Centricular Ltd - http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |