FMUSER Transmitir vídeo e áudio sem fio mais fácil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
fundo
MP4 é o nosso formato de vídeo comum e, geralmente, quando reproduzimos vídeos de servidor, é diretamente a fonte de vídeo MP4 solicitada. Mas, na verdade, isso não é bom. O arquivo de cabeçalho MP4 [ftyp + moov] é grande, e a reprodução inicial precisa baixar o arquivo de cabeçalho completo e analisá-lo, e então baixar uma certa duração do videoclipe reproduzível para reproduzir. Além disso, conforme o tamanho do vídeo aumenta, o arquivo de cabeçalho continuará a crescer e o tempo de reprodução inicial será maior. Diante dessa situação, é necessário um método que agilize a análise inicial do vídeo. HLS é a solução proposta pela Apple para resolver este problema.
HLS
HLS é a abreviatura de HTTP Live Streaming. É um protocolo de transmissão de rede de streaming media baseado em HTTP proposto pela Apple. Ele pode oferecer suporte ao vivo e sob demanda ao mesmo tempo, bem como multi-definição, áudio e vídeo dual-track, legendas e outras funções. Seu princípio é dividir um vídeo inteiro em vários vídeos pequenos, e a reprodução completa é formada pela emenda desses segmentos.
HLS é amplamente utilizado em terminais móveis. Os clientes atuais que suportam o protocolo HLS incluem:
iOS 3.0 e superior, AVPlayer oferece suporte nativo a HLS
3.0 Android e acima
Adobe Flash Player 11.0 e superior
Seu princípio geral é este:
1. Colete áudio e vídeo
2. Codifique áudio e vídeo no servidor
3. Após a codificação, entregue-o ao Segmentador de Fluxo na forma de fluxo de transporte MPEG-2
4. O divisor cria um arquivo de índice e uma lista de reprodução ts, o arquivo de índice é usado para indicar a posição do áudio e vídeo, e ts é um clipe multimídia real
5. Coloque os recursos da etapa anterior no servidor HTTP
6. O cliente solicita o arquivo de índice para reprodução, e o conteúdo da reprodução pode ser encontrado por meio do arquivo de índice
M3U8
Uma etapa fundamental para realizar o HLS é a quarta etapa acima, ou seja, a organização de arquivos de índice e listas de reprodução ts. O formato M3U8 é usado aqui. M3U8 é a versão Unicode de M3U, 8 significa que a codificação UTF-8 é usada e M3U e M3U8 são formatos de arquivo para listas de multimídia.
Descrição do formato M3U8
Às vezes, podemos precisar modificar manualmente o conteúdo do arquivo M3U8 para teste ou em alguns casos especiais, portanto, precisamos ter um certo conhecimento de seu formato. A definição deste formato está escrita no documento RFC 8216. A seguir estão algumas notas:
Os arquivos M3U8 devem ser codificados em UTF-8 e não podem usar a ordem de bytes da marca de ordem de bytes (BOM) e não podem conter caracteres de controle utf-8 (U + 0000 ~ U_001F e U + 007F ~ u + 009F)
Cada linha do conteúdo do arquivo M3U8 é uma linha em branco, um URI ou uma string começando com #, e nenhum caractere em branco pode aparecer.
As tags integradas são todas strings que começam com #EXT e diferenciam maiúsculas de minúsculas.
URI é o caminho do conteúdo, que pode ser um caminho relativo ou um caminho absoluto
Arquivo de lista mestre M3U8
O arquivo de índice principal M3U8 é geralmente usado para especificar várias fontes de índice. Vamos primeiro analisar o conteúdo do arquivo m3u8 principal hls_vod_mvp.m3u8, seu cabeçalho é assim
Formato de cabeçalho
#EXTM3U
# EXT-X-VERSION: 7
# EXT-X-INDEPENDENT-SEGMENTCódigo de cópia
# EXTM3U indica que o arquivo está no formato M3U e todos os arquivos no formato M3U devem colocar o conteúdo na primeira linha.
# EXT-X-VERSIOn indica a versão compatível da lista de reprodução, que atualmente é 7.
# EXT-X-INDEPENDENT-SEGMENTS Esta tag indica que todas as amostras de mídia em um segmento de mídia podem ser decodificadas independentemente, sem depender de outras informações de segmento de mídia.
Formato de legenda
O conteúdo abaixo contém algumas legendas, o conteúdo das legendas não é necessário.
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Copiar código
# EXT-X-MEDIA é usado para especificar recursos de lista de mídia multilíngue do mesmo conteúdo.
TYPE é o tipo de recurso e os conteúdos opcionais são: AUDIO, VIDEO, SUBTITLES, CLOSED-CAPTIONS.
O conteúdo acima define TYPE = SUBTITLES, que é o tipo de legenda.
GROUP-ID é o grupo ao qual pertence a tradução multilíngue e é um parâmetro obrigatório
NAME é a informação de descrição legível do fluxo de tradução e esse valor corresponde a displayName de AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED são três valores BOOL correspondentes a se o fluxo de tradução é selecionado por padrão se as informações necessárias estiverem ausentes. O fluxo de reprodução é reproduzido quando o usuário não exibe as configurações. FORCED é válido apenas para o tipo de legenda e é usado para marcar a seleção automática atual do fluxo de tradução. .
LANGUAGE é usado para especificar o tipo de idioma, que é definido de acordo com o [código de idioma ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "ISO 639 language code") padrão. Quando o reprodutor padrão do sistema seleciona legendas, o nome da lista de legendas exibida é definido de acordo com este valor.
O URI é a informação de localização do recurso, onde corresponde a um arquivo M3U8 legendado. subtitles / eng / prog_index.m3u8 é um caminho relativo,
Por meio das informações acima, podemos analisar o significado do conteúdo acima da seguinte forma: O vídeo atual possui três legendas: inglês, japonês e chinês. Mas cada idioma tem duas mensagens EXT-X-MEDIA. A diferença entre eles é o agrupamento, um agrupado em subs e o outro agrupado em subsC. Por que existem dois grupos? Eu falarei sobre isso mais tarde.
formato de vídeo
Olhe para baixo novamente, para o índice do conteúdo do vídeo:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: Este atributo especifica uma fonte de backup, ou seja, o caminho de reprodução do vídeo e algumas informações do vídeo. A seguir está a configuração do conteúdo correspondente: BANDWIDTH é a taxa de bits de pico, 827299 é 827299bit / s, que é o tempo de pico mais alto Consome 101 KB de tráfego por segundo.
AVERAGE-BANDWIDTH é a taxa de bits média, 747464
CODECS é a informação de codificação, avc1.64001f, mp4a.40.2, avc representa o formato de codificação h264, o seguinte 64001f é o parâmetro de codificação representado por hexadecimal, 64, 00, 1f respectivamente representam três valores de parâmetro diferentes. mp4a é um formato de codificação de áudio e o seguinte 40.2 representa os parâmetros de codificação de áudio.
RESOLUTION é a resolução do vídeo. A resolução da fonte de vídeo atual é 640x360.
FRAME-RATE é a taxa de quadros máxima, 29.970 representa a taxa de quadros máxima da reprodução atual é de 29.970 quadros por segundo.
AUDIO é o grupo de áudio e program_audio é o nome do grupo de áudio correspondente.
SUBTITLES indica o grupo de legendas correspondente e subs é o nome do grupo de legendas correspondente. A informação da legenda acima possui um GROUP-ID e este valor corresponde a ele.
URI é o caminho do conteúdo, 0640 / 0640.m3u8 corresponde ao caminho do arquivo m3u8 da fonte de vídeo. Isso pode ser visto nas informações de captura de pacote.
Abaixo de EXT-X-STREAM-INF está EXT-XI-FRAME-STREAM-INF, que representa o quadro I (quadro chave) do recurso multimídia contido no arquivo de lista de reprodução. Como o quadro I é apenas uma imagem, ele não contém conteúdo de áudio e os parâmetros restantes são consistentes com o formato do conteúdo de vídeo.
Depois disso, existem fontes de vídeo correspondentes a diferentes resoluções, 1920x1080, 1280x720, 960x540, 480x270. Como o HLS mudará automaticamente a resolução de acordo com a situação da rede, várias resoluções são geralmente preparadas para seleção. De acordo com a análise dos dados capturados, o primeiro segmento reproduzido tem resolução de 640, o segundo para 8 segmentos depois disso tem resolução de 480, e então é comutado para resolução de 640.
formato de áudio
Olhando para baixo é o índice do áudio correspondente
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audio1 / audio1.m3u8" Copiar Código
# EXT-X-MEDIA apareceu acima, mas não mencionou a lista para vários idiomas.
TYPE = AUDIO, desta vez o tipo é áudio.
GROUP-ID é o ID do grupo, correspondente ao conteúdo de ÁUDIO em EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 corresponde ao caminho de áudio.
Fontes alternativas de diferentes formatos de codificação
No arquivo principal M3U8, também podemos ver uma fonte de vídeo com resolução de 640, que não é igual à resolução de 640 acima. Seu conteúdo é assim:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audioc / prog_index.m3u8" Copiar Código
O formato de codificação CODECS é hvc1.2.4.H150.B0, mp4a.40.2, o formato de codificação de áudio não mudou, mas o formato de codificação de vídeo mudou. hvc1 é um dos formatos de codificação HEVC (H265). É um formato de codificação de vídeo de nova geração lançado pela Apple. Devido a problemas de compatibilidade, muitos clientes não podem analisar esse formato, portanto, não é muito popular. Aparecem fontes de vídeo neste formato. Deve haver um backup aqui. Comparando dois conteúdos da mesma resolução, pode-se descobrir que a taxa de bits do formato hvc1 é maior do que a do formato avc1, o que mostra que o conteúdo de hvc1 é maior e a taxa de compressão de avc1 é maior na mesma resolução.
Correspondendo à fonte de vídeo de formato hvc1, seu agrupamento de conteúdo de legenda e agrupamento de conteúdo de áudio também mudaram, é por isso que as legendas acima têm duas cópias do mesmo idioma e correspondem às fontes de vídeo nos formatos avc1 e hvc1.
Esta é a lista principal do M3U8. O áudio e o vídeo deste conteúdo são processados separadamente, mas também podem ser combinados.
Arquivo M3u8 contendo informações de mídia
Pegue o arquivo 0640.m3u8 como exemplo
#EXTM3U
# EXT-X-VERSION: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLISTCopy code
# EXTM3U e # EXT-X-VERSION são o cabeçalho do arquivo M3U e o número da versão compatível, respectivamente. Este formato é uma versão anterior, portanto o número da versão é inferior ao do arquivo principal.
EXT-X-TARGETDURATION representa a duração máxima de cada segmento de reprodução, 7 representa 7 segundos e os segmentos neste diretório não podem exceder 7s.
EXT-X-MEDIA-SEQUENCE representa o número da sequência do primeiro segmento da lista de reprodução e 1 representa que o segmento de reprodução começa em 1.
#EXTINF representa a duração do segmento, 6.006 significa que o segmento atual é 6.006s. As informações de duração total do vídeo são obtidas acumulando esse valor.
0640_00001.ts é o caminho relativo do clipe. O arquivo ts representa um trecho de vídeo ou áudio, e pode estar em ts, mp4, aac e outros formatos. Porque foi especificado para abrir a partir de 1
|
Digite o e-mail para obter uma surpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
FMUSER Transmitir vídeo e áudio sem fio mais fácil!
Contato
Endereço:
No.305 Sala HuiLan Edifício No.273 Huanpu Road Guangzhou China 510620
Categorias
Newsletter