2015-06-26 38 views
5

Belirli bir mp4 video için m3u8 dosyasının anında oluşturulmasını gerektiren bir uygulama geliştiriyoruz. Birisi, lütfen mp4 dosyasını nasıl segmenter olarak tam süre ile anında nasıl oluşturabileceğimizi bildirebilir. Bizim durumumuzda ffmpeg segmenter değişken uzunluklu segmentler oluşturulur ve ondalık büyüklüktedir. # EXTM3U # EXT-X-VERSİYONU: ​​3 # EXT-X-TARGETDURATION: 7 # EXT-X-ÇALMA-TİPİ: eg için VODffmpeg m3u8 ve segmentleri manuel olarak oluşturur

#EXTINF:5.005, 
test.mp4.ts?start=0.000&end=5.005 
#EXTINF:6.715, 
test.mp4.ts?start=5.005&end=11.720 
#EXTINF:6.548, 

birisi böyle M3U8 oluşturmak için bize yardım edebilir herhangi bir segment oluşturmadan dosya. İstek üzerine segmentleri manuel olarak oluşturacağız. Ayrıca, segmentleri el ile oluşturduğumuzda, video bir sonraki bölüme geçtiğinde, küçük bir kekemelik (titreme) oluyor demektir. İnternette okuduğumda, süreklilik sayacı nedeniyle olabileceğini söylüyor. Birisi bize bu sorunu düzeltmemize yardım edebilir mi?

Teşekkürler.

cevap

2

Çözüm 1

Tek ts dosyadaki tüm kesimleri saklamak için -hls_flags single_file kullanabilirsiniz. Ortaya çıkan oynatma listesi, her segmentin uzunluklarını ve uzaklıklarını içerecek ve müşteri bunları kendisinde isteyecektir. 6s segmentleri için

Örnek:

ffmpeg -i input -c:v libx264 -r 25 -g 75 -sc_threshold 0 -c:a libfdk_aac -hls_time 6 -hls_playlist_type vod -hls_flags single_file out.m3u8 

#EXTM3U 
#EXT-X-VERSION:4 
#EXT-X-TARGETDURATION:6 
#EXT-X-MEDIA-SEQUENCE:0 
#EXT-X-PLAYLIST-TYPE:VOD 
#EXTINF:6.000000, 
#EXT-X-BYTERANGE:[email protected] 
out.ts 
#EXTINF:6.000000, 
#EXT-X-BYTERANGE:[email protected] 
out.ts 
#EXTINF:6.000000, 
#EXT-X-BYTERANGE:[email protected] 
out.ts 
[...] 
#EXT-X-ENDLIST 

EXT-X-BYTERANGE sürüm 4 desteklenir. ile kullanın nginx

#EXTINF:6.000000, 
handler?file=out.ts&offset=xxx&length=yyy 

Çözüm 2

: Bir sürümde 3 tek bu çalma listesi dönüştürmek ve doğru MIME türüyle doğru aralığı dönmek için bir işleyici yapmak gerekir 3 Sürüm gerekiyorsa DASH ve diğerleri de yapabilir nginx-vod-module

+0

Önce ts dosyası oluşturmadan m3u8 listesini (tüm bayt aralıkları ile) oluşturmanın bir yolu var mı? Ve sonra sadece belirli bir dosya (bayt aralığı) daha sonra oluşturmak? Orijinal dosyayı saklamak ve sadece bir m3u8 oluşturmak ve ardından parçaları anında oluşturmak güzel olurdu. – MrApnea

+0

@FSDaniel Tam segment süreleri ve yeniden kodlama gerektiren birçok kodek için destek istiyorsanız ve bu durumda, dosyayı bir kez değil de anında yeniden kodlamak için daha etkilidir. Nginx modülü, MP4 dosyalarının codec'lerin bir alt kümesi için DASH, HDS, HLS, MSS'de anında paketlenmesini sağlar, hepsi README'nin en üstündedir. – aergistal

İlgili konular