Closed redstoneleo closed 7 years ago
为什么会不安时间顺序呢?
这个我也不太懂。 我原本的意思是根据url的返回顺序让每一个url对应一个视频文件名为“视频名称_n”(n是从1开始的自然数),以便最终下完所有视频片段的时候再排序合并视频。 现在因为没有按照视频时间的先后顺序排列返回urls,所以按照这种方法无法前进了
为什么没有安时间顺序返回urls呢?
你把解密的m3u8文件的头部贴出来。
除非有EXT-X-DISCONTINUITY这个标记,那么视频分段可能是时间不连续的。 至于这种怎么处理,得问https://github.com/globocom/m3u8 ref: https://tools.ietf.org/html/draft-pantos-http-live-streaming-06#page-10
没有EXT-X-DISCONTINUITY,难道是其他地方出问题了
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:20
#EXT-LETV-M3U8-TYPE:VOD
#EXT-LETV-M3U8-VER:ver_00_22
#EXT-LETV-PROGRAM-DESCIPTION
#EXT-LETV-PROGRAM-ID:60506e98dba03609f162c0a1319f8365000
#EXT-LETV-VIDEO:CODEC=H264
#EXT-LETV-PIC-WIDTH:1905
#EXT-LETV-PIC-HEIGHT:1072
#EXT-LETV-TOTAL-TS-LENGTH:94752
#EXT-LETV-TOTAL-ES-LENGTH:1137421244
#EXT-LETV-TOTAL-SEGMENT:168
#EXT-LETV-TOTAL-P2P-PIECE:6134
#EXT-LETV-TOTAL-DURATION:2820.878
#EXT-LETV-START-TIME:0.000
#EXT-LETV-SEGMENT-ID:0
#EXT-LETV-P2P-PIECE-NUMBER:3
#EXT-LETV-CKS:TN=0&KEY=0&SZ=564&CKS=1901
#EXT-LETV-CKS:PN=0&SZ=192512&CKS=28015&DURA=2.000
#EXT-LETV-CKS:PN=1&SZ=192512&CKS=55591
#EXT-LETV-CKS:PN=2&SZ=132728&CKS=581
#EXTINF:2.000,
http://39.130.134.23:80/199/2/78/letv-uts/14/ver_00_22-1053883476-avc-2999799-aac-128000-2820200-1106779568-60506e98dba03609f162c0a1319f8365-1467722446828_mp4/ver_00_22_0_0_1_518316_0_0.ts?mltag=0&platid=1&splatid=101&playid=0&geo=CN-25-353-4&tag=le&ch=&p1=&p2=&p3=&tss=ios&b=3139&bf=49&nlh=4096&path=&sign=le&proxy=3719678013,1880988461,3719677991&uuid=&ntm=1489597800&keyitem=GOw_33YJAAbXYE-cnQwpfLlv_b2zAkYctFVqe5bsXQpaGNn3T1-vhw..&its=0&nkey2=7f9f830a5d1b7eb9f9247a5bc302a746&uid=1971868787.rp&qos=3&enckit=&m3v=1&token=&vid=&liveid=&station=&app_name=&app_ver=&fcheck=0&pantm=&panuid=&pantoken=&cips=117.136.84.115&vod_live_path=&ledituid=&leditcid=&leditcip=&leditfl=&leditafl=&ajax=&lsbv=
这就一段啊。
其实内容就在最高清晰度的这个m3u8里
C:\Users\i>python3 C:\Users\i\AppData\Local\Programs\Python\Python35-32\Scripts\
ykdl.py -i http://www.le.com/ptv/vplay/1847799.html
site: 乐视 (Letv)
title: 大宅门01
artist: None
streams:
- format: BD
container: m3u8
video-profile: 1080p
# download-with: ykdl --format=BD [URL]
Real urls:
C:\Users\i\AppData\Local\Temp\tmpir1mxyco.m3u8
之前是我的代码有问题
>>> l=['大宅门06_01.ts', '大宅门06_02.ts', '大宅门06_03.ts', '大宅门06_04.ts', '大宅门06_05.ts', '大宅门06_06.ts', '大宅门06_07.ts', '大宅门06_08.ts', '大宅门06_09.ts', '大宅门06_10.ts', '大宅门06_100.ts', '大宅门06_101.ts', '大宅门06_102.ts', '大宅门06_103.ts', '大宅门06_104.ts', '大宅门06_105.ts', '大宅门06_106.ts', '大宅门06_107.ts', '大宅门06_108.ts', '大宅门06_109.ts', '大宅门06_11.ts', '大宅门06_110.ts', '大宅门06_111.ts', '大宅门06_112.ts', '大宅门06_113.ts', '大宅门06_114.ts', '大宅门06_115.ts', '大宅门06_116.ts', '大宅门06_117.ts', '大宅门06_118.ts', '大宅门06_119.ts', '大宅门06_12.ts', '大宅门06_120.ts', '大宅门06_121.ts', '大宅门06_122.ts', '大宅门06_123.ts', '大宅门06_124.ts', '大宅门06_125.ts', '大宅门06_126.ts', '大宅门06_127.ts', '大宅门06_128.ts', '大宅门06_129.ts', '大宅门06_13.ts', '大宅门06_130.ts', '大宅门06_131.ts', '大宅门06_132.ts', '大宅门06_133.ts', '大宅门06_134.ts', '大宅门06_135.ts', '大宅门06_136.ts', '大宅门06_137.ts', '大宅门06_138.ts', '大宅门06_139.ts', '大宅门06_14.ts', '大宅门06_140.ts', '大宅门06_141.ts', '大宅门06_142.ts', '大宅门06_143.ts', '大宅门06_144.ts', '大宅门06_145.ts', '大宅门06_146.ts', '大宅门06_147.ts', '大宅门06_148.ts', '大宅门06_149.ts', '大宅门06_15.ts', '大宅门06_150.ts', '大宅门06_151.ts', '大宅门06_152.ts', '大宅门06_153.ts', '大宅门06_154.ts', '大宅门06_155.ts', '大宅门06_156.ts', '大宅门06_157.ts', '大宅门06_158.ts', '大宅门06_159.ts', '大宅门06_16.ts', '大宅门06_160.ts', '大宅门06_161.ts', '大宅门06_162.ts', '大宅门06_163.ts', '大宅门06_164.ts', '大宅门06_165.ts', '大宅门06_166.ts', '大宅门06_167.ts', '大宅门06_168.ts', '大宅门06_169.ts', '大宅门06_17.ts', '大宅门06_18.ts', '大宅门06_19.ts', '大宅门06_20.ts', '大宅门06_21.ts', '大宅门06_22.ts', '大宅门06_23.ts', '大宅门06_24.ts', '大宅门06_25.ts', '大宅门06_26.ts', '大宅门06_27.ts', '大宅门06_28.ts', '大宅门06_29.ts', '大宅门06_30.ts', '大宅门06_31.ts', '大宅门06_32.ts', '大宅门06_33.ts', '大宅门06_34.ts', '大宅门06_35.ts', '大宅门06_36.ts', '大宅门06_37.ts', '大宅门06_38.ts', '大宅门06_39.ts', '大宅门06_40.ts', '大宅门06_41.ts', '大宅门06_42.ts', '大宅门06_43.ts', '大宅门06_44.ts', '大宅门06_45.ts', '大宅门06_46.ts', '大宅门06_47.ts', '大宅门06_48.ts', '大宅门06_49.ts', '大宅门06_50.ts', '大宅门06_51.ts', '大宅门06_52.ts', '大宅门06_53.ts', '大宅门06_54.ts', '大宅门06_55.ts', '大宅门06_56.ts', '大宅门06_57.ts', '大宅门06_58.ts', '大宅门06_59.ts', '大宅门06_60.ts', '大宅门06_61.ts', '大宅门06_62.ts', '大宅门06_63.ts', '大宅门06_64.ts', '大宅门06_65.ts', '大宅门06_66.ts', '大宅门06_67.ts', '大宅门06_68.ts', '大宅门06_69.ts', '大宅门06_70.ts', '大宅门06_71.ts', '大宅门06_72.ts', '大宅门06_73.ts', '大宅门06_74.ts', '大宅门06_75.ts', '大宅门06_76.ts', '大宅门06_77.ts', '大宅门06_78.ts', '大宅门06_79.ts', '大宅门06_80.ts', '大宅门06_81.ts', '大宅门06_82.ts', '大宅门06_83.ts', '大宅门06_84.ts', '大宅门06_85.ts', '大宅门06_86.ts', '大宅门06_87.ts', '大宅门06_88.ts', '大宅门06_89.ts', '大宅门06_90.ts', '大宅门06_91.ts', '大宅门06_92.ts', '大宅门06_93.ts', '大宅门06_94.ts', '大宅门06_95.ts', '大宅门06_96.ts', '大宅门06_97.ts', '大宅门06_98.ts', '大宅门06_99.ts']
>>>
>>> sorted(l)
['大宅门06_01.ts', '大宅门06_02.ts', '大宅门06_03.ts', '大宅门06_04.ts', '大宅门06_05.ts', '大宅门06_06.ts', '大宅门06_07.ts', '大宅门06_08.ts', '大宅门06_09.ts', '大宅门06_10.ts', '大宅门06_100.ts', '大宅门06_101.ts', '大宅门06_102.ts', '大宅门06_103.ts', '大宅门06_104.ts', '大宅门06_105.ts', '大宅门06_106.ts', '大宅门06_107.ts', '大宅门06_108.ts', '大宅门06_109.ts', '大宅门06_11.ts', '大宅门06_110.ts', '大宅门06_111.ts', '大宅门06_112.ts', '大宅门06_113.ts', '大宅门06_114.ts', '大宅门06_115.ts', '大宅门06_116.ts', '大宅门06_117.ts', '大宅门06_118.ts', '大宅门06_119.ts', '大宅门06_12.ts', '大宅门06_120.ts', '大宅门06_121.ts', '大宅门06_122.ts', '大宅门06_123.ts', '大宅门06_124.ts', '大宅门06_125.ts', '大宅门06_126.ts', '大宅门06_127.ts', '大宅门06_128.ts', '大宅门06_129.ts', '大宅门06_13.ts', '大宅门06_130.ts', '大宅门06_131.ts', '大宅门06_132.ts', '大宅门06_133.ts', '大宅门06_134.ts', '大宅门06_135.ts', '大宅门06_136.ts', '大宅门06_137.ts', '大宅门06_138.ts', '大宅门06_139.ts', '大宅门06_14.ts', '大宅门06_140.ts', '大宅门06_141.ts', '大宅门06_142.ts', '大宅门06_143.ts', '大宅门06_144.ts', '大宅门06_145.ts', '大宅门06_146.ts', '大宅门06_147.ts', '大宅门06_148.ts', '大宅门06_149.ts', '大宅门06_15.ts', '大宅门06_150.ts', '大宅门06_151.ts', '大宅门06_152.ts', '大宅门06_153.ts', '大宅门06_154.ts', '大宅门06_155.ts', '大宅门06_156.ts', '大宅门06_157.ts', '大宅门06_158.ts', '大宅门06_159.ts', '大宅门06_16.ts', '大宅门06_160.ts', '大宅门06_161.ts', '大宅门06_162.ts', '大宅门06_163.ts', '大宅门06_164.ts', '大宅门06_165.ts', '大宅门06_166.ts', '大宅门06_167.ts', '大宅门06_168.ts', '大宅门06_169.ts', '大宅门06_17.ts', '大宅门06_18.ts', '大宅门06_19.ts', '大宅门06_20.ts', '大宅门06_21.ts', '大宅门06_22.ts', '大宅门06_23.ts', '大宅门06_24.ts', '大宅门06_25.ts', '大宅门06_26.ts', '大宅门06_27.ts', '大宅门06_28.ts', '大宅门06_29.ts', '大宅门06_30.ts', '大宅门06_31.ts', '大宅门06_32.ts', '大宅门06_33.ts', '大宅门06_34.ts', '大宅门06_35.ts', '大宅门06_36.ts', '大宅门06_37.ts', '大宅门06_38.ts', '大宅门06_39.ts', '大宅门06_40.ts', '大宅门06_41.ts', '大宅门06_42.ts', '大宅门06_43.ts', '大宅门06_44.ts', '大宅门06_45.ts', '大宅门06_46.ts', '大宅门06_47.ts', '大宅门06_48.ts', '大宅门06_49.ts', '大宅门06_50.ts', '大宅门06_51.ts', '大宅门06_52.ts', '大宅门06_53.ts', '大宅门06_54.ts', '大宅门06_55.ts', '大宅门06_56.ts', '大宅门06_57.ts', '大宅门06_58.ts', '大宅门06_59.ts', '大宅门06_60.ts', '大宅门06_61.ts', '大宅门06_62.ts', '大宅门06_63.ts', '大宅门06_64.ts', '大宅门06_65.ts', '大宅门06_66.ts', '大宅门06_67.ts', '大宅门06_68.ts', '大宅门06_69.ts', '大宅门06_70.ts', '大宅门06_71.ts', '大宅门06_72.ts', '大宅门06_73.ts', '大宅门06_74.ts', '大宅门06_75.ts', '大宅门06_76.ts', '大宅门06_77.ts', '大宅门06_78.ts', '大宅门06_79.ts', '大宅门06_80.ts', '大宅门06_81.ts', '大宅门06_82.ts', '大宅门06_83.ts', '大宅门06_84.ts', '大宅门06_85.ts', '大宅门06_86.ts', '大宅门06_87.ts', '大宅门06_88.ts', '大宅门06_89.ts', '大宅门06_90.ts', '大宅门06_91.ts', '大宅门06_92.ts', '大宅门06_93.ts', '大宅门06_94.ts', '大宅门06_95.ts', '大宅门06_96.ts', '大宅门06_97.ts', '大宅门06_98.ts', '大宅门06_99.ts']
>>>
很显然是无法把分块排序
我看ykdl.py里似乎没有下完所有视频片段的时候再排序合并视频,不知道老大是怎么处理的?@zhangn1985
save_urls(urls, name, ext, jobs=args.jobs)
lenth = len(urls)
if lenth > 1 and not args.no_merge:
ret = launch_ffmpeg(name, ext, lenth)
if not ret:
clean_slices(name, ext, lenth)
save_urls保存的文件就是排好序的。
其实未必要排序,我通过下面的代码得到了启示--用for-loop搞定,O(∩_∩)O哈哈哈~
def launch_ffmpeg(basename, ext, lenth):
#build input
inputfile = compact_tempfile(mode='w+t', suffix='.txt', dir='.', encoding='utf-8')
for i in range(lenth):
inputfile.write('file \'%s_%d_.%s\'\n' % (basename, i, ext))
inputfile.flush()
根据我用 http://www.le.com/ptv/vplay/1849553.html?ch=baidu_ald 的测试结果显示ykdl里的load_m3u8返回的urls并不是按照视频时间的先后顺序排列的,而我希望获得一个m3u8文件里所有的视频片段列表(按照视频时间的先后顺序排列出来),请问有没有什么方法?单纯对m3u8文件里所有的视频片段的url排序也不管用啊,希望各位多多指教!
这个问题看似和ykdl无关,但是我正在做ykdl的GUI,请各位宽容!