2015-01-12 2 views
0

Я пытаюсь использовать Gstreamer для создания файла с возможностью поиска (индексирования) в Linux. Мои трубопроводы работают для записи и сохранения данных, но я не могу понять, как индексировать данные, так что я могу обратиться за помощью gst_element_seek_simple() [http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+4%3A+Time+management]Как создать индексный видеофайл с Gstreamer

Я видел этот пост: Gstreamer video output position tracking and seeking и подтверждено Я посылаю EOS на трубопроводе с -e.

Вот мой трубопровод и выход. Я собираюсь показать его на экране моей встроенной системы и сохранить в файле M4V.

# gst-launch-0.10 -e v4l2src ! \ 
    tee name=t ! 
    queue ! 
    video/x-raw-yuv,width=320,height=240 ! 
    videoflip method=clockwise ! 
    ffmpegcolorspace ! 
    fbdevsink t. ! 
    queue ! 
    ffmpegcolorspace ! 
    ffenc_mpeg4 ! 
    filesink location=output.m4v 

Вот результат:

Setting pipeline to PAUSED ... 
Pipeline is live and does not need PREROLL ... 
WARNING: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not get parameters on device '/dev/video0' 
Additional debug info: 
v4l2src_calls.c(235): gst_v4l2src_set_capture(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: 
system error: Inappropriate ioctl for device 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 
^CCaught interrupt -- handling interrupt. 
Interrupt: Stopping pipeline ... 

(gst-launch-0.10:534): GLib-CRITICAL **: Source ID 62 was not found when attempting to remove it 
EOS on shutdown enabled -- Forcing EOS on the pipeline 
Waiting for EOS... 
Got EOS from element "pipeline0". 
EOS received - stopping pipeline... 
Execution ended after 10057977251 ns. 
Setting pipeline to PAUSED ... 
Setting pipeline to READY ... 
Setting pipeline to NULL ... 
Freeing pipeline ... 

А вот выход GST-открыть на моем новом файле:

beaglebone:# gst-discoverer-0.10 output.m4v 
Analyzing file:///output.m4v 
Done discovering file:///output.m4v 

Topology: 
    video: MPEG-4 Video 

Properties: 
    Duration: 0:00:00.000000000 
    Seekable: no 

Благодаря

ответ

1

Вы должны хранить приводят к поисковому/индексированному формату. Для этого вы можете разместить видео mpeg4 внутри контейнера, такого как mp4 или matroska. Используйте «! Mp4mux! Filesink» или «! Matroskamux! Filesink», чтобы иметь его внутри тех форматов, которые должны сделать его доступным для просмотра.

Боковые примечания: gstreamer 0.10 более 2 лет устарел и не наработал, пожалуйста, обновите до 1.0. http://gstreamer.freedesktop.org/ является официальным сайтом gstreamer, и вы найдете версии для версий 1.x. Сайт gstreamer.com - это проект, не связанный с официальным проектом, и, если вы прочитаете текст в gstreamer.com, вы увидите, что вы должны использовать официальный репозиторий и установщиков.

+0

Это была проблема. Добавляем плагин mp4mux до того, как filesink сгенерировал проиндексированный видеофайл. К сожалению, ограничения моего проекта не позволяют мне использовать последний gstreamer-1.0, но все возможности, которые мне нужны, равны 0.10. Спасибо за вашу помощь! – linsek

Смежные вопросы