https://github.com/kaltura/nginx-vod-module
一、編譯
./configure \ --user=www \ --group=www \ --prefix=/usr/local/openresty \ --with-debug \ --with-luajit \ --with-file-aio \ --with-threads \ --with-cc-opt="-O3" \ --with-http_v2_module \ --with-http_realip_module \--with-http_gzip_static_module \ --with-http_ssl_module \ --with-openssl=/usr/local/ssl \ --with-openssl-opt="enable-tlsext" \ --without-http_redis2_module \ --with-http_iconv_module \ --with-http_stub_status_module \ --with-http_xslt_module \--add-dynamic-module=/home/www/build/nginx-vod-module
推薦設置:
--with-file-aio
- 啟用異步I / O支持,強烈建議,僅與本地和映射模式相關--with-threads
(nginx 1.7.11+) - 使用線程池(也需要vod_open_file_thread_pool
在nginx.conf中)啟用異步文件,僅與本地和映射模式相關--with-cc-opt="-O3"
- 啟用額外的編譯器優化(與nginx默認值相比,mp4解析時間和幀處理時間減少了大約8%-O
)
調試設置:
--with-debug
- 啟用調試消息(也需要傳入nginx.confdebug
中的error_log
指令)。--with-cc-opt="-O0"
- 禁用編譯器優化(用gdb進行調試)
移植文件
cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/ngx_http_vod_module.so /usr/local/openresty/nginx/modules/ngx_http_vod_module.so cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/nginx /usr/local/openresty/nginx/sbin/nginx
重啟服務
sudo service nginx restart Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
》》今天發現了一個好辦法,通過以上啟動服務器是不報錯的,直接啟動不起來,不管什么錯誤都是提示以上錯誤信息,今天終於找到辦法了,那就是運行Nignx二進制文件,會有錯誤日志輸出哦
sudo ../../sbin/nginx nginx: [emerg] unknown directive "vod_mode" in /usr/local/openresty/nginx/conf/vhost/nginx.vod.module.conf:3
遇到的錯誤:
nginx: [emerg] unknown directive "vod_moov_cache" in /usr/local/openresty/nginx/conf/vhost/nginx.vod.module.conf:7
解決:https://github.com/kaltura/nginx-vod-module/issues/739
網址結構
一、基本的網址結構
URI 的基本結構是: http://<domain>/<location>/<fileuri>/<filename>
- domain - nginx-vod-module服務器的域
- location - 在nginx conf中指定的位置
- fileuri - 一個到mp4文件的URI:
- 本地模式 - 完整的文件路徑是根據根/別名nginx.conf指令確定的
- 映射模式 - 完整的文件路徑是根據從上游/本地文件接收到的JSON來確定的
- 遠程模式 - mp4文件是從上游塊中讀取的
- 注意:在映射模式和遠程模式下,上游請求的URL是
http://<upstream>/<location>/<fileuri>?<extraargs>
(extraargs由vod_upstream_extra_args
參數決定)
- 文件名 - 詳細如下
- domain:vod.tinywan.com
- location:location /vod { }
- fileuri:/home/www/ffmpeg/
本地模式測試
server { listen 8384; # vod caches vod_metadata_cache metadata_cache 256m; vod_response_cache response_cache 128m; # vod settings vod_mode local; vod_segment_duration 2000; # 2s vod_align_segments_to_key_frames on; #file handle caching / aio open_file_cache max=1000 inactive=5m; open_file_cache_valid 2m; open_file_cache_min_uses 1; open_file_cache_errors on; aio on; location /hls/ { alias /home/www/ffmpeg/; vod hls; add_header Access-Control-Allow-Headers '*'; add_header Access-Control-Expose-Headers 'Server,range,Content-Length,Content-Range'; add_header Access-Control-Allow-Methods 'GET, HEAD, OPTIONS'; add_header Access-Control-Allow-Origin '*'; expires 100d; } }
MP4文件路徑
www@TinywanAliYun:~/ffmpeg$ pwd
/home/www/ffmpeg www@TinywanAliYun:~/ffmpeg$ ls -lh nginx_vod_test.mp4 -rwxrwxrwx 1 www www 340M Dec 18 2013 nginx_vod_test.mp4
注:MP4文件的權限是775
播放URL:http://127.0.0.1:8384/hls/nginx_vod_test.mp4/index.m3u8
二、多個網址結構
多個網址用於在單個網址上對多個網址進行編碼。例如,可以使用多個URL來指定應包含在DASH MPD中的幾個不同MP4文件的URL。
多個URL的結構是: http://<domain>/<location>/<prefix>,<middle1>,<middle2>,<middle3>,<postfix>.urlset/<filename>
上面的示例網址代表3個網址:
http://<domain>/<location>/<prefix><middle1><postfix>/<filename>
http://<domain>/<location>/<prefix><middle2><postfix>/<filename>
http://<domain>/<location>/<prefix><middle3><postfix>/<filename>
后綴.urlset
(可以使用vod_multi_uri_suffix更改
)表示該URL應被視為多個URL。例如,URL http://example.com/hls/videos/big_buck_bunny_,6,9,15,00k.mp4.urlset/master.m3u8
將返回一個包含以下內容的清單:
- http://example.com/hls/videos/big_buck_bunny_600k.mp4/index.m3u8
- http://example.com/hls/videos/big_buck_bunny_900k.mp4/index.m3u8
- http://example.com/hls/videos/big_buck_bunny_1500k.mp4/index.m3u8
三、網址路徑參數
URL路徑支持以下參數:
- clipFrom - 自視頻開始以來的偏移量(以毫秒為單位),其中生成的流應該開始。例如,
.../clipFrom/10000/...
將生成一個流10秒開始的視頻流。 - clipTo - 自視頻開始以來的偏移量(以毫秒為單位),其中生成的流將結束。例如,
.../clipTo/60000/...
將生成一個截斷到60秒的流。 - 軌道 - 可用於選擇特定的音頻/視頻軌道。參數的結構是:
v<id1>-v<id2>-a<id1>-a<id2>...
例如,.../tracks/v1-a1/...
將選擇第一個視頻軌道和第一個音軌。默認是包含所有曲目。 - 移位 - 可用於將時間轉換應用於一個或多個流。參數的結構是:
v<vshift>-a<ashift>-s<sshift>
例如,.../shift/v100/...
將100ms的正向移位應用到視頻時間戳。
四、文件名結構
文件名的結構是: <basename>[<seqparams>][<fileparams>][<trackparams>][<langparams>].<extension>
- basename +擴展名 - 選項集是打包者特定的(下面的列表適用於默認設置):seqparams - 可用於通過id(在映射JSON中提供)來選擇特定序列,例如master-sseq1.m3u8。fileparams - 可用於在使用多個URL時按索引選擇特定序列。例如,manifest-f1.mpd將僅從第一個URL返回一個MPD。trackparams - 可用於選擇特定的音頻/視頻軌道。例如,manifest-a1.f4m將返回僅包含每個序列的第一個音頻流的F4M。默認是包含每個文件的第一個音頻和第一個視頻軌道。在文件名中選擇的曲目與使用/ tracks / path參數選擇的曲目進行AND運算。v0 / a0分別選擇所有視頻/音頻軌道。a / v參數可以與f / s結合,例如f1-v1-f2-a1 = file1的video1 + file2的audio1,f1-f2-v1 = file1的video1 + file2的video1。langparams - 可用於根據語言(ISO639-3代碼)過濾音軌/字幕。例如,master-leng.m3u8將只返回英文音軌。
- dash - manifest.mpd
- hds - manifest.f4m
- hls主播放列表 - master.m3u8
- hls媒體播放列表 - index.m3u8
- mss - 清單
- thumb -
thumb-<offset>[<resizeparams>].jpg
(偏移量是以毫秒為單位的縮略圖視頻偏移量) - volume_map -
volume_map.csv
- resizeparams - 可用於調整返回的縮略圖圖像。例如,thumb-1000-w150-h100.jpg在視頻中捕獲縮略圖1秒,並將其大小調整為150x100。如果省略其中一個尺寸,則設置其值以使得生成的圖像保持視頻幀的縱橫比。
五、映射響應格式
當配置為在映射模式下運行時,nginx-vod-module向配置的上游服務器發出HTTP請求,以便接收它應該生成的媒體流的布局。響應必須采用JSON格式。
本部分包含幾個簡單的示例,后面是對支持的對象和字段的引用。但首先,有幾個定義:
Source Clip
- 從單個媒體文件中提取的一組音頻和/或視頻幀(音軌)Generator
- 可以生成音頻/視頻幀的組件。目前,唯一支持的發生器是無聲發生器。Filter
- 可以應用於音頻/視頻幀的操作。支持以下過濾器:
-
- 速率(速度)變化 - 適用於音頻和視頻
- 音量變化
- 混合 - 可用於將多個音軌合並在一起,或將源A的音頻與源B的視頻合並
Clip
- 在一組源剪輯上應用零個或多個過濾器的結果Dynamic Clip
- 內容未知的剪輯,例如有針對性的廣告內容Sequence
- 一組應該一個接一個播放的剪輯。Set
- 幾個序列一起作為自適應集合播放,每個序列必須具有相同數量的剪輯。
六、簡單的映射
下面的JSON將請求URI映射到單個MP4文件:
{ "sequences": [ { "clips": [ { "type": "source", "path": "/path/to/video.mp4" } ] } ] }
當使用多個URL時,這是唯一允許的JSON模式。換句話說,使用多個URL來組合更復雜的JSON是不可能的。
映射模式測試(使用json文件播放一個mp4文件)
JSON文件
www@TinywanAliYun:~/data/vod-json$ pwd
/home/www/data/vod-json www@TinywanAliYun:~/data/vod-json$ cat tinywan.json { "sequences": [ { "clips": [ { "type": "source", "path": "/home/www/ffmpeg-data/59f81ac0f1ec2.mp4" } ] } ] }
虛擬主機
server { listen 8384; # vod caches vod_metadata_cache metadata_cache 256m; vod_response_cache response_cache 128m; # vod settings vod_mode mapped; vod_segment_duration 2000; # 2s vod_align_segments_to_key_frames on; #file handle caching / aio open_file_cache max=1000 inactive=5m; open_file_cache_valid 2m; open_file_cache_min_uses 1; open_file_cache_errors on; aio on; # json file play hls location /json_hls/ { add_header Access-Control-Allow-Headers '*'; add_header Access-Control-Expose-Headers 'Server,range,Content-Length,Content-Range'; add_header Access-Control-Allow-Methods 'GET, HEAD, OPTIONS'; add_header Access-Control-Allow-Origin '*'; vod hls; alias /home/www/data/vod-json/; } }
注:這里一定是映射模式
VLC播放測試:http://nginx-vod.tinywan.com:8384/json_hls/tinywan.json/index.m3u8
測試結果:
說明:當然了tinywan.json 文件我們是可以動態的修改,如:使用PHP去動態修改json文件中的MP4文件路徑,可以更換播放源,一旦換掉,以前的將會斷掉,重新播放新的源文件
可能出現的錯誤,請檢查配置文件,是否為映射模式
2017/11/27 21:20:56 [error] 8630#8630: *44 ngx_http_vod_identify_format: failed to identify the file format /home/www/data/vod-json/video.json while reading media header,
七、自適應集
作為使用多個URL的替代方案,可以通過JSON定義自適應集:
{ "sequences": [ { "clips": [ { "type": "source", "path": "/path/to/bitrate1.mp4" } ] }, { "clips": [ { "type": "source", "path": "/path/to/bitrate2.mp4" } ] } ] }
上面的暫時不能夠播放,待解決?????
提示錯誤:
2017/11/27 21:59:12 [error] 8750#8750: *637 ngx_http_vod_validate_streams: one stream at most per media type is allowed video=2 audio=2 while getting mapping,
八、播放列表
下面的JSON會播放35秒的視頻1和22秒的視頻2:
tinywan_multiple_durations.json 文件
{ "durations": [ 35000, 22000 ], "sequences": [ { "clips": [ { "type": "source", "path": "/home/www/ffmpeg-data/59fb2eba73a57.mp4" }, { "type": "source", "path": "/home/www/ffmpeg-data/59f81ac0f1ec2.mp4" } ] } ] }
VLC播放測試:http://nginx-vod.tinywan.com:8384/json_hls/tinywan_multiple_durations.json/index.m3u8
前35s播放:59fb2eba73a57.mp4
后22s播放:59f81ac0f1ec2.mp4
過濾器
下面的JSON將視頻1播放到x1.5,並將結果的音頻與視頻2的音頻混合,然后將其降低到50%音量:
{ "sequences": [ { "clips": [ { "type": "mixFilter", "sources": [ { "type": "rateFilter", "rate": 1.5, "source": { "type": "source", "path": "/path/to/video1.mp4" } }, { "type": "gainFilter", "gain": 0.5, "source": { "type": "source", "path": "/path/to/video2.mp4", "tracks": "a1" } } ] } ] } ] }
連續直播
下面的JSON是一個連續的直播流(=所有視頻具有完全相同的編碼參數的直播流)的示例。在實踐中,這個JSON必須由一些腳本生成,因為它依賴於時間。(有關示例實現,請參閱test / playlist.php)
{ "playlistType": "live", "discontinuity": false, "segmentBaseTime": 1451904060000, "firstClipTime": 1451917506000, "durations": [83000, 83000], "sequences": [ { "clips": [ { "type": "source", "path": "/path/to/video1.mp4" }, { "type": "source", "path": "/path/to/video2.mp4" } ] } ] }
非連續的直播
下面的JSON是非連續直播流(=視頻具有不同編碼參數的直播流)的示例。在實踐中,這個JSON必須由某個腳本生成,因為它是時間依賴的(參見test / playlist.php)
{ "playlistType": "live", "discontinuity": true, "initialClipIndex": 171, "initialSegmentIndex": 153, "firstClipTime": 1451918170000, "durations": [83000, 83000], "sequences": [ { "clips": [ { "type": "source", "path": "/path/to/video1.mp4" }, { "type": "source", "path": "/path/to/video2.mp4" } ] } ] }
(1)編譯沒有啟用異步I / O支持(裸奔ngx-vod-module),播放一個MP4文件
結論:打開的很慢,很卡,原因就是我服務帶寬太小了(1M啊),視頻卡頓原因,帶寬太小了,今天升級帶寬為5M,不會再出先卡頓現象
(2)OSS下載一個文件進行播放,緩存不夠嗎?
性能建議
6、通過更改以下參數可以減少此模塊生成的流的復用開銷:
- HDS - 設置
vod_hds_generate_moof_atom
為關閉 - HLS - 設置
vod_hls_mpegts_align_frames
為關閉和vod_hls_mpegts_interleave_frames
打開
測試結果:
#vod_hds_generate_moof_atom off;
#vod_hls_mpegts_align_frames off;
#vod_hls_mpegts_interleave_frames on;
視頻每隔2幀就會一卡一卡的,不推薦。
HLS
HLS主播放列表文件的名稱(默認為m3u8擴展名)。
vod_hls_index_file_name_prefix
語法:vod_hls_index_file_name_prefix name
默認:index
背景:http
,server
,location
描述:HLS媒體播放列表文件的名稱(隱含M3u8擴展名)。
案例:vod_hls_index_file_name_prefix main;
默認url地址為:../video/1510808170003.mp4/index.m3u8
新播放url地址為:../video/1510808170003.mp4/main.m3u8
vod_hls_segment_file_name_prefix
語法:vod_hls_segment_file_name_prefix name
默認:seg
背景:http
,server
,location
描述:段文件名的前綴,實際的文件名是:seg-<index>-v<video-track-index>-a<audio-track-index>.ts
。
案例: vod_hls_segment_file_name_prefix tinywan;
配置指令 - 性能
vod_metadata_cache
- 語法:
vod_metadata_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
配置視頻元數據緩存的大小和共享內存對象名稱。對於MP4文件,這個緩存保存moov原子。
vod_mapping_cache
- 語法:
vod_mapping_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
為vod配置映射緩存的大小和共享內存對象名稱(僅限映射模式)。
vod_live_mapping_cache
- 語法:
vod_live_mapping_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
配置實時映射緩存的大小和共享內存對象名稱(僅限映射模式)。
vod_response_cache
- 語法:
vod_response_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
配置響應緩存的大小和共享內存對象名稱。響應緩存包含清單和其他非視頻內容(如DASH初始段,HLS加密密鑰等)。視頻片段不被緩存。
vod_live_response_cache
- 語法:
vod_live_response_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
配置響應緩存的大小和共享內存對象名稱,以便更改實時響應。該緩存包含以下類型的響應:DASH MPD,HLS索引M3U8,HDS引導,MSS清單。
vod_initial_read_size
- 語法:
vod_initial_read_size size
- 默認:
4K
- 背景:
http
,server
,location
設置MP4文件的初始讀取操作的大小。
vod_max_metadata_size
- 語法:
vod_max_metadata_size size
- 默認:
128MB
- 背景:
http
,server
,location
設置支持的最大視頻元數據大小(對於MP4 - moov原子大小)
vod_max_frames_size
- 語法:
vod_max_frames_size size
- 默認:
16MB
- 背景:
http
,server
,location
設置單個段的幀的總大小限制
vod_cache_buffer_size
- 語法:
vod_cache_buffer_size size
- 默認:
256K
- 背景:
http
,server
,location
設置讀取MP4幀時使用的緩存緩沖區的大小。
vod_open_file_thread_pool
- 語法:
vod_open_file_thread_pool pool_name
- 默認:
off
- 背景:
http
,server
,location
啟用通過線程池打開的異步文件。線程池必須使用thread_pool指令定義,如果未指定池名稱,則使用默認池。當使用--add-threads進行編譯時,該指令僅在nginx 1.7.11或更新版本上受支持。注意:這個指令目前禁止nginx-vod-module使用nginx的open_file_cache
vod_output_buffer_pool
- 語法:
vod_output_buffer_pool size count
- 默認:
off
- 背景:
http
,server
,location
預先分配緩沖區以生成響應數據,從而節省每個請求的分配/釋放緩沖區的需求。
vod_performance_counters
- 語法:
vod_performance_counters zone_name
- 默認:
off
- 背景:
http
,server
,location
配置性能計數器的共享內存對象名稱
配置指令 - DRM /加密
vod_secret_key
- 語法:
vod_secret_key string
- 默認:
empty
- 背景:
http
,server
,location
設置用於生成TS加密密鑰和DASH / MSS加密IV的種子。參數值可以包含變量,通常具有“secret- $ vod_filepath”結構。查看下面這個模塊添加的nginx變量列表。
vod_encryption_iv_seed
- 語法:
vod_encryption_iv_seed string
- 默認:
empty
- 背景:
http
,server
,location
設置用於生成加密IV的種子,目前僅適用於使用AES-128加密的HLS / fMP4。參數值可以包含變量。
vod_drm_enabled
- 語法:
vod_drm_enabled on/off
- 默認:
off
- 背景:
http
,server
,location
啟用后,模塊將根據從drm上游獲得的響應來加密媒體段。目前僅支持破折號和mss(播放就緒)。
vod_drm_single_key
- 語法:
vod_drm_single_key on/off
- 默認:
off
- 背景:
http
,server
,location
啟用時,模塊只請求第一個序列的drm信息並將其應用於所有序列。禁用時,需要為每個序列單獨請求DRM信息。此外,在DASH中,啟用此設置將使模塊將ContentProtection標簽置於AdaptationSet下,否則置於Representation下。
vod_drm_clear_lead_segment_count
- 語法:
vod_drm_clear_lead_segment_count count
- 默認:
1
- 背景:
http
,server
,location
設置流開始處的清除(未加密)分段的數量。明確的領先優勢使玩家無需等待許可證回應即可開始游戲。
vod_drm_max_info_length
- 語法:
vod_drm_max_info_length length
- 默認:
4K
- 背景:
http
,server
,location
設置從上游返回的drm信息的最大長度。
vod_drm_upstream_location
- 語法:
vod_drm_upstream_location location
- 默認:
none
- 背景:
http
,server
,location
設置應該用於獲取文件的DRM信息的nginx位置。
vod_drm_info_cache
- 語法:
vod_drm_info_cache zone_name zone_size [expiration]
- 默認:
off
- 背景:
http
,server
,location
配置drm信息緩存的大小和共享內存對象名稱。
vod_drm_request_uri
- 語法:
vod_drm_request_uri uri
- 默認:
$vod_suburi
- 背景:
http
,server
,location
設置drm信息請求的URI,參數值可以包含變量。在多url的情況下,$vod_suburi
將是當前的子uri(每個子URL發出一個單獨的drm信息請求)
vod_min_single_nalu_per_frame_segment
- 語法:
vod_min_single_nalu_per_frame_segment index
- 默認:
0
- 背景:
http
,server
,location
設置最小片段索引(從1開始),應該假定每幀只有一個h264 nalu。如果該值為0,則不假定每幀nal個單元的數量。此設置僅影響啟用了DRM的DASH和MSS配置。
當使用libx264轉碼視頻時,默認情況下,所有幀都有一個單獨的nal單元,除了第一個包含libx264版權信息的nalu幀。將此參數設置為大於0的值可以顯着提高性能,因為可以提前計算段的布局,從而使模塊能夠:
- 在生成時輸出段緩沖區(不必等待整個段完成)
- 避免對不需要段數據的請求進行幀處理(例如,HEAD,范圍0-0等)
配置指令 - HLS
vod_hls_encryption_method
- 語法:
vod_hls_encryption_method method
- 默認:
none
- 背景:
http
,server
,location
設置HLS段的加密方法,允許值為:none(缺省),aes-128,sample-aes。
vod_hls_force_unmuxed_segments
- 語法:
vod_hls_force_unmuxed_segments on/off
- 默認:
off
- 背景:
http
,server
,location
啟用后,服務器將以不同於視頻流使用的音頻流的音頻流(使用EXT-X-MEDIA)
vod_hls_container_format
- 語法:
vod_hls_container_format mpegts/fmp4/auto
- 默認:
auto
- 背景:
http
,server
,location
設置HLS段的容器格式。默認行為是使用fmp4作為HEVC,否則使用mpegts(Apple不支持MPEG TS上的HEVC)。
vod_hls_absolute_master_urls
- 語法:
vod_hls_absolute_master_urls on/off
- 默認:
on
- 背景:
http
,server
,location
啟用后,服務器將返回主播放列表請求中的絕對播放列表URL
vod_hls_absolute_index_urls
- 語法:
vod_hls_absolute_index_urls on/off
- 默認:
on
- 背景:
http
,server
,location
啟用時,服務器將返回媒體播放列表請求中的絕對段URL
vod_hls_absolute_iframe_urls
- 語法:
vod_hls_absolute_iframe_urls on/off
- 默認:
off
- 背景:
http
,server
,location
啟用后,服務器將返回iframe播放列表請求中的絕對段URL
vod_hls_master_file_name_prefix
- 語法:
vod_hls_master_file_name_prefix name
- 默認:
master
- 背景:
http
,server
,location
HLS主播放列表文件的名稱(默認為m3u8擴展名)。
vod_hls_index_file_name_prefix
- 語法:
vod_hls_index_file_name_prefix name
- 默認:
index
- 背景:
http
,server
,location
HLS媒體播放列表文件的名稱(隱含M3u8擴展名)。
vod_hls_iframes_file_name_prefix
- 語法:
vod_hls_iframes_file_name_prefix name
- 默認:
iframes
- 背景:
http
,server
,location
HLS I幀播放列表文件的名稱(隱含M3u8擴展名)。
vod_hls_segment_file_name_prefix
- 語法:
vod_hls_segment_file_name_prefix name
- 默認:
seg
- 背景:
http
,server
,location
段文件名的前綴,實際的文件名是seg-<index>-v<video-track-index>-a<audio-track-index>.ts
。
vod_hls_init_file_name_prefix
- 語法:
vod_hls_init_file_name_prefix name
- 默認:
init
- 背景:
http
,server
,location
init段文件名的名稱,只有在使用fmp4容器時才有意義。
vod_hls_encryption_key_file_name
- 語法:
vod_hls_encryption_key_file_name name
- 默認:
encryption.key
- 背景:
http
,server
,location
加密密鑰文件名的名稱,僅在加密方法不相關時才適用none
。
vod_hls_encryption_key_uri
- 語法:
vod_hls_encryption_key_uri uri
- 默認:
a url pointing to encryption.key
- 背景:
http
,server
,location
設置EXT-X-KEY的URI屬性的值,僅在加密方法不相關時才有效none
。參數值可以包含變量。
vod_hls_encryption_key_format
- 語法:
vod_hls_encryption_key_format format
- 默認:
none
- 背景:
http
,server
,location
設置EXT-X-KEY的KEYFORMAT屬性的值,僅在加密方法不相關時才相關none
。
vod_hls_encryption_key_format_versions
- 語法:
vod_hls_encryption_key_format_versions versions
- 默認:
none
- 背景:
http
,server
,location
設置EXT-X-KEY的KEYFORMATVERSIONS屬性的值,僅在加密方法不相關時才有效none
。
vod_hls_mpegts_interleave_frames
- 語法:
vod_hls_mpegts_interleave_frames on/off
- 默認:
off
- 背景:
http
,server
,location
當啟用時,HLS復用器交織不同流(音頻/視頻)的幀。禁用時,在音頻/視頻之間的每個開關上,復用器都會刷新MPEG TS數據包。
vod_hls_mpegts_align_frames
- 語法:
vod_hls_mpegts_align_frames on/off
- 默認:
on
- 背景:
http
,server
,location
啟用時,每個視頻/音頻幀均與MPEG TS數據包邊界對齊,根據需要添加填充。
vod_hls_mpegts_output_id3_timestamps
- 語法:
vod_hls_mpegts_output_id3_timestamps on/off
- 默認:
on
- 背景:
http
,server
,location
啟用后,將在每個TS段中輸出ID3 TEXT幀,其中包含帶絕對段時間戳的JSON。時間戳以自紀元(unixtime x 1000)以毫秒計算,JSON結構為:{"timestamp":1459779115000}