Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 如何使用Gstreamer制作可观看的视频_Video_Gstreamer - Fatal编程技术网

Video 如何使用Gstreamer制作可观看的视频

Video 如何使用Gstreamer制作可观看的视频,video,gstreamer,Video,Gstreamer,我正在尝试用Gstreamer制作一个视频,经过多次研究,我发现matroskamux和FileLink插件可以做到这一点,但它不起作用 这是我的管道: gst-launch-1.0 videotestsrc ! x264enc ! h264parse ! matroskamux ! filesink location=test.mkv 我创建了一个5秒的视频: ^Chandling interrupt. Interrupt: Stopping pipeline ... Execution e

我正在尝试用Gstreamer制作一个视频,经过多次研究,我发现matroskamux和FileLink插件可以做到这一点,但它不起作用

这是我的管道:

gst-launch-1.0 videotestsrc ! x264enc ! h264parse ! matroskamux ! filesink location=test.mkv
我创建了一个5秒的视频:

^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:05.989791758
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
当我从gstreamer运行discover应用程序时:

user@IM00343:~/Desktop$ gst-discoverer-1.0 test.mkv 
Analyzing file:///home/user/Desktop/test.mkv
Done discovering file:///home/user/Desktop/test.mkv

Topology:
  container: Matroska
    video: H.264

Properties:
  Duration: 0:00:00.566333333
  Seekable: yes
  Tags: 
      container format: Matroska
      video codec: H264
      minimum bitrate: 989280
      bitrate: 1045608
      maximum bitrate: 989280
持续时间为0:00:00.566333333,该值与实际视频持续时间无关!而且视频是不可看的

我做错了什么?

您需要向管道发送EOS(流结束)事件,以允许元素正确完成流。如果没有这一点,muxer将无法正确完成文件并写入只有在处理完所有内容后才能写入的索引和标题。将管道设置为NULL作为中断将立即停止所有操作,muxer将使文件保持未完成状态

在gst启动中,
-e
标志应使其在停止管道之前按下并等待EOS。在代码中,如果要中断录制,则需要自己发送事件,然后等待GstBus接收EOS

某些输入(如文件)有一个端点。在这些情况下,源元素通常会在完成读取时发送EOS本身。对于从理论上无限的流(如照相机)读取的源,情况并非如此