我正试图通过ios设备在RTSP上编写实况视频广播器。我正在使用AVAssetWriter,所以我可以利用硬件编码。要通过RTSP发送,我必须从MOOV块中获取avcC信息,但MOOV块只有在完成会话时才从AVAssetWriter写入,当然,由于我现场直播,所以当然还没有完成。在没有MOOV的MDAT Atom中识别音频样本原子
我已经通过编码,写入,然后完成单个样本缓冲区到文件,解析文件以获取avcC信息来解决这个问题。这工作得很好。
之后,直播流,因为AVAssetWriter只会写入一个文件,我写它出文件,然后用追逐文件偏移量从该文件读取。当我只用视频做这件事时,我可以在没有任何MOOV信息的情况下从MDAT Atom读取Nalu,因为每个Nalu的大小在Nalu的前4个字节中给出。因此,我可以读取该数量,处理数据,并通过RTSP流发送。因此,只有视频,一切工作完好,我得到真正的高清流到流服务器。
我现在遇到的问题是当我尝试将音频合并到麦克风的流中时。我可以使用AVAssetWriter对它进行编码,并且获得适当的交错格式化mp4文件以进行读取,但与H264 Nalu不同,文件中的音频样本不具有样本大小作为其第一个字节。到目前为止,我能看到的唯一方法就是使用MOOV中的STSZ和STCO原子,当然,我没有这个原因,因为它是一个直播流。
考虑到这一切,是否有人知道一种方法来识别MDAT Atom中的音频采样段,而无需MOOV Atom的信息?只要我明白,我就免费。
在此先感谢您的任何见解。
嗨丹,我也试图实施相同的请你指导我如果可能的话。 – Dinesh