fmp4码率统计

 我使用的视频是peaky blinders的S01E01,文件格式为mkv,大小550KB,时长56min,1024x544。
 使用ffmpeg将mkv重新打包为mp4。

ffmpeg -i input.mkv -y -vcodec copy -acodec copy output.mp4

 使用ffmpeg,将mp4生成m4s的小文件,需要重新编码。每两秒生成一个片,编码速率设置为2Mbps。

ffmpeg -y \
  -i trailer_hd.mp4 \
  -force_key_frames "expr:gte(t,n_forced*2)" \
  -sc_threshold 0 \
  -s 1024x544\
  -c:v libx264 -b:v 2000k \
  -c:a copy \
  -hls_time 1 \
  -hls_playlist_type vod \
  -hls_segment_type fmp4 \
  -hls_segment_filename "fileSequence%d.m4s" \
  prog_index.m3u8

 生成的一段m3u8文件:

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="init.mp4"
#EXTINF:2.000000,
fileSequence0.m4s
#EXTINF:2.000000,
fileSequence1.m4s
#EXTINF:2.000000,
fileSequence2.m4s
#EXTINF:2.000000,
fileSequence3.m4s

 一共生成了1000个片,统计每个片的大小,并计算速率。
printSize.py

import os
#ffplay -autoexit output.mp4
#cat init.mp4 *.m4s > output.mp4
# ffmpeg -i  output.mp4
def get_FileSize(filePath):
    fsize = os.path.getsize(filePath)
    fsize = fsize*8/float(1024)
    return round(fsize, 2)
    
prefix="fileSequence%s.m4s"
f_h=open("data_out.txt",'w')
total=1000
for i in range(total):
    filepath=prefix%str(i)
    segment=get_FileSize(filepath)
    rate=segment/2
    f_h.write(str(i)+"\t"+str(segment)+"\t"+str(rate)+"\n")
f_h.close()

 画图,x代表片,y代表速率(kbps):
在这里插入图片描述

[1] 学好 MP4,让直播更给力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值