【问题标题】:Create a .m4s file with ffmpeg使用 ffmpeg 创建一个 .m4s 文件
【发布时间】:2018-08-02 12:04:02
【问题描述】:

我正在尝试创建 .m4s 文件,并且我正在将此命令与 ffmpeg 一起使用:ffmpeg -i input.mov -c:v copy output.m4s

无法创建文件。

输出:Unable to find a suitable output format for tempM4S.m4s tempM4S.m4s: Invalid argument

我猜测 .m4s 文件格式不受 ffmpeg 支持,这很奇怪,因为 ffmpeg 在尝试为 MPEG-DASH 创建段时可以创建 .m4s 文件。有没有解决这个问题的方法?我是否必须使用其他工具或检查 ffmpeg 的源代码以获取提示?

【问题讨论】:

    标签: encoding ffmpeg mp4 mpeg-dash


    【解决方案1】:

    m4s 文件本身不能工作,因为它们不包含播放所需的 moov 框。它们也需要一个初始化片段。

    【讨论】:

    • 我有一个初始化片段,我只想创建一个单独的 m4s 文件,这样我就可以用另一个片段的内容替换一个片段的内容。
    • 你知道我可以得到任何指定这种格式(m4s)的来源吗?
    【解决方案2】:

    我猜你想创建m4s 以将其作为m4s 系列的一部分。正如@szatmary 提到的,这些文件不是独立的。所以你可以试试这个:

    1. m4s 文件合并到一个mov 文件中。
    2. Merge 您的 mov 文件和第 1 步的输出文件。
    3. 再次将步骤2的输出文件拆分为m4s文件。

    【讨论】:

      【解决方案3】:

      我是这样实现的。我的用例是纯音频流。后端服务将 MPEG-DASH 文件发送到静态托管。我上传了一次初始化的 .mp4 片段,随后只上传了每个新的 .m4s 片段。

      此外,播放列表 .mpd 会在每个片段中更新,以便告诉新到达的听众从哪里开始播放。侦听器将为所需比特率拾取一个初始化 .mp4 文件,然后是当前和后续 .m4s 段。

      • 我的源素材是一系列 10 秒的未压缩 .wav 格式的媒体片段。
      • 我将为每个新媒体片段运行一次 ffmpeg
      • 我指定了 11 秒的段大小,以确保 ffmpeg 为每个源媒体段准确生成 1 个输出 .m4s 段。
      ffmpeg \
        -i pelicans-1234.wav \
        -f hls \
        -ac 2 \
        -c:a aac \
        -b:a 128k \
        -minrate 128k \
        -maxrate 128k \
        -start_number 1234 \
        -hls_fmp4_init_filename pelicans-128k-IS.mp4 \
        -hls_segment_filename pelicans-128k-%d.m4s \
        -hls_segment_type fmp4 \
        -hls_time 11 \
        temp.m3u8
      

      【讨论】:

      • 更新:到目前为止,使用此方法发送 MPEG-DASH 流的尝试失败,出现错误(在 VLC 中),例如 mp4: Fragment sequence discontinuity detected 1 != 2,这让我认为我需要告诉 ffmpeg 起始段是什么数字是
      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      相关资源
      最近更新 更多