Nginx 学习笔记(五)nginx-vod-module 模块
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推薦設置:
調試設置:
移植文件
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.socp -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 cachesvod_metadata_cache metadata_cache 256m;vod_response_cache response_cache 128m;# vod settingsvod_mode local;vod_segment_duration 2000; # 2svod_align_segments_to_key_frames on;#file handle caching / aioopen_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。
- dash - manifest.mpd
- hds - manifest.f4m
- hls主播放列表 - master.m3u8
- hls媒體播放列表 - index.m3u8
- mss - 清單
- thumb -?thumb-<offset>[<resizeparams>].jpg(偏移量是以毫秒為單位的縮略圖視頻偏移量)
- volume_map -?volume_map.csv
- langparams - 可用于根據語言(ISO639-3代碼)過濾音軌/字幕。例如,master-leng.m3u8將只返回英文音軌。
- resizeparams - 可用于調整返回的縮略圖圖像。例如,thumb-1000-w150-h100.jpg在視頻中捕獲縮略圖1秒,并將其大小調整為150x100。如果省略其中一個尺寸,則設置其值以使得生成的圖像保持視頻幀的縱橫比。
五、映射響應格式
當配置為在映射模式下運行時,nginx-vod-module向配置的上游服務器發出HTTP請求,以便接收它應該生成的媒體流的布局。響應必須采用JSON格式。
本部分包含幾個簡單的示例,后面是對支持的對象和字段的引用。但首先,有幾個定義:
-
- 速率(速度)變化 - 適用于音頻和視頻
- 音量變化
- 混合 - 可用于將多個音軌合并在一起,或將源A的音頻與源B的視頻合并
六、簡單的映射
下面的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 cachesvod_metadata_cache metadata_cache 256m;vod_response_cache response_cache 128m;# vod settingsvod_mode mapped;vod_segment_duration 2000; # 2svod_align_segments_to_key_frames on;#file handle caching / aioopen_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 hlslocation /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}
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Nginx 学习笔记(五)nginx-vod-module 模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcpwrapper的使用方法
- 下一篇: 在CentOS6.9中 搭建 Flume