zoukankan      html  css  js  c++  java
  • 使用ffmpeg将mp4切片成ts slice 并生成m3u8命令,同时让IIS支持支持 m3u8

    使用ffmpeg将mp4切成ts片段的时候会碰到一个问题,就是生成的m3u8文件里只有最后的五个片段的信息。

    这是因为ffmpeg 默认的list size 为5,所以只获得最后的5个片段。为了解决这个问题,需要指定参数-hls_list_size 0,这样就能包含所有的片段

    ffmpeg -i input.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8

    不过最常用的命令是:

    ffmpeg -i foo.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list out.m3u8 -segment_time 10 out%03d.ts

    为什么要加上参数-vbsf h264_mp4toannexb

    官方文档说Convert an H.264 bitstream from length prefixed mode to start code prefixed mode (as defined in the Annex B of the ITU-T H.264 specification).

    这个问题在用ffmpeg从mp4里提取码流的时候(命令:ffmpeg -i foo.mp4 -vcodec copy -an foo.h264)也会碰到,生成的264文件无法播放,码流走中并没有00 00 00 01来分隔每一帧,这是因为默认是使用length prefixed mode,而不是以00 00 00 01起始码作为prefixed,也就是说没使用start code prefixed mode.

    所以从mp4里提取码流的时候也需要加上参数-vbsf h264_mp4toannexb

    正确命令为:ffmpeg -i foo.mp4 -vcodec copy -an -vbsf h264_mp4toannexb foo.h264

    在IIS的mine中添加

    <mimeMap fileExtension=".m3u8" mimeType="application/x-mpegURL" />
    <mimeMap fileExtension=".ts" mimeType="video/MP2T" />
  • 相关阅读:
    python2.7下同步华为云照片的爬虫程序实现
    python 下字符串格式时间比较
    C# Socket通信 小案例
    win 10 安装 mysql解压版 步骤
    Android 连接 SQL Server (jtds方式)——下
    Android 连接 SQL Server (jtds方式)——上
    Android 项目建立步骤
    ubuntu 配置android开发环境
    ubuntu 安装eclipse
    ubuntu 配置Java jdk
  • 原文地址:https://www.cnblogs.com/wx18638101223/p/13851652.html
Copyright © 2011-2022 走看看