使用FFmpeg在iOS上写入时将fMP4转换为HLS TL;博士
我想将fMP4片段转换为TS片段(用于HLS),因为这些片段是在iOS设备上使用FFmpeg编写的 为什么? 我试图在iOS上实现实时上传,同时在本地维护无缝的高清拷贝 我试过的使用FFmpeg在iOS上写入时将fMP4转换为HLS TL;博士,ios,ffmpeg,avfoundation,http-live-streaming,fmp4,Ios,Ffmpeg,Avfoundation,Http Live Streaming,Fmp4,我想将fMP4片段转换为TS片段(用于HLS),因为这些片段是在iOS设备上使用FFmpeg编写的 为什么? 我试图在iOS上实现实时上传,同时在本地维护无缝的高清拷贝 我试过的 滚动AVAssetWriters,每个写入8秒,然后通过FFmpeg将MP4连接在一起 出了什么问题-音频和视频中有时会出现光点。我已经找出了三个原因 1) 为AAC编码器写入的音频启动帧,创建间隙 2) 由于视频帧的长度为33.33ms,音频帧的长度为0.022ms,因此它们可能不会在文件末尾对齐 3) Mac OS
AVAssetWriter
s,每个写入8秒,然后通过FFmpeg将MP4连接在一起
出了什么问题-音频和视频中有时会出现光点。我已经找出了三个原因
1) 为AAC编码器写入的音频启动帧,创建间隙
2) 由于视频帧的长度为33.33ms,音频帧的长度为0.022ms,因此它们可能不会在文件末尾对齐
3) Mac OS上缺少帧精确编码,但iOS上不提供AVFoundation
已经在文件中完成了一个片段的编写,这样我就可以将它导入FFmpeg了严格来说,如果fmp4包含h264+aac,则不需要对其进行转码,只需将样本数据重新打包为TS(使用
ffmpeg-codec copy
或)
Wrt。对齐(1.2)我想这一切都取决于编码器设置(帧速率、采样率和GOP大小)。当然,可以确保音频和视频在片段边界处精确对齐(请参见示例:)。如果您的目标是iOS,我建议您使用版本3(或4),这样可以更准确地表示时间。这还允许您单独流式传输音频和视频(非多路复用)
我相信ffmpeg应该能够推送实时fmp4流(即使用长时间运行的HTTP POST),但播放需要对其进行一些有意义的操作(即流到HLS) 这个问题应该有助于如何提问。写得很好的问题。我放弃了这种方法,转而使用
VideoToolbox
(文档非常缺乏)来转换内存中的帧,而不是使用AVAssetWriter
中间人。代码基于此示例