Плагин gstreamer для получения видеопакетов и метаданных из транспортного потока

привет, я пытаюсь демультиплексировать файл транспортного потока, чтобы разделить видео и аудио файлы (только пакеты Ts) с помощью плагинов gstreamer, я пробовал следующие параметры командной строки

для видео

    gst-launch-0.10 filesrc location=~/Desktop/TS_ES/katy.ts ! tsdemux !  filesink location = abc.mpg

для аудио

    gst-launch-0.10 filesrc location=~/Desktop/TS_ES/katy.ts ! tsdemux ! mpegaudioparse ! filesink location = abc.mp3

.... но я получаю только элементарные потоки, а не транспортные потоки, есть ли у кого-нибудь идея демультиплексировать (извлекать) аудио/видео пакеты из транспортного потока и

еще один вопрос: какой плагин полезен для извлечения метаданных (PAT/PMT...) из транспортного потока?


person user2406774    schedule 20.01.2015    source источник
comment
Демультиплексор транспортных потоков всегда будет демультиплексировать элементарные потоки, которые являются частью программы, которую вы хотите демультиплексировать. Если вы хотите извлечь необработанные пакеты или данные PSI, обратите внимание на DVB Inspector или dvbsnoop, а не на GStreamer.   -  person Daniel Kamil Kozar    schedule 20.01.2015
comment
привет, Даниэль, спасибо за быстрый ответ, у Gstreamer не было плагинов для извлечения Rawpackets? или лучше пойти на DVBInspector   -  person user2406774    schedule 20.01.2015
comment
GStreamer — это фреймворк для потоковой передачи мультимедиа, и поэтому он не очень заинтересован в необработанных пакетах. Это не означает, что необработанного плагина TS-пакета не существует, но я настоятельно рекомендую вместо этого попробовать DVBинспекционный или dvbsnoop.   -  person Daniel Kamil Kozar    schedule 20.01.2015


Ответы (1)


Я не уверен, что такое транспортный поток или элементарный поток. Но если вы предпочитаете извлекать необработанные данные, AppSink — ваш лучший выбор.

GstMapFlags flags;
GstMapInfo info;
guint64 i, count;

flags = GST_MAP_READ | GST_MAP_WRITE;
if(! gst_buffer_map(buf, &info, flags)) {
    g_print("buffer map failed\n");
    return 0;
}
// *(info->data) pointing to the first byte of raw data
gst_buffer_unmap(buf, &info);

Видеомета — это то, над чем я работаю. Если у кого-то есть что-нибудь, пожалуйста, поделитесь со мной.

person Chang    schedule 05.03.2015