当前位置: 首页 > 知识库问答 >
问题:

无法使用FFMPEG重新流到MP4 HTML5视频

尹光辉
2023-03-14

我已经努力让FFMPEG的直播流工作了很多个小时,所以举白旗,在这里寻求帮助。

我的场景是我有一个IP安全摄像头,我可以通过RTSP(H.264)成功连接,并将视频保存为文件段,它们可以通过独立的应用程序如VLC或通过Node.js web服务器应用程序播放,该应用程序发送'video/mp4'&keep-alive头部,并将以前由FFMPEG保存的mp4文件流式传输到HTML5视频客户端。

1)将输出设置为HTTP字符串。我认为FFMPEG不支持这一点,因为我得到了“输入/输出错误”,并且FFMPEG文档谈到了另一个名为FFSERVER的应用程序,该应用程序在Windows上不受支持

ffmpeg -i rtsp://admin:12345@192.168.1.234:554 -vcodec copy -f mp4 -movflags frag_keyframe+empty_moov http://127.0.0.1:8888

2)由于ffmpeg在node.js中作为一个spawn运行,我尝试将STDOUT通过管道传输到一个节点http服务器,使用与录制回放流相同的头,我可以在VLC中查看这个流,这是一个好迹象,但我无法让HTML客户机识别该流,它显示空白,或者偶尔显示该流的静态图像。

var liveServer = http.createServer(liveStream); 
var liveStream = function (req, resp) {                                            // handle each client request by instantiating a new FFMPEG instance
    resp.writeHead(200, {"Content-Type": "video/mp4", "Connection": "keep-alive"});
        var xffmpeg = child_process.spawn("ffmpeg", [
            "-i", "rtsp://admin:12345@192.168.1.234:554" , "-vcodec", "copy", "-f", "mp4", "-movflags", "frag_keyframe+empty_moov", "-"   // output to stdout
            ],  {detached: false});

            xffmpeg.stdout.pipe(resp);

            xffmpeg.on("exit", function (code) {
                 console.log("Xffmpeg terminated with code " + code);
            });

            xffmpeg.on("error", function (e) {
                  console.log("Xsystem error: " + e);
            });

            xffmpeg.stdout.on("data",function(data) {
                  console.log('Xdata rcv ' + data);
            });

            xffmpeg.stderr.on("data", function (data) {
                  console.log("XFFMPEG -> " + data);
    }
}

我试过IE11和Chrome HTML5客户端。

有什么想法如何通过FFMPEG进行实时重流工作?谢了。

共有1个答案

闾丘鸣
2023-03-14

只是好奇你解决了吗?我基本上在做同样的事情,除了在银幕上....我已经切换到使用播放完美的webm格式...然而视频会再“滞后”几秒钟...这对我不好,但对你可能有用

 类似资料:
  • 我正在尝试使用KitKat将实时网络摄像头视频从Ubuntu 12.04 PC传输到android设备。到目前为止,我已经编写了ffserver配置文件来接收ffm提要并通过rtsp协议进行广播。我可以通过ffplay在同一局域网的另一台计算机上观看流。 如何在android设备上观看流?以下代码在使用vlc流式传输网络摄像头图像时效果良好,但在ffmpeg中效果不佳: 我的ffserver.co

  • 我试图在一个单独的文件中每40毫秒生成一个视频和音频,并将其发送到云端进行直播,但创建的视频和音频无法使用ffplay播放。 命令: ffmpeg-f alsa-thread_queue_size1024-i hw: 0-f video o4linux2-i /dev/video0-c: a aac-ar48k-t 0:10-segment_time00:00.04-f段sample-3d.aac

  • 音频和视频都能在第一次正确播放,在音频播放完成时视频循环(因为它更短)。唯一的问题是音频循环不工作,一旦音频第一次完成,流就停止了。 以下是日志: ffmpeg version 4.3.1版权所有(c)2000-2020 ffmpeg开发人员 使用Apple clang version 12.0.0(clang-1200.0.32.27) 配置构建:--prefix=/usr/local/cell

  • 我正在尝试使用ffmpeg从mp4或flv h264视频(youtube视频)中提取视频流。原始视频(test.flv)在ffplay上播放没有问题,ff探针给出错误如下: 为了消除额外的流(我只需要视频),我使用了以下ffmpeg命令行: 包括ffplay在内的任何玩家都无法读取新流,并且ffprobe:test出现错误。h264:处理inputq=0B f=0/0时发现无效数据 有人知道我做错

  • 但是我将ffmpeg更新到了最新版本(ffmpeg version git-2012-06-16-809d71d),现在在这个版本中参数不起作用。 请告诉我如何使用将新音频添加到视频(不是混合)中。

  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求