Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
HTTP Live Streaming (HLS) adalah protokol video streaming yang sangat kuat yang dilaksanakan oleh Apple Inc. HLS menggunakan transaksi HTTP yang melintasi firewall, proksi, dan dapat diedarkan melalui CDN dengan mudah. Oleh itu, teknologi ini mampu menjangkau khalayak tontonan yang jauh lebih besar daripada RTP atau protokol berasaskan UDP lain. Sebilangan besar video streaming langsung dalam talian hari ini dihoskan oleh sistem mahal yang menggunakan HLS, tetapi umumnya mahal dan memerlukan banyak sumber pelayan. Tutorial ini akan menunjukkan kepada anda cara menyediakan Ubuntu 14.04 VULTR VPS yang sangat berpatutan untuk melakukan acara streaming langsung HLS dengan hanya menggunakan perisian sumber terbuka.
Langkah pertama adalah membaca dan menyiapkan pelayan anda mengikut Vultr Doc " Setup Nginx-RTMP pada Ubuntu 14.04 ". Arahan dalam dokumen itu adalah yang paling komprehensif untuk peringkat penyediaan, pada masa penulisan. Saya nyatakan bahawa anda mungkin ingin mengganti "nginx-1.7.5" dengan "nginx-1.9.4" atau apa sahaja versi terbaru Nginx yang ada. Cadangan lain adalah menyusun Nginx dengan modul status HTTP stub untuk memberi anda kemampuan untuk memantau berapa banyak penonton HLS langsung yang anda miliki kemudian.
Daripada menyusun dengan:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Gunakan tali ini dalam prosedur yang digariskan dalam dokumen prasyarat:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Contoh dalam tutorial ini akan membuat aliran "langsung" dan "mudah alih" (dioptimumkan) dan akan menggunakan ffmpeg (dipasang pada tutorial sebelumnya) untuk menghasilkan aliran HLS yang dioptimumkan untuk bit-bit yang disesuaikan. Contohnya juga akan menunjukkan bagaimana menyebabkan pelayan merakam aliran langsung anda secara automatik dan membolehkan anda memainkan semula rakaman sebagai perkhidmatan ulangan video berdasarkan permintaan (VOD).
Pertama, buat struktur folder yang diperlukan untuk menyimpan manifes HLS langsung dan mudah alih dan serpihan video:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Mungkin idea yang baik untuk menghidupkan firewall anda jika anda belum melakukannya. Sekiranya demikian, anda mesti membenarkan lalu lintas ke port yang digunakan oleh Nginx dan HLS. Sekiranya anda ingin berlari tanpa firewall buat masa ini, abaikan bahagian ufw di bawah.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
Penstriman HLS memerlukan konfigurasi Nginx yang berbeza dengan konfigurasi RTMP pada artikel pertama. Edit nginx.conf
fail anda untuk menggunakan yang berikut, ganti "my-ip" dan "my-stream-key" dengan maklumat anda. Anda boleh menggunakan apa sahaja yang anda mahukan untuk "my-stream-key" itu hanya perkataan yang unik dan bermanfaat untuk anda. Anda mungkin ingin membuat sandaran fail konfigurasi asal anda terlebih dahulu, kemudian tampalkan maklumat konfigurasi yang saya berikan ke dalam editor, menggantikan semua yang ada di sana:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Nginx.conf baru:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
allow play all;
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
record all;
record_path /video_recordings;
record_unique on;
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;
#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$;
}
#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/mobile;
hls_fragment 10s;
}
#allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
application vod {
play /video_recordings;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name 192.168.254.178;
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/live;
add_header Cache-Control no-cache;
}
#creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/mobile;
add_header Cache-Control no-cache;
}
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
location /stats {
stub_status;
}
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
location / {
root html;
index index.html index.htm;
}
}
}
Tekan Ctrl + X untuk keluar. Katakan "ya" untuk menyimpan perubahan.
Anda boleh mendapatkan petunjuk dan contoh pemboleh ubah yang jelas dalam nginx.conf
fail ini jika anda meminta mesin carian kegemaran anda untuk "arahan nginx-rtmp". Saya telah menggunakan nginx-rtmp dengan HLS selama beberapa tahun sekarang, tanpa menggunakan arahan "izinkan penerbitan" dan "tolak terbitkan" dan saya telah melihat sifar kejadian orang menggunakan / menyerang pelayan video saya. Oleh itu, saya tidak memasukkan arahan tersebut di sini. Baca dan tambahkan arahan ini jika anda mahu.
Selepas menukar nginx.conf
fail, anda mesti memulakan semula Nginx untuk menggunakan konfigurasi baru:
sudo service nginx restart
Perhatikan dengan teliti sebarang mesej ralat Nginx dan atasi sebarang kesalahan yang mungkin disebabkan oleh kesalahan ejaan, pemilikan folder, atau masalah kebenaran. Sekiranya anda tidak mempunyai mesej ralat, maka anda sudah bersedia untuk membuat aliran pengekodan anda.
Anda mesti mempunyai pengekod video untuk membuat aliran. Saya menggunakan OBS (Open Broadcaster Software) - yang merupakan sumber terbuka dan berfungsi dengan baik untuk saya. Terdapat penyelesaian lain untuk dipilih, yang berada di luar skop tutorial ini. Saya tidak akan membuat liputan mengenai konfigurasi pengekod video RTMP. Mereka semua memerlukan pemboleh ubah input yang sama. Tetapan utama yang perlu anda masukkan untuk menggunakan nginx.conf
konfigurasi tepat saya dan berfungsi dengan baik di kebanyakan pemain / penyemak imbas / platform adalah seperti berikut:
Saya cadangkan mencuba pengekod yang berbeza dan bereksperimen dengannya. Anda mungkin menginginkan nisbah aspek yang luas-atau kamera anda (atau siaran lain) mungkin memerlukannya. Sekiranya demikian, pastikan untuk menukar maklumat ini dalam pengekod anda dan juga nisbah aspek yang disenaraikan di bahagian exec-ffmpeg nginx.conf
fail yang telah saya berikan; jika tidak, anda akan mendapat beberapa suapan video yang kelihatan bodoh.
Setelah pengekod anda disediakan, anda boleh menguji semuanya. Mulakan pengekod dengan kamera web anda atau sejenis ujian-makanan yang dijalankan di atasnya. Anda boleh melihat siaran anda pada masa ini dengan pemain VLC menggunakan URL seperti:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Ini masing-masing untuk aliran video utama dan mudah alih anda. Ganti IP dan kunci aliran anda dengan sewajarnya.
Setelah berjaya menyiarkan aliran pertama anda periksa (melalui ssh atau ftp) bahawa siaran langsung anda direkodkan dalam /video_recordings
folder di Vultr VPS anda. Anda juga boleh mencuba memainkan fail yang dirakam ini dalam VLC dengan URL seperti:
rtmp://my-ip/vod/filename.flv
Stat Nginx juga tersedia (dengan stub_status Nginx). Untuk melihat statistik pelawat / penonton, akses:
http://my-ip/stats
Untuk melihat video anda di laman web, anda memerlukan pemain yang dapat disematkan. Terdapat banyak pemain yang boleh disematkan yang akan memainkan video HLS. Saya telah menggunakan JW Player selama beberapa tahun sekarang, tetapi versi percuma tidak akan memainkan HLS. Flowplayer dan Bitdash oleh Bitmovin (antara penyelesaian lain) cukup murah hati untuk menawarkan versi bukan komersial pemain mereka secara percuma yang akan menjadikan aliran HLS anda tertanam di laman web. Untuk artikel ini, saya telah mencuba kedua-duanya dan mendapati kedua-duanya berfungsi dengan baik dengan pelayan video berasaskan Vultr / Nginx saya. Saya akan menunjukkan secara ringkas bagaimana saya menggunakan Flowplayer dengan mesin ujian saya.
Sekiranya anda akan menggunakan streaming HLS langsung dengan cara biasa, berkelanjutan, atau komersial, saya mendorong anda untuk membeli lesen dari Flowplayer atau pemain mana pun yang anda memutuskan untuk menggunakannya. Anda akan mendapat pemain yang mempunyai sekatan yang lebih sedikit, lebih banyak ciri, dan boleh dijenamakan untuk organisasi anda. Anda juga akan mendapat sokongan - yang sangat penting. Selain VPS Vultr, ini adalah satu-satunya kos yang berkaitan dengan projek ini.
Sebelum anda melakukan perkara lain, penting untuk menjaga apa yang disebut sekatan "merentas domain", yang akan mematikan kemampuan anda untuk melakukan streaming ke laman web / laman web. Buat crossdomain.xml
fail di nginx/html
folder anda dan masukkan arahan di dalamnya untuk membolehkan data mengalir di antara domain:
sudo nano /usr/local/nginx/html/crossdomain.xml
Salin pertama (dari halaman ini) dan kemudian tampal (klik kanan) ke dalam bidang editor nano data XML berikut:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
Tekan Ctrl + O untuk menulis, kemudian Ctrl + X untuk menyimpan fail ke cakera dan keluar.
Saya meraih HTML5 (versi 6.0.3) Flowplayer yang memberi saya sejumlah fail dan folder ketika dizip. Saya memuat naik semua fail dan folder ke dalam subfolder folder root Nginx / HTML yang saya namakan "flowplayer". Jalan yang tepat adalah /usr/local/nginx/html/flowplayer
.
Untuk menguji video kami ketika disematkan di laman web, buat beberapa fail HTML di akar folder Nginx / HTML menggunakan nano dan isi dengan kandungan berikut.
Fail:
sudo nano /usr/local/nginx/html/hls.html
Kod HTML:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
</head>
<body>
640x480 664kbps (live) Desktop Browsers<br>
<div style="width:640px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
<br><br>
480x360 464kbps (mobile) Mobile Browsers <br>
<div style="width:480px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
</body>
Fail:
sudo nano /usr/local/nginx/html/hls_progressive.html
Kod HTML:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
<style> .flowplayer { width: 640px; } </style>
</head>
<body>
<div class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
<source type="application/x-mpegurl" src="">
</video>
</div>
<br>
</body>
Pastikan untuk mengganti "my-ip" dan "my-stream-key" dengan data anda.
Anda mesti menggantikan jalan flowplayer/skin/functional.css
untuk tanda "#" dalam helaian gaya href="#"
. Perisian tutorial melucutkan jalan. Anda mesti mengisi URL di src=""
bahagian - ia dilucutkan oleh perisian tutorial, penggunaan http://my-ip/live/my-stream-key/index.m3u8
dan http://my-ip/mobile/my-stream-key/index.m3u8
, masing-masing. Anda juga mesti menambahkan src
tag skrip di kepala untuk kedua jquery-1.11.2.min.js
dan untuk flowplayer.min.js
. Tag dilucutkan oleh perisian tutorial. Anda boleh mencari cara membuat tag ini dengan melihat example html
fail yang disertakan dengan kit Flowplayer.
Mulakan pengekod dengan kamera web anda atau sejenis ujian-makanan yang dijalankan di atasnya. Anda dapat melihat siaran anda di penyemak imbas menggunakan URL berikut:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Halaman pertama hanya menunjukkan setiap aliran anda - yang utama dan platform mudah alih. Anda akan dapat memulakannya dan melihatnya. Anda akan melihat bahawa aliran platform mudah alih lebih kecil dari saiznya. Langkah-langkah ini hanya untuk memastikan bahawa semuanya berjalan.
Halaman kedua menunjukkan satu aliran. Tetapi disusun dengan cara yang disebut "streaming progresif". Maksudnya ialah apabila penonton memainkan video, pelayan dan pemain cuba memberikan penonton aliran bit tinggi dan berkualiti tinggi sekiranya sambungan penonton dapat mengekalkannya. Sekiranya sambungan mereka lemah dan sambungan tidak dapat dipertahankan, ia akan menunjukkan aliran bitrate rendah (mudah alih) yang lebarnya 200 kbps lebih rendah dalam lebar jalur. Sekiranya anda mahu, anda boleh membuat aliran progresif yang lebih lulus dengan ffmpeg dan mengkonfigurasinya menggunakan contoh saya.
Saya telah menguji konfigurasi ini pada satu teras, VGB VGB 1GB dan saya mendapati bahawa dengan satu aliran langsung, ditambah aliran mudah alih trans-dinilai yang dibuatnya dengan ffmpeg, penggunaan cpu kurang dari 35% dan hanya memakan 100MB ram 1GB saya. Ini adalah persediaan yang sangat cekap.
Sekiranya anda merancang untuk mengalirkan video yang jauh lebih besar dalam dimensi piksel daripada SD, anda mungkin mendapati bahawa anda harus menggunakan VPS yang lebih hebat. Saya ingin tahu mengenai perkara ini dan menjalankan aliran utama saya sehingga 1280x960 piksel dan 2Mbps - memberi beban tambahan pada perkara. Tetapi VPS masih hanya menggunakan 50% CPU dan penggunaan memori tetap pada 100MB. Saya menambah selusin penonton / penyemak imbas dan hampir tidak ada bezanya beban pada VPS — hanya lebar jalur yang digunakan naik. Saya yakin bahawa mewujudkan aliran trans-dinilai tambahan dengan ffmpeg akan terus memberikan beban tambahan pada sistem.
Saya telah menggunakan jenis pelayan ini dalam persekitaran pengeluaran dengan antara 50 hingga 100 pengguna serentak dan mendapati bahawa penggunaan sumber meningkat sedikit dengan peningkatan sambungan penonton. Eksperimen dengannya. Tetapi saya berpendapat bahawa kebanyakan pengguna akan senang menggunakan VPS single-core, 1GB. Nikmati pelayan streaming HLS baru anda!
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.
Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.
Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.
Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.
CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?
Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.
Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!
Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.
Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut