Я пытаюсь создать конвейер для получения потока в кодировке h264, используя gstreamer с аппаратным кодированием.
Ниже показан этот рабочий конвейер:
Код: Выделить всё
"ahcsrc ! capsfilter caps=video/x-raw,width=1280,height=720,format=YV12,framerate=30/1 "
"! videoconvert "
"! amcvidenc-c2mtkavcencoder bitrate=6000000 i-frame-interval=2 "
"! h264parse "
"! tee name=t t. ! queue "
"! splitmuxsink muxer-factory=matroskamux name=splitmuxsink "
"! openslessrc "
"! audioconvert "
"! voaacenc "
"! splitmuxsink.audio_0 t. ! queue "
"! appsink name=thumbnail-sink drop=1"
Код: Выделить всё
gchar *string = NULL;
GError *appsrcError = NULL;
string = g_strdup_printf ("appsrc name=appsrcth "
"! amcviddec-c2mtkavcdecoder "
"! identity dump=1 "
"! filesink location=/sdcard/DCIM/video/a.mp4"
);
data->thumbnail_appsrc = gst_parse_launch (string, &appsrcError);
g_free (string);
GstElement * appsrcTh = gst_bin_get_by_name (GST_BIN (data->thumbnail_appsrc), "appsrcth");
/* configure for time-based format */
g_assert(appsrcTh);
if (appsrcTh != NULL) {
g_object_set (appsrcTh, "format", GST_FORMAT_TIME, NULL);
/* uncomment the next line to block when appsrc has buffered enough */
/*g_object_set (appsrcTh, "block", TRUE, NULL);*/
g_signal_connect (appsrcTh, "need-data", G_CALLBACK (start_feed), data);
g_signal_connect (appsrcTh, "enough-data", G_CALLBACK (stop_feed), data);
}
Код: Выделить всё
gst_video_decoder_chain: error: decoder not initialized
Я пытался использовать аппаратный декодер в Android gstreamer.
/>ниже указано имя элемента аппаратного декодера для gstreamer.
Код: Выделить всё
amcviddec-c2mtkavcdecoder
Источник: https://stackoverflow.com/questions/781 ... -gstreamer