小编Pyi*_*yih的帖子

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

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

我创建FLV流的解决方案(基于Adobe规范:视频文件格式规范版本10)是:

  1. 等待IDR帧;
  2. 把FLV标题
  3. 放PrevTagSize(0)
  4. 将带有视频标签VIDEODATA的FLV标签与AVCVIDEODATA放在一起
  5. 把PrevTagSize
  6. 重复步骤4,5直到流式传输结束.

Stream看起来不错,并且可以通过ffplay,mplayer,vlc等播放.但是不能由基于Actionscript NetStream的播放器播放.

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

ffmpeg -f h264 -i d1.h264 -vcodec copy -f flv d1.flv

并试图兼顾flv的my和ffmpeg.

首先,我看到ffmpeg在FLV标头之后立即添加了AVC序列标头.我已经开始做同样的事了,但是NetStream仍然不支持我的流,而且其他玩家也不再玩了.

好的,那我就继续比较flv了.现在我看到ffmpeg的编码FLV中的NAL单元头有点改变了,但是我无法理解这些改变的意义.我读了很多规格,但没有任何帮助.有人能澄清一下吗?

例如,我的NAL单位看起来如此:00 00 00 01 XX XX ... - 适用于所有单位

FFmpeg NALs:00 00 [14 BA] 61 9A ... - 非IDR(两个字节变量)00 00 [7A 02] 65 88 ... - IDR(两个字节变量)00 00 00 40 06 05 ... - SEI

是否添加了一些计数器或其他什么?

很高兴看到任何想法,链接等

flv h.264

5
推荐指数
1
解决办法
4684
查看次数

标签 统计

flv ×1

h.264 ×1