TS-File not seekable

Angel Martin amartin at vicomtech.org
Mon Dec 3 01:45:04 PST 2012


Hi,

You should use the "-e" option in order to insert an EOS signal when you do
crtl+c.

It is likely a problem closing properly the file.

Best,

Angel


2012/11/29 Bernhard Graaf <bernhard.graaf at gmx.de>

>  Hi @ all,****
>
> ** **
>
> I’ve an issue with my own program using dvbbasebin:****
>
> The pipe: gst-launch-1.0 dvbbasebin adapter=1 frequency=12544000
> program-numbers="17501" polarity="h" symbol-rate=22000 ! queue ! tsparse !
> filesink location=test_ts.mpg****
>
> Results a file that has no problem with seeking****
>
> But my own program:****
>
> ** **
>
> ** **
>
> **************************************************************************
> ****
>
> #include <stdio.h>****
>
> #include <unistd.h>****
>
> #include <sys/types.h>****
>
> #include <sys/stat.h>****
>
> #include <fcntl.h>****
>
> #include <stdlib.h>****
>
> #include <string.h>****
>
> #include <errno.h>****
>
> #include <gst/gst.h>****
>
> #include <glib.h>****
>
> #include <syslog.h>****
>
> #include <sys/time.h>****
>
> #include <sys/select.h>****
>
> ** **
>
> ** **
>
> GstElement *dvb_pipe, *dvb_source,  *dvb_sink, *dvb_queue, *dvb_parse;****
>
> GstBus *dvb_bus;****
>
> GMainLoop *loop;****
>
> ** **
>
> static gboolean****
>
> dvb_bus_call (GstBus     *tmp_bus,****
>
>           GstMessage *msg,****
>
>           gpointer    data)****
>
> {****
>
> ** **
>
>   char tmp_str[254];****
>
> ** **
>
>   switch (GST_MESSAGE_TYPE (msg)) {****
>
> ** **
>
>     case GST_MESSAGE_EOS:****
>
>       g_print ("End of stream\n");****
>
>       g_main_loop_quit (loop);****
>
>       break;****
>
> ** **
>
>     case GST_MESSAGE_ERROR: {****
>
>       gchar  *debug;****
>
>       GError *error;****
>
> ** **
>
>       gst_message_parse_error (msg, &error, &debug);****
>
>       g_free (debug);****
>
> ** **
>
>       sprintf(tmp_str, "Error: %s\n", error->message);****
>
>       g_printerr ("%s\n", tmp_str);****
>
>       syslog(LOG_ERR, "%s\n",tmp_str);****
>
>       g_error_free (error);****
>
>       g_main_loop_quit (loop);****
>
> ** **
>
>       break;****
>
>     }****
>
>     default:****
>
>       break;****
>
>   }****
>
> ** **
>
>   return TRUE;****
>
> }****
>
> ** **
>
> ** **
>
> int init_gst_tv()****
>
> {****
>
> ** **
>
>   gst_init (0, NULL);****
>
> ** **
>
>   dvb_pipe = gst_pipeline_new ("DVB-Streamer");****
>
>   dvb_source   = gst_element_factory_make ("dvbbasebin", "dvb-source");***
> *
>
>   dvb_queue     = gst_element_factory_make ("queue",      "dvb-queue");***
> *
>
>   dvb_parse     = gst_element_factory_make ("tsparse",    "dvb-parse");***
> *
>
>   dvb_sink     = gst_element_factory_make ("filesink",   "dvb-sink");****
>
> ** **
>
> ** **
>
>   if (!dvb_pipe || !dvb_source || !dvb_queue || !dvb_parse || !dvb_sink) *
> ***
>
>   {****
>
>     g_printerr ("One element could not be created. Exiting.\n");****
>
>     syslog(LOG_ERR, "Ein Pipe-Element nicht erstellt -->
> Programmabbruch\n");****
>
>     if(!dvb_pipe) g_printerr("DVB-Pipeline not created\n");****
>
>     else if(!dvb_source) g_printerr("DVB-Source not created\n");****
>
>     else if(!dvb_queue) g_printerr("DVB-Queue not created\n");****
>
>     else if(!dvb_parse) g_printerr("DVB-Parse not created\n");****
>
>     else if(!dvb_sink) g_printerr("DVB-Sink not created\n");****
>
>     return -1;****
>
>   }****
>
> ** **
>
>   dvb_bus = gst_pipeline_get_bus (GST_PIPELINE (dvb_pipe));****
>
>   gst_bus_add_watch (dvb_bus, dvb_bus_call, NULL);****
>
>   gst_object_unref (dvb_bus);****
>
> ** **
>
>   gst_bin_add_many (GST_BIN (dvb_pipe), dvb_source, dvb_queue, dvb_parse,
> dvb_sink, NULL);****
>
>   gst_element_link_many (dvb_source, dvb_queue, dvb_parse, dvb_sink,
> NULL);****
>
> ** **
>
>   g_object_set (G_OBJECT (dvb_sink),    "qos",           TRUE, NULL);  ***
> *
>
> ** **
>
>   return 1;****
>
> }****
>
> ** **
>
> int main (int argc, char **argv)****
>
> {****
>
> ** **
>
> ** **
>
>   char tmp_str[254], freq[40], file_name[254], rec_pids[25];****
>
>   char np_name[254];****
>
>   int pid = 0;****
>
>   int fd;****
>
> ** **
>
>   sprintf(freq,"%s000", argv[4]);****
>
>   sprintf(file_name, "test.mpg");****
>
> ** **
>
>   loop = g_main_loop_new (NULL, FALSE);****
>
> ** **
>
>   init_gst_tv();****
>
> ** **
>
>   g_object_set (G_OBJECT (dvb_source), "adapter", atoi(argv[3]), NULL);***
> *
>
>   g_object_set (G_OBJECT (dvb_source), "frontend", atoi(argv[6]), NULL); *
> ***
>
>   g_object_set (G_OBJECT (dvb_source), "frequency", atoi(freq), NULL);****
>
>   g_object_set (G_OBJECT (dvb_source), "program_numbers", argv[7], NULL);*
> ***
>
>   g_object_set (G_OBJECT (dvb_source), "polarity", argv[9], NULL);****
>
>   g_object_set (G_OBJECT (dvb_source), "symbol-rate", atoi(argv[5]), NULL);
> ****
>
>   g_object_set (G_OBJECT (dvb_sink), "location", file_name, NULL);****
>
> ** **
>
> ** **
>
>   gst_element_set_state (dvb_pipe, GST_STATE_PLAYING);****
>
> ** **
>
>   g_print ("Running...\n");****
>
>   g_main_loop_run (loop);****
>
> ** **
>
>   gst_element_set_state (dvb_pipe, GST_STATE_NULL);****
>
> ** **
>
>   g_print ("Deleting pipeline\n");****
>
>   gst_object_unref (GST_OBJECT (dvb_pipe));****
>
> ** **
>
> return 1;****
>
> }****
>
>
> *****************************************************************************
> ****
>
> ** **
>
> Is the result not seekable!****
>
> ** **
>
> Something missing to generate a seekable ts-file?****
>
> ** **
>
> Thanks a lot and sorry for this long mail!****
>
> Bernhard****
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20121203/daa35734/attachment-0001.html>


More information about the gstreamer-devel mailing list