首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MP4创建分段MP3

从MP4创建分段MP3
EN

Stack Overflow用户
提问于 2020-10-24 20:10:20
回答 1查看 743关注 0票数 0

我正在尝试将一个MP3文件转换为如下所示的分段MP4:

代码语言:javascript
复制
ffmpeg -i input.mp3 -strict experimental -acodec aac -b:a 256k -f mp4 \
       -movflags faststart+frag_keyframe+empty_moov+separate_moof output.mp4 

但是,使用Bento4,我可以看到只有一个巨大的mdat对象,而不是一系列这样的对象:

代码语言:javascript
复制
[ftyp] size=8+24
  major_brand = isom
  minor_version = 200
  compatible_brand = isom
  compatible_brand = iso2
  compatible_brand = iso6
  compatible_brand = mp41
[moov] size=8+701
  ...
[moof] size=8+62364
  ...
[mdat] size=8+5794679
[mfra] size=8+59
  [tfra] size=12+31, version=1
    track_ID = 1
    length_size_of_traf_num = 0
    length_size_of_trun_num = 0
    length_size_of_sample_num = 0
  [mfro] size=12+4
    mfra_size = 67

我想我想要的是:

(来源)

但我似乎无法从ffmpeg那里得到这个信息。

我找到了一些其他的这里选项,比如

代码语言:javascript
复制
$ ffmpeg -h muxer=ismv
...
-frag_duration     <int>   E.... Maximum fragment duration
-min_frag_duration <int>   E.... Minimum fragment duration
-frag_size         <int>   E.... Maximum fragment size

但是玩这些并没有改变输出。

我怎样才能创建一个特定的片段,例如,每个5秒?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-25 05:00:00

音频流没有关键帧,这正是MP4 muxer在默认情况下划分片段边界所依赖的。您必须设置一个片段持续时间。

ffmpeg -i input.mp3 -c:a aac -b:a 256k -f mp4 -movflags +empty_moov+separate_moof -frag_duration 10M output.mp4

注意:

  1. faststart适用于常规的、非分段的输出。
  2. frag_keyframe告诉ffmpeg在视频关键帧上启动片段,但是没有视频流。
  3. 自2016年以来,本机AAC编码器就不再需要-strict experimental了。
  4. frag_duration期望值以微秒为单位。10M =1000万=10秒。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64517591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档