m3u8视频处理Android vs IOS

MP4转换m3u8格式

mp4="KIDS REACT TO ROTARY PHONES-XkuirEweZvM.mp4"
m3u8=$(echo ${mp4} | sed "s|mp4|m3u8|g")

# 切分视频代码里面用的
ffmpeg -i "${mp4}" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "${m3u8}" -loglevel error 2>&1

# 命令行能够使用的。能用的命令
ffmpeg -i "${mp4}" -vcodec libx264 -vbsf h264_mp4toannexb -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "${m3u8}"

参数说明

  • -vbsf h264_mp4toannexb:转换H.264编码比特流,从长前导模式为开始码前导模式(定义在ITU-T H.264 的附录B)
    • h264有两种封装:
      一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h264_mp4toannexb_filter可以做转换;所以需要使用-bsf h264_mp4toannexb来进行转换;

视频文件的名字当中不要有空格

  • 终于定位到这个问题,我们的小程序的视频服务使用的是阿里云oss + cdn构建的服务
  • 很奇怪的是安卓手机播放正常,但是IOS手机播放异常,而且以前也出现过这个问题,通常这个问题是由于视频的格式不对导致的通过ffmpeg命令调整
  • 但是这个问题有点奇怪的是,我单独使用这个视频的url不使用CDN的时候,可以在IOS上面播放,但是使用CDN的时候就不行。
  • 其他的m3u8视频也是播放正常的,只有这个视频不行,最终怀疑到是不是因为视频的名字当中有空格,
  • 去掉空格之后,果然OK!!

参考文章


打赏作者^_^

微信 支付宝
微信 && 支付宝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值