gpt4 book ai didi

android - Android JNI 上的 Appsrc Gstreamer 接收视频数据缓冲区

转载 作者:行者123 更新时间:2023-11-30 16:05:40 26 4
gpt4 key购买 nike

我正在尝试显示从 UDP 套接字接收到的数据(该数据已经标记为通过 AppSink 的回调)

这是我的代码,应该显示收到的数据:

静态无效gst_native_receive_video_data(JNIEnv *env, jobject thiz, jbyteArray 数组) {

jbyte *data = (*env)->GetByteArrayElements(env, array, NULL);
jsize size = (*env)->GetArrayLength(env, array);

GstBuffer *buffer = gst_buffer_new_allocate(NULL, size, NULL);
gst_buffer_fill(buffer, 0, data, size);

gchar *videoConsumerString = g_strdup_printf(
"appsrc name=source is-live=true do-timestamp=true min-latency=0 max-latency=100000000 ! video/x-raw,format=RGB,width=320,height=240,framerate=30/1 ! videoconvert ! autovideosink");
GstElement *consumer = gst_parse_launch(videoConsumerString, NULL);
g_free(videoConsumerString);

GstElement *source = gst_bin_get_by_name(GST_BIN(consumer), "source");
gst_app_src_push_buffer(GST_APP_SRC(source), buffer);
gst_element_set_state(consumer, GST_STATE_PLAYING);

gst_object_unref(source);
gst_object_unref(consumer);

(*env)->ReleaseByteArrayElements(env, array, data, JNI_ABORT);

}

请给我正确的方式来显示接收到的数据。

预先感谢您的帮助。

P.S:我是 Gstreamer 社区的新手

最佳答案

我解决了这个问题,因为管道必须位于另一个线程上,所以我把它放在另一个线程上。这是使用读取缓冲区数据的管道:

pCustomData->pipeline = gst_parse_launch ("appsrc name=source ! application/x-rtp, encoding-name=H264 ! rtpjitterbuffer drop-on-latency=false latency=10 ! rtph264depay ! h264parse ! queue ! avdec_h264 ! queue ! videoconvert ! videoflip method=counterclockwise ! autovideosink",&error);

以及读取接收到的外部数据的方法:

静态无效gst_native_receive_video_data(JNIEnv *env, jobject thiz, jbyteArray 数组) {

jbyte *temp = (*env)->GetByteArrayElements(env, array, NULL);
jsize size = (*env)->GetArrayLength(env, array);

GstBuffer *buffer = gst_buffer_new_allocate(NULL, size, NULL);
gst_buffer_fill(buffer, 0, temp, size);

GstElement *source = gst_bin_get_by_name(GST_BIN(pCustomData->pipeline), "source");
gst_app_src_push_buffer(GST_APP_SRC(source), buffer);

gst_object_unref(source);

(*env)->ReleaseByteArrayElements(env, array, temp, JNI_ABORT);

}

关于android - Android JNI 上的 Appsrc Gstreamer 接收视频数据缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60223674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com