在H264中,元素流是什么意思?

3

我在维基百科上读到了什么是Elementary Stream。我正在使用的工具"Live555"需要"H.264视频Elementary Stream文件"。那么,当从视频应用程序导出视频时,我是否需要选择特定的首选项来生成"Elementary Stream"?

1个回答

5
如果您正在使用ffmpeg,可以使用类似以下内容的命令:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -vcodec libx264 -f h264 test.264   

你需要根据你要导出的视频文件类型来调整命令行。这将生成包含H.264访问单元的文件,其中每个访问单元由一个或多个NAL单元组成,每个NAL单元前缀为起始码(0001或001)。您可以使用十六进制编辑器打开该文件以查看它。
您还可以使用H.264参考编码器从原始YUV输入文件创建H.264基本流文件(.264)。
如果将生成的.264文件复制到live555 testOnDemandRTSPServer目录中,则可以测试通过RTSP / RTP流式传输该文件。

能否提供一些有关NAL / H.264基本流的阅读资料?如何快速检查流是否是基本流?

通常,容器中的任何内容(avi或mp4)都不是基本流。用于基本流的典型扩展名是“.264”。双重检查文件是否为基本流的最快方法是在十六进制编辑器中打开文件并查找文件开头处的起始码(00000001)。请注意,在整个文件中应该有3个(000001)和4个(00000001)字节的起始码(在每个NAL单元之前)。

为什么live555不能播放非基本流的h264流?

这纯粹是因为live555没有实现所需的分离器(例如avi或mp4)。据我所知,live555可以支持从Matroska容器中分离出H.264。

我正在使用Windows系统,并下载了live555二进制文件。按照您所述,使用ffmpeg转换文件后,我仍然无法连接。我可以播放mp3文件,因此连接是存在的。 - user1767754
我正在Windows上启动“Live555MediaServer.exe”,然后它会显示“使用URL rtsp://192.168.0.10:8554/<filename>从此服务器播放流”。在我的情况下,它是''rtsp://192.168.0.10:8554/test.h264''。我没有“testOnDemandRTSPServer”,我有预构建的exe文件。我正在使用VLC读取流,正如我所说,我可以毫无问题地打开mp3文件。 - user1767754
请注意,H264基本流的文件扩展名为“.264”,没有“h”。我刚刚在媒体服务器上进行了测试。 - Ralf
完美,现在它可以正常工作了!你能给我一些关于NAL/H.264基本流的阅读参考吗?如何快速检查流是否为基本流?为什么live555不能播放不是基本流的h264流?我已经从http://www.h264info.com/clips.html下载了h264文件。 - user1767754
1
在答案中添加了一些注释。 - Ralf
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接