我有一个 playbin2 管道播放具有多个轨道的视频文件。current-video
我可以通过设置属性来改变当前播放的曲目:
current-video : Currently playing video stream (-1 = auto)
flags: readable, writable
Integer. Range: -1 - 2147483647 Default: -1
但是,一旦我设置了这个,视频就会挂起,然后最终变成灰色。音频继续播放。一位同事建议冲洗管道可能会修复它,但唯一的方法似乎是使用GST_SEEK_FLAG_FLUSH
. 使用 seek 确实有效,但看起来很乱:
g_object_set(m_playBin, "current-video", video, NULL);
GstClockTime = getCurrentTime();
gst_element_seek(m_playBin, m_player->rate(),
GST_FORMAT_TIME,
(GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE),
GST_SEEK_TYPE_SET, clockTime,
GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)
设置时我做错了current-video
吗?有没有更简单的方法来冲洗管道?
注意:我使用 Ogg Theora 文件进行测试,因为它很容易构建,所以我不确定这个问题是否会以其他格式出现。