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
Html 不带段的HTTP流MP4_Html_Video_Ffmpeg_Live Streaming - Fatal编程技术网

Html 不带段的HTTP流MP4

Html 不带段的HTTP流MP4,html,video,ffmpeg,live-streaming,Html,Video,Ffmpeg,Live Streaming,我正在尝试流式处理MP4 如果你流式播放MP3,你可以将它流式播放(可能通过RTMP或IceCast)并通过HTTP观看(但没有HLS)。您的实时MP3文件类似:。在这里,您可以收听实时生成的MP3 现在我想要一些类似MP4的东西。 我希望将MP4(AVC/H.264)流式传输到服务器(可能通过RTMP),并希望在此位置接收livestream:。 我不想使用HLS(它是M3U8文件和TS文件) 这可能吗 我知道,在您将其转换为FastStart/WebOptimized MP4后,它可以与已经

我正在尝试流式处理MP4

如果你流式播放MP3,你可以将它流式播放(可能通过RTMP或IceCast)并通过HTTP观看(但没有HLS)。您的实时MP3文件类似:。在这里,您可以收听实时生成的MP3

现在我想要一些类似MP4的东西。 我希望将MP4(AVC/H.264)流式传输到服务器(可能通过RTMP),并希望在此位置接收livestream:。 我不想使用HLS(它是M3U8文件和TS文件)

这可能吗


我知道,在您将其转换为FastStart/WebOptimized MP4后,它可以与已经生成的MP4一起工作,但我想要一个实时MP4。

首先,您可以比较苹果和香蕉:mp3是一个编解码器,MP4是一个容器

如果你只是“流”一个mp4文件,你只需要流二进制数据,而不给解码器任何关于它在看什么的线索。这就是HLS和公司的作用所在

正如您所提到的,为了流式播放mp3,您需要一些附加功能,如Icecast或rtmp服务器。如果您想要流式传输AVC/AAC,则相同:您可以使用例如DASH、HLS、rtmp、rtsp、udp和mpeg2传输流作为容器,并且您的流已准备就绪。(大部分内容以某种方式基于mpeg2ts)

问题在于客户端需求。如果您希望它兼容HTML5和跨平台,那么目前您基本上只能使用HLS或DASH进行流媒体直播

如果接收器应用程序可能与Flash或HTML5不同,则不意味着使用附加流服务器的最简单方法之一是使用mpeg2传输流的UDP流

我将添加一个非常简化的图形,以便您了解不同技术的工作原理:

此外,不断有新技术出现,例如,我在最近的应用程序中使用WebRTC进行HTML5浏览器的实时流媒体传输

理论上,您可以流式传输.mp4二进制数据,但客户端需要对此做好充分准备。如果客户端在文件开始时没有接收到moov Atom,那么它实际上不再接收mp4流,而只是一个二进制AVC/AAC流。这或多或少就是MPEG DASH的工作原理。它将解码所需的信息作为单独的文件与二进制文件块一起存储一定的短时间段

[编辑]我刚跨过它,这里有一个相关的ffmpeg命令:

ffmpeg -i D:\input.mxf -s 640x360 -hls_list_size 30 -hls_flags delete_segments+append_list+omit_endlist -hls_list_size 1 -f hls c:\xampp\htdocs\out.m3u8
然后我下载并将其解压缩到我的Web服务器根目录:

在那里,我从hls.js:-打开了演示页面,并在那里输入了我的m3u8“”的url,它很好地播放了我的实时视频。没有在我的浏览器上安装任何插件;-)


来源:

视频是否包含声音?如果没有声音(例如:从CCTV安全摄像头),可能会有一个解决方案。视频有声音。@VC.One如果可以的话,没有声音的解决方案是什么ask@Harry我的想法是简单直接地流式传输原始h.264数据/帧,而不涉及MP4容器。这将类似于实时流媒体MP3帧(例如:对于“实时”流媒体,您不会将MP3数据放在MP4容器中,因此也不会将其放在视频中)。另一种选择(如果有声音)是使用FLV或AVI等支持实时流媒体的容器。我相信JavaScript可以用来读取字节,这样人们就可以(从FLV或AVI)提取编解码器数据,并将其提供给
标记(另请参见:MediaSource Extensions)…因此,如果我理解正确,我无法将FastStart MP4用于实时流媒体,但我必须将其分成几个部分。是的,文件块总是这样。与HLS一样,单个块的大小定义了客户端可以跳入“活动”流的“偏移量”。此外,客户端还需要为mp4块的“无缝”播放做好准备……好的,我认为如果服务器生成一个包含“moov”的mp4头,然后在“mdat”中流式传输所有实时样本和AVC样本,这是可能的,但如果不可能,我必须使用HLS或MPEG-DASH。我不知道HTML5视频标签是否支持这一点。我邀请你进入DASH聊天室