FMUSER Wirless Mengirim Video Dan Audio Lebih Mudah!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikans
sq.fmuser.org -> Albania
ar.fmuser.org -> Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusia
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Cina (Sederhana)
zh-TW.fmuser.org -> Mandarin (Tradisional)
hr.fmuser.org -> Kroasia
cs.fmuser.org -> Ceko
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Filipina
fi.fmuser.org -> Finlandia
fr.fmuser.org -> Perancis
gl.fmuser.org -> Galicia
ka.fmuser.org -> Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Yunani
ht.fmuser.org -> Kreol Haiti
iw.fmuser.org -> Ibrani
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongaria
is.fmuser.org -> Islandia
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Irlandia
it.fmuser.org -> Italia
ja.fmuser.org -> Jepang
ko.fmuser.org -> Korea
lv.fmuser.org -> Latvia
lt.fmuser.org -> Lithuania
mk.fmuser.org -> Makedonia
ms.fmuser.org -> Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Norwegia
fa.fmuser.org -> Persia
pl.fmuser.org -> Polandia
pt.fmuser.org -> Portugis
ro.fmuser.org -> Rumania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Serbia
sk.fmuser.org -> Slowakia
sl.fmuser.org -> Slovenia
es.fmuser.org -> Spanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Swedia
th.fmuser.org -> Thailand
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraina
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
HLS dan Streaming Langsung Http adalah protokol untuk streaming waktu nyata yang ditentukan oleh Apple. HLS diimplementasikan berdasarkan protokol HTTP. Isi transmisi mencakup dua bagian, satu adalah file deskripsi M3U8, dan yang lainnya adalah file media TS.
1. File M3U8
File media dijelaskan dalam teks, yang terdiri dari serangkaian tag.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Baris pertama dari setiap file M3U8 harus berupa tag ini.
# EXT-X-TARGETDURATION: Menentukan panjang waktu segmen media maksimum (detik). Durasi waktu yang ditentukan dalam #EXTINF harus kurang dari atau sama dengan nilai maksimum ini. Nilai ini hanya dapat muncul sekali.
#EXTINF: Jelaskan panjang satu file media. File media mengikuti, seperti ./0.ts
2. file ts
File ts adalah file transport stream, format pengkodean video utama adalah h264 / mpeg4, dan audionya adalah acc / MP3.
File ts terbagi menjadi tiga lapisan: ts layer Transport Stream, pes layer Packet Elemental Stream, es layer Elementary Stream. Lapisan es adalah data audio dan video, dan lapisan pes adalah informasi deskripsi bingkai data seperti stempel waktu yang ditambahkan ke data audio dan video. Lapisan ts adalah untuk menambahkan informasi yang diperlukan untuk identifikasi dan transmisi aliran data di lapisan pes
Catatan: Detailnya adalah sebagai berikut
(1) lapisan ts Ukuran paket ts ditetapkan pada 188 byte, dan lapisan ts dibagi menjadi tiga bagian: header ts, bidang adaptasi, dan muatan. Header ts ditetapkan pada 4 byte; bidang adaptasi mungkin ada atau mungkin tidak ada, dan fungsi utamanya adalah untuk mengisi data kurang dari 188 byte; payloadnya adalah data pes.
tajuk ts
sync_byte 8b byte sinkronisasi, diperbaiki pada 0x47
transport_error_indicator 1b Transport error indicator, menunjukkan bahwa ada byte yang tidak berguna setelah bidang adaptasi dari header ts, biasanya 0, byte ini dihitung dalam panjang bidang adaptasi
payload_unit_start_indicator 1b Indikator start unit beban, yang ditandai sebagai 1 di awal paket data lengkap
transport_priority 1b Transport priority, 0 adalah prioritas rendah, 1 adalah prioritas tinggi, biasanya 0
pid 13b nilai pid
transport_scrambling_control 2b Transport scrambling control, 00 berarti tidak terenkripsi
adaptation_field_control 2b Apakah akan menyertakan bidang adaptasi, '00' sudah dipesan; '01' berarti tidak ada bidang adaptasi, hanya muatannya; '10' berarti hanya bidang adaptasi, tidak ada muatan; '11' berarti adaptasi juga termasuk Domain dan payload.
kontinuitas_hitung 4b Penghitung meningkat, dari 0-f, nilai awal tidak harus mengambil 0, tetapi harus kontinu
Isi dari lapisan ts diidentifikasi oleh nilai PID, dan konten utama meliputi: tabel PAT, tabel PMT, aliran audio, dan aliran video. Untuk mengurai aliran ts, Anda harus terlebih dahulu menemukan tabel PAT, selama Anda menemukan PAT, Anda dapat menemukan PMT, dan kemudian Anda dapat menemukan aliran audio dan video. Nilai PID dari tabel PAT ditetapkan pada 0. Tabel PAT dan tabel PMT perlu dimasukkan ke dalam aliran ts secara teratur, karena pengguna dapat bergabung dengan aliran ts kapan saja, interval ini relatif kecil, biasanya setiap beberapa bingkai video untuk menambahkan PAT dan PMT. Tabel PAT dan PMT diperlukan, dan tabel lain seperti SDT (tabel deskripsi layanan) juga dapat ditambahkan, tetapi aliran hls dapat diputar selama ada PAT dan PMT.
Tabel PAT: Fungsi utamanya adalah untuk menunjukkan nilai PID dari tabel PMT.
Tabel PMT: Fungsi utamanya adalah untuk menentukan nilai PID dari audio dan video streaming.
Aliran audio / aliran video: Membawa konten audio dan video.
adaptasi
adaptation_field_length 1B panjang bidang adaptasi, jumlah byte di belakang
flag 1B membutuhkan 0x50 untuk menunjukkan PCR atau 0x40 untuk tidak menyertakan PCR
Referensi Jam Program PCR 5B, referensi jam program, digunakan untuk memulihkan jam waktu sistem STC (Jam Waktu Sistem) yang konsisten dengan pembuat enkode.
stuffing_bytes xB stuffing bytes, nilainya 0xff
Panjang area adaptasi harus mencakup satu byte yang diidentifikasi oleh indikator kesalahan transmisi. pcr adalah referensi jam program, pcr, dts, pts adalah semua nilai sampel dari jam sistem yang sama, pcr adalah inkremental, sehingga dapat disetel sebagai nilai dts, data audio tidak perlu pcr. Kalau tidak ada field, ipad bisa main, tapi vlc tidak bisa main. Saat mengemas aliran ts, tabel PAT dan PMT tidak memiliki bidang adaptasi. Jika panjangnya tidak cukup, isikan saja 0xff. Baik video stream maupun audio stream perlu menambahkan field adaptasi, yang biasanya ditambahkan ke paket ts pertama dan paket ts terakhir dari sebuah frame, dan paket ts tengah tidak ditambahkan.
Format PAT
table_id 8b tabel PAT ditetapkan ke 0x00
section_syntax_indicator 1b diperbaiki pada 1
nol 1b ditetapkan pada 0
cadangan 2b ditetapkan ke 11
section_length 12b Panjang dari data berikut
transport_stream_id 16b Transport stream ID, ditetapkan sebagai 0x0001
cadangan 2b ditetapkan ke 11
version_number 5b Nomor versi, tetap pada 00000, jika PAT berubah, nomor versi akan bertambah 1
current_next_indicator 1b ditetapkan ke 1, menunjukkan bahwa tabel PAT ini dapat digunakan, jika 0, tunggu tabel PAT berikutnya
section_number 8b ditetapkan menjadi 0x00
last_section_number 8b ditetapkan menjadi 0x00
Mulai putaran
program_number 16b Jika nomor program 0x0000, artinya NIT, sedangkan nomor program 0x0001 berarti PMT
cadangan 3b ditetapkan ke 111
PID 13b Nilai PID sesuai dengan isi nomor program
Akhiri putaran
CRC32 32b CRC32 memeriksa kode dari data sebelumnya
Format PMT
table_id 8b PMT table memiliki nilai apapun, 0x02
section_syntax_indicator 1b diperbaiki pada 1
nol 1b ditetapkan pada 0
cadangan 2b ditetapkan ke 11
section_length 12b Panjang dari data berikut
nomor channel program_number 16b, artinya channel tersebut berhubungan dengan PMT saat ini, nilainya 0x0001
cadangan 2b ditetapkan ke 11
version_number 5b Nomor versi, tetap pada 00000, jika PAT berubah, nomor versi akan bertambah 1
current_next_indicator 1b diperbaiki pada 1
section_number 8b ditetapkan menjadi 0x00
last_section_number 8b ditetapkan menjadi 0x00
cadangan 3b ditetapkan ke 111
PCR_PID 13b PID dari paket TS tempat PCR (jam referensi program) berada, ditetapkan sebagai PID video
cadangan 4b ditetapkan ke 1111
program_info_length 12b Informasi deskripsi program, ditetapkan sebagai 0x000 berarti tidak
Mulai putaran
stream_type 8b Jenis aliran, tandai Video atau Audio atau data lain, pengkodean h.264 sesuai dengan 0x1b, pengkodean aac sesuai dengan 0x0f, pengkodean mp3 sesuai dengan 0x03
cadangan 3b ditetapkan ke 111
element_PID 13b PID sesuai dengan stream_type
cadangan 4b ditetapkan ke 1111
ES_info_length 12b Keterangan informasi, ditetapkan sebagai 0x000 berarti tidak
Akhiri putaran
CRC32 32b CRC32 memeriksa kode dari data sebelumnya
(2) lapisan pes
Lapisan pes menambahkan cap waktu dan informasi lainnya ke setiap bingkai video / audio. Paket pes berisi banyak konten, dan kami hanya meninggalkan yang paling umum digunakan.
pes start code 3B start code, diperbaiki pada 0x000001
nilai audio streaming id 1B (0xc0-0xdf), biasanya 0xc0
Nilai video (0xe0-0xef), biasanya 0xe0
pes packet length 2B Panjang data pes di belakang, 0 berarti panjang tidak terbatas,
Hanya panjang data video yang melebihi 0xffff
Flag 1B biasanya mengambil nilai 0x80 yang artinya data tidak dienkripsi, tidak memiliki prioritas, dan di-backup data
Bendera 1B nilai 0x80 berarti hanya pts, nilai 0xc0 berarti pts dan dts
pes data length 1B Panjang data berikut, nilainya 5 atau 10
nilai 5B 33bit pts
nilai dts 5B 33bit
pts adalah stempel waktu tampilan dan dts adalah stempel waktu decoding. Kedua cap waktu diperlukan untuk data video. Pts dan dts dari data audio sama, jadi hanya pts yang dibutuhkan. Ada dua cap waktu, pts dan dts, yang disebabkan oleh bingkai B. Poin dari frame I dan P sama dengan dts. Jika video tidak memiliki bingkai B, poin akan selalu sama dengan dts. Baca frame video secara berurutan dari file tersebut, dan urutan frame yang diekstraksi sama dengan urutan dts. Algoritma dts relatif sederhana, nilai awal + increment sudah cukup, perhitungan pts lebih rumit, dan offset perlu ditambahkan ke dts.
Hanya ada poin dalam pes audio (sama seperti dts), bingkai I dan P dari video harus memiliki kedua cap waktu, dan bingkai video B hanya memerlukan poin (sama seperti dts). Untuk mengemas pts dan dts, Anda perlu mengetahui jenis bingkai video, tetapi kami tidak dapat menilai jenis bingkai melalui format wadah. Anda harus mengurai konten h.264 untuk mendapatkan jenis bingkai.
misalnya:
IPBBBP
Urutan bacaan: 1 2 3 4 5 6
dts pesanan: 1 2 3 4 5 6
urutan poin: 1 5 3 2 4 6
Algoritme dts video sesuai permintaan:
dts = nilai awal + 90000 / video_frame_rate, nilai awal dapat ditentukan secara sewenang-wenang, tetapi yang terbaik adalah tidak menggunakan 0, video_frame_rate adalah frekuensi gambar, misalnya 23, 30.
pts dan dts didasarkan pada skala waktu, 1s = 90000 skala waktu, satu frame harus 90000 / video_frame_rate timescale.
Membagi skala waktu satu frame dengan frekuensi sampling dapat dikonversi ke durasi pemutaran satu frame
Algoritme dts audio sesuai permintaan:
dts = nilai awal + (90000 * audio_samples_per_frame) / audio_sample_rate, nilai audio_samples_per_frame terkait dengan codec, nilai aac 1024, nilai mp3 1158, audio_sample_rate adalah laju pengambilan sampel, seperti 24000, 41000. AAC mendekode bingkai 1024 sampel per saluran, yang berarti durasi frame adalah 1024 / sample_rate detik. Jadi stempel waktu setiap frame adalah 0, 1024 / sample_rate, ..., 1024 * n / sample_rate detik.
Dts dan pts dari video langsung harus menggunakan waktu secara langsung dalam aliran data langsung, dan tidak boleh dihitung dengan rumus.
(3) lapisan es
Lapisan es mengacu pada data audio dan video, kami hanya memperkenalkan video h.264 dan audio aac.
video h.264:
Untuk mengemas data h.264, kita harus menambahkan nalu (unit Network Abstraction Layer) ke data video. Nalu menyertakan header nalu dan tipe nalu. Header nilai ditetapkan ke 0x00000001 (awal bingkai) atau 0x000001 (dalam bingkai). Data h.264 terdiri dari slice, dan isi slice antara lain: video, sps, pps, dll. Jenis nalu menentukan isi dari data h.264 berikutnya.
F 1b Forbidden_zero_bit, h.264 menetapkan bahwa itu harus 0
NRI 2b nal_ref_idc, nilai 0 ~ 3, menunjukkan pentingnya nalu ini, I frame, sps, pps biasanya 3, P frame biasanya 2, dan B frame biasanya 0
Ketik 5b lihat tabel di bawah ini
deskripsi nal_unit_type
0 tidak digunakan
1 Gambar non-IDR, IDR mengacu pada bingkai kunci
2 bagian partisi A
3 bagian partisi B
|
Masukkan email untuk mendapatkan kejutan
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikans
sq.fmuser.org -> Albania
ar.fmuser.org -> Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusia
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Cina (Sederhana)
zh-TW.fmuser.org -> Mandarin (Tradisional)
hr.fmuser.org -> Kroasia
cs.fmuser.org -> Ceko
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Filipina
fi.fmuser.org -> Finlandia
fr.fmuser.org -> Perancis
gl.fmuser.org -> Galicia
ka.fmuser.org -> Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Yunani
ht.fmuser.org -> Kreol Haiti
iw.fmuser.org -> Ibrani
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongaria
is.fmuser.org -> Islandia
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Irlandia
it.fmuser.org -> Italia
ja.fmuser.org -> Jepang
ko.fmuser.org -> Korea
lv.fmuser.org -> Latvia
lt.fmuser.org -> Lithuania
mk.fmuser.org -> Makedonia
ms.fmuser.org -> Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Norwegia
fa.fmuser.org -> Persia
pl.fmuser.org -> Polandia
pt.fmuser.org -> Portugis
ro.fmuser.org -> Rumania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Serbia
sk.fmuser.org -> Slowakia
sl.fmuser.org -> Slovenia
es.fmuser.org -> Spanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Swedia
th.fmuser.org -> Thailand
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraina
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
FMUSER Wirless Mengirim Video Dan Audio Lebih Mudah!
Kontak
Alamat:
No.305 Kamar HuiLan Building No.273 Huanpu Road Guangzhou China 510620
Kategori
Buletin