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

如何从可以由Actionscript NetStream播放的原始h264生成FLV流?

孔阳炎
2023-03-14

我对FLV流生成有问题。我开发了DVR系统,它应该能够以FLV格式流式传输视频(在Actionscript NetStream上播放)。我从编码器接收原始H264 NAL单元(0x00 0x00 0x00 0x01)的视频,我还可以识别是编码帧IDR还是非IDR。

我创建FLV流(基于Adobe spec:Video File Format Specification Version 10)的解决方案是:

  1. 等待IDR帧;
  2. 把FLV头
  3. 放置PrevTagSize(0)
  4. 将FLV标签与视频标签VIDEODATA与AVCVIDEODATA
  5. 把PrevTagsize
  6. 重复步骤4,5直到流结束。

流看起来不错,可以由ffplay、mplayer、vlc等播放,但不能由基于actionscriptnetstream的播放器播放。

所以,我得到了原始的h264数据并使用ffmpeg将其转换为FLV:

ffmpeg-f h264-i d1。h264-vcodec副本-f flv d1。flv公司

并尝试兼容flv的my和ffmpeg。

首先我看到ffmpeg添加了AVC序列头,紧跟在FLV头之后。我已经开始做同样的事情,但是NetStream仍然不支持我的流,而且另一个玩家也停止播放它。

好的,然后我继续比较flv。现在我看到ffmpeg编码的flv中的NAL单元头有点变化,但我不明白这些变化的含义。我读了很多规范,但没有任何帮助。有人能向我澄清这一点吗?

例如,我的NAL单位看起来是:00 00 00 01 XX XX…-对于所有单元

FFmpeg NALs:00 00 00【14 BA】61 9A…-非IDR(两字节变量)00 00[7A 02]65 88…-IDR(两字节变量)00 00 00 40 06 05…-软件工程研究所

有没有增加一些柜台或其他东西?

将很高兴看到任何想法、链接等。

共有2个答案

巩光誉
2023-03-14

有两种常见的H.264码流打包格式。

  1. 附件B包含起始代码:00 00 01
  2. MP4是长度前缀XX XX XX XX

您正在创建附录B,但似乎需要为FLV使用mp4包装格式(长度前缀)。必须删除(00)00 00 01并添加长度作为前缀。

谢涵亮
2023-03-14

尝试使用以下命令来完成工作:

ffmpeg -y -i test.flv -vcodec copy -vbsf h264_mp4toannexb test.h264

您将获得一个可播放的vlc。h264文件,所有NAL以00 00 00 01开始。

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

  • 我在PCAP文件中捕获了H264流,并试图从数据中创建媒体文件。容器并不重要(avi、mp4、mkv、...)。 当我使用Videosnarf或rtpbref(结合在每个数据包之前添加00 00 00 01的python代码)然后ffmpeg时,只有当输入帧率恒定(或接近恒定)时,结果才OK。但是,当输入为vfr时,结果播放得太快(在同样罕见的情况下太慢)。 例如: videosnarf-我捕捉到

  • 我通过websocket 已经将拿到了实时的h264的base64,并且转出来了二进制 该如何在前端播放

  • 问题内容: 我的PCM样本很短。发挥这种效果的最佳方法是什么?格式为8000Hz,单声道,16位,大字节序。(PCM样本是在代码中生成的,而不是通过某些文件读取的) 谢谢 问题答案: 使用javax.sound.sampled包,它非常简单,但是您必须使用一些样板文件。 这是一个很好的教程:www.wikijava.org/wiki/Play_a_wave_sound_in_Java 基本上,您必

  • 你好,有人能告诉我如何玩mp3/mp4到Android默认浏览器吗? 我在参考资料中的原始文件夹中有mp3/mp4文件。 我尝试了下面的代码,但被忽略,无法工作,它将打开默认播放器,但没有播放选定的文件。 谁能推荐一下吗?

  • 我不小心删除了一个视频文件,但设法用恢复工具保存了它。视频被破坏了,但我设法修复了它,现在有了一个。h264文件。 我对FFMPEG是完全陌生的,运气不太好。任何建议都会很好。 提前致谢