我正在研究一個需要使用Gstreamer一次播放多個RTSP流的應用程序, 它正在單流處理正常,因爲我添加第二個流,第一個流停止並且第二次開始播放,幾秒鐘後,它也停止並應用程序崩潰。Gstreamer一次不播放多個流
這裏是APP的截圖流視圖
,當應用程序崩潰這張截圖
我有更新Gstreamer.framework,搜索和嘗試不同的solutions.but毫無效果
這裏是我的代碼示例流水線
#import "VideoViewController.h"
#import "GStreamerBackend.h"
#import <UIKit/UIKit.h>
@interface VideoViewController() {
GStreamerBackend *gst_backend;
GStreamerBackend *gst_backend1;
int media_width; /* Width of the clip */
int media_height; /* height ofthe clip */
Boolean dragging_slider; /* Whether the time slider is being dragged or not */
Boolean is_local_media; /* Whether this clip is stored locally or is being streamed */
Boolean is_playing_desired; /* Whether the user asked to go to PLAYING */
}
在viewDidLoad中:
url1= my first url
url2=my second URL
這裏我初始化我2流。
gst_backend = [[GStreamerBackend alloc] init:self videoView:video_view];
gst_backend1 = [[GStreamerBackend alloc] init:self videoView:video_view1];
此委託方法被稱爲:
-(void) gstreamerInitialized
{
dispatch_async(dispatch_get_main_queue(), ^{
firstInit=YES;
play_button.enabled = TRUE;
pause_button.enabled = TRUE;
message_label.text = @"Ready";
[gst_backend setUri:uri];
[gst_backend1 setUri:uri2];
//is_local_media = [uri hasPrefix:@"file://"];
//is_playing_desired = NO;
[gst_backend1 play];
[gst_backend play];
});
}
我認爲問題是在搜索路徑。
我不知道很多關於iOS的實施的GStreamer,但要牢記Linux實施的一點是每個進程只能有一個管道。也許您需要使用比GStreamerBackend更低級別的東西來創建兩部分管道?但是,你必須考慮解碼元素可能不容易支持兩個同時解碼... – mpr
如果你有輸出流的控制權,另一個需要考慮的事情是你可以讓應用程序將它們包裝起來,並將它們重新編碼爲單一流到您的iOS設備。 – mpr