av_bprintf(&bp, "" "v=0\r\n" "o=FFmpeg 4489045141692799359 2 IN IP4 127.0.0.1\r\n" "s=FFmpegPublishSession\r\n" "t=0 0\r\n" "a=group:BUNDLE 0 1\r\n" "a=extmap-allow-mixed\r\n" "a=msid-semantic: WMS\r\n"); if (!av_bprint_is_complete(&bp)) { g_print("Offer %d exceed max %d, %s\n", ret, MAX_SDP_SIZE, bp.str); ret = -1; goto end; }gstreamer用什么替换
时间: 2023-07-05 21:22:25 浏览: 190
simplest_ffmpeg_device-master.zip_ffmpeg_ffmpeg v4l2_v4l2 ffmpeg
在GStreamer中,可以使用`g_string_printf()`函数或者`g_strdup_printf()`函数来替换`av_bprintf()`函数。
例如,可以使用以下代码替换上述代码:
```c
GString *sdp_str = g_string_new(NULL);
g_string_printf(sdp_str, "v=0\r\n"
"o=FFmpeg 4489045141692799359 2 IN IP4 127.0.0.1\r\n"
"s=FFmpegPublishSession\r\n"
"t=0 0\r\n"
"a=group:BUNDLE 0 1\r\n"
"a=extmap-allow-mixed\r\n"
"a=msid-semantic: WMS\r\n");
if (sdp_str->len > MAX_SDP_SIZE) {
g_print("Offer %d exceed max %d, %s\n", ret, MAX_SDP_SIZE, sdp_str->str);
ret = -1;
goto end;
}
```
或者:
```c
char *sdp_str = g_strdup_printf("v=0\r\n"
"o=FFmpeg 4489045141692799359 2 IN IP4 127.0.0.1\r\n"
"s=FFmpegPublishSession\r\n"
"t=0 0\r\n"
"a=group:BUNDLE 0 1\r\n"
"a=extmap-allow-mixed\r\n"
"a=msid-semantic: WMS\r\n");
if (strlen(sdp_str) > MAX_SDP_SIZE) {
g_print("Offer %d exceed max %d, %s\n", ret, MAX_SDP_SIZE, sdp_str);
ret = -1;
g_free(sdp_str);
goto end;
}
```
这两种方法都可以将SDP内容存储在一个GString或者char类型的变量中。需要注意的是,`g_string_new()`函数会动态分配内存,因此需要使用`g_string_free()`函数释放原有的内存;`g_strdup_printf()`函数会动态分配内存,因此需要使用`g_free()`函数释放原有的内存。
阅读全文