Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GStreamer管道冻结故障排除_C_Gstreamer_Freeze - Fatal编程技术网

C GStreamer管道冻结故障排除

C GStreamer管道冻结故障排除,c,gstreamer,freeze,C,Gstreamer,Freeze,目前我正在开发android应用程序,它将从远程源播放和录制视频 我的管道看起来像这样 videotestsrc do-timestamp=true ! videoscale add-borders=false ! capsfilter ! videoflip method=0 ! tee name=split split. ! queue ! videoconvert ! glupload ! glshader ! autovideosink async=false ! sp

目前我正在开发android应用程序,它将从远程源播放和录制视频

我的管道看起来像这样

videotestsrc do-timestamp=true ! videoscale add-borders=false ! capsfilter ! videoflip method=0 ! tee name=split 
    split. ! queue ! videoconvert ! glupload ! glshader ! autovideosink async=false !
    split. ! queue ! identity drop-probability=0 ! videoconvert ! timeoverlay ! x264enc key-int-max=10 ! h264parse ! splitmuxsink location=/sdcard/test-%d.mp4
我在日志中看到的唯一问题统计

video_buffer_pool_set_config:<videobufferpool1> no caps in config
video\u buffer\u pool\u set\u config:配置中没有上限

我不是要修复我的管道,我只是想了解一下有什么常见的算法可以解决这种冻结问题吗?

您最好的工具可能是gstdebugutils.h中的
GST\u DEBUG\u BIN\u to\u DOT\u文件
宏。它将显示您的管道和每个元素的状态。它确实需要您设置
GST\u DEBUG\u DUMP\u DOT\u DIR
环境变量

然后运行这样的命令,从点创建PNG或其他图像文件

dot-Tpng pipeline.dot-o pipeline.png

在我们的桌面系统中,我们通常将所有这些打包成一个命令,然后添加到程序中。我不确定你在安卓系统中的最佳路线是什么。也许还有一些额外的API可以提供帮助

确定问题元素后,使用
GST\u DEBUG
环境变量添加其他日志记录。例如,如果出现
x264enc
错误,请使用:

GST\u DEBUG=2,x264enc:5

这会将除x264enc之外的所有记录级别设置为错误,x264enc将为调试级别

此外,如果运行调试器,通常可以查看所有线程并找到挂起的元素