ffmpeg.js自定义编译FFmpeg转换.ts为.mp4出现Invalid data错误如何解决?
问题根因
当前自定义编译的ffmpeg.js缺少TS格式对应的解复用器,现有编译配置的COMMON_DEMUXERS列表未包含mpegts模块,FFmpeg无法识别MPEG-TS封装格式的.ts文件,因此在输入文件读取阶段直接报错,该问题与编码兼容性无关。
你之前尝试添加mpeg2配置触发警告,是因为MPEG-2是视频编码标准,和TS封装对应的解复用器是完全独立的模块:FFmpeg中MPEG-TS格式对应的解复用器名称为mpegts,不存在名为mpeg2的解复用器,你当前的场景是H.264+AAC流复制,也不需要用到MPEG-2相关解码能力。
修复方案
调整编译参数
修改编译配置,在COMMON_DEMUXERS列表中添加mpegts:
COMMON_DEMUXERS = matroska ogg mov mp3 wav image2 concat mpegts
对应编译参数会自动新增--enable-demuxer=mpegts,重新编译ffmpeg.js即可。如果后续需要处理加密TS流、多段TS拼接场景,可以额外在该列表中添加hls解复用器。
你当前已经启用了h264和aac解码器,且-c copy流复制场景不需要编解码环节,无需调整解码器相关配置,也不需要添加其他无关编译参数。
编译完成后执行原命令即可正常完成格式转换:ffmpeg -i sample1.ts -c copy out.mp4
内容的提问来源于stack exchange,提问作者Aidan Dempster
相关产品推荐
相关产品推荐

