簡體   English   中英

從 MP3 創建碎片 MP4

[英]Create fragmented MP4 from MP3

我正在嘗試將 MP3 文件轉換為這樣的碎片 MP4:

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對象而不是一系列的對象:

[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得到這個。

我在這里找到了一些其他選項例如

$ 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

但是玩弄這些並沒有改變輸出。

如何創建特定 sice 的片段,例如每個片段約 5 秒?

音頻流沒有關鍵幀,這是 MP4 多路復用器默認依賴的來划分片段邊界。 您必須設置片段持續時間。

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. -strict experimental自 2016 年以來,原生 AAC 編碼器不再需要-strict experimental
  4. frag_duration需要一個以微秒為單位的值。 10M = 1000 萬 = 10 秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM