Este é o comando mjpegtools que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
mjpegtools - Uma introdução às ferramentas MJPEG
Introdução
Eu escrevi essas coisas, porque tinha muitas folhas com anotações. Isso deve ser
algum tipo de resumo do conhecimento coletado durante um longo período de tempo. Andrew Stevens
ajudou com dicas e conhecimento de codificação e VCD.
Mjpegtools é um conjunto de programas que podem fazer gravação, reprodução, edição e eventual MPEG
compressão de áudio e vídeo no Linux.
Embora seja principalmente destinado ao uso com placas de captura / reprodução baseadas no Zoran
ZR36067 MJPEG chip codec mjpegtools podem ser facilmente usados para processar e compactar vídeo MJPEG
streams capturados usando xawtv usando dispositivos de buffer de quadro simples.
O COMO FAZER para as ferramentas pretende dar uma introdução às ferramentas MJPEG e ao
criação de vídeos MPEG 1/2. VCD, SVCD e DVD e a transcodificação de MPEG existente
córregos.
Para obter mais informações sobre os programas, leia a página de manual correspondente.
Achtung es gibt auch eine deutsche Versão bei:
Também existe uma página de manual deste texto. Você pode lê-lo com ”man mjpegtools” se instalado.
Nós também temos uma versão informativa que você deve ser capaz de ler com informação
A versão em texto deste texto está disponível em cvs. Você deve obtê-lo com o tarball ou
o pacote pré-compilado (RPM e deb).
Na imagem a seguir, você vê o fluxo de trabalho típico ao gravar um vídeo, cortá-lo
depois e codifique-o. Na foto, você também vê as conexões com outros programas.
Essas peças estão em cinza. As partes em azul podem ser feitas com o mjpegtools.
Fluxo de trabalho de codificação de vídeo
Lista não classificada de dicas úteis
Você deve compilar e instalar o pacote mjpeg_play, para isso leia o README &
INSTALL.real e seguir as dicas do script configure. Se você não quer compilar
você pode baixar o pacote mjpeg .RPM ou .DEB no Sourceforge, ou se disponível, use
aquele que vem com sua distribuição.
Existe um script no diretório scripts /. Este script é algo que mostra um caminho
pode ser feito. Ele também cria (sob certas circunstâncias) vídeos que parecem muito bons.
Vídeos melhores você só obterá ajustando os parâmetros.
Se você usa um kernel Linux da série 2.4 você geralmente terá que carregar os drivers
para as placas Buz ou DC10 ou LML33. Você deve executar o script de atualização fornecendo como opção
o nome do seu cartão que você possui. O script geralmente está em / usr / src / driver-zoran /. o
O driver do kernel zoran abaixo do kernel 2.4.4 não funciona. Você tem que usar o driver
disponível a partir de:
No 2.6. O kernel do Linux é o driver para as placas zoran incluídas, você só precisa fazer
certifique-se de que está carregado corretamente. Se você tiver uma máquina x64 e um kernel mais recente que
2.6.30 ficaríamos felizes em saber que você pode gravar a partir do cartão baseado em zoran. Eu estou
não soure se essa combinação funcionar.
O driver da placa Matrox Marvel também funciona, mais informações:
Se você compilar as ferramentas em um computador baseado em P6 (PPro, P-II, P-III, P-4, Athlon, Duron)
então nunca tente deixá-los rodar em um computador baseado em P5 (Pentium, Pentium-MMX, K6, K6-x,
Cyrix, Via, Winchip). Você receberá uma “instrução ilegal” e o programa não funcionará. Este
é o mesmo para a CPU mais recente. Se você usar otimizações específicas, esteja ciente delas.
Se lav2yuv despejar o core, uma possível causa é que nenhum suporte de dv foi incluído. Para habilitá-lo
certifique-se de que libdv está instalado no sistema. Isso será necessário se você estiver usando
uma câmera digital (ou conversor analógico para DV, como o Canopus ADVC100 e convertendo o
formato dv avi no formato MPEG.
Inicie o xawtv para ver se consegue uma imagem. Se você quiser usar a reprodução em HW do
streams você tem que iniciar o xawtv (qualquer aplicativo de TV funciona) uma vez para que os streams sejam reproduzidos
de volta. Você também deve verificar as configurações do seu mixer na placa de som. Se você usar v4l2
você deveria dar uma chance ao mplayer para assistir a imagem
Se você compilar as ferramentas em uma plataforma diferente do Linux, nem todas as ferramentas funcionarão.
Mjpegtools em um sistema OS / X, por exemplo, não terá capacidade V4L (video4linux).
Nunca tente parar ou iniciar o aplicativo da TV quando o lavrec estiver em execução. Se você iniciar ou parar o
O aplicativo de TV lavrec irá parar de gravar ou seu computador pode ficar “congelado”. Isto é um
problema de v4l (video4linux).
Este problema é resolvido com v4l2. Se você usar v4l2, você pode gravar o vídeo e parar e
inicie o aplicativo de tv sempre que quiser. Mas v4l2 é atualmente (7 de janeiro de 2003) apenas
suportado para os cartões baseados em zoran (BUZ, DC10, DC10 +, LML33) se você usar o driver CVS
de mjpeg.sf.net marcado com ZORAN_VIDEODEV_2. E este driver só funciona com o
Kernel 2.4.20 e o kernel de desenvolvimento 2.5. *.
Uma última coisa sobre os dados que você obtém antes de começarmos:
Áudio: (Samplerate * Canais * Bitsize) / (8 * 1024)
Qualidade de CD: (44100 amostras / s * 2 canais * 16 bits) / (8 * 1024) = 172,2 kB / s
O 8 * 1024 converte o valor de bit / seg para kByte / seg
Vídeo: (largura * altura * taxa de quadros * qualidade) / (200 * 1024)
PAL MEIO Tamanho: (352 * 288 * 25 * 80) / (200 * 1024) = 990 kB / s
Tamanho PAL COMPLETO: (720 * 576 * 25 * 80) / (200 * 1024) = 4050 kB / s
Tamanho NTSC HALF: (352 * 240 * 30 * 80) / (200 * 1024) = 990 kB / s
Tamanho NTSC COMPLETO: (720 * 480 * 30 * 80) / (200 * 1024) = 4050 kB / s
O 1024 converte os bytes em kBytes. Nem todo cartão pode registrar o tamanho mencionado. o
Buz e Marvel G400, por exemplo, só podem gravar um tamanho de 720x576 ao usar -d 1, o
DC10 registra um tamanho de 384x288 ao usar -d 2.
Quando você adiciona dados de áudio e vídeo, isto é o que o seu disco rígido deve ser capaz de escrever
constantemente transmitindo, caso contrário, você terá perdido quadros.
Se você quiser brincar com o --mjpeg-buffer-size. Lembre-se de que o valor deve ser pelo menos
grande o suficiente para que uma moldura caiba nele. O tamanho de uma moldura é: (largura * altura * qualidade
) / (200 * 1024) = kB Se o buffer for muito pequeno, o cálculo da taxa não corresponde a nenhum
mais e estouros de buffer podem acontecer. O valor máximo é 512kB.
Como o vídeo funciona e a diferença entre os tipos de vídeo são explicados aqui:
Lá você também encontrará como criar imagens estáticas MPEG para VCD / SVCD.
Uma boa descrição de DV (Vídeo Digital) pode ser encontrada aqui:
Alguns Phoenesse we encontrado útil
escrito em inglês:
Vídeo digital e HDTV de Charles Poyton (ISBN 1-55860-792-7)
Compressão de vídeo digital por Peter Symes (ISBN 0-07-142487-3)
Vídeo desmistificado por Keith Jack (ISBN 1-878707-56-6)
escrito em alemão:
Fernsehtechnik von Rudolf Maeusl (ISBN 3-7785-2374-0)
Videotécnico profissional - analógico e digital Fundamentos de U. Schmidt (ISBN
3-540-43974-9)
Digitale Film- und Videotechnik de U. Schmidt (ISBN 3-446-21827-0)
Se você conhece algum outro livro realmente bom sobre isso, escreva-nos!
Gravar vídeos
Lavrec exemplos
A gravação com lavrec tem a seguinte aparência:
> Lavrec -f a -i P -d 2 registro.avi
Deve começar a gravar agora,
-fa
use AVI como formato de saída,
-eu P
use como fonte de entrada o SVHS-In com formato PAL,
-d2
o tamanho das fotos é metade do tamanho (352x288)
registro.avi
nome do arquivo criado.
A gravação é finalizada pressionando Ctrl-C (em teclados alemães: Strg-C). Às vezes usando
-f A em vez de -f a pode ser necessário
Outro exemplo:
> Lavrec -f q -i n -d 1 -q 80 -s -l 80 -R l -U registro.avi
Deve começar a gravar agora,
-fq
use Quicktime como formato de saída,
-no
use Composite-In com formato NTSC,
-d1
gravar fotos em tamanho real (640x480)
-q 80
defina a qualidade para 80% da imagem capturada
-s
use o modo estéreo (mono padrão)
-l 80
definir o nível de gravação para 80% do máximo durante a gravação
-Rl
definir a fonte de gravação para Line-In
-U
Com este lavrec usa a leitura em vez do mmap para gravar isto é necessário se o seu som
cartão não suporta o mmap para gravação.
Configurar o mixer não funciona com todas as placas de som. Se você gravar com 2 diferentes
configurações e ambas as gravações são igualmente altas, você deve configurar o mixer com um mixer
programa. Depois disso, você deve usar o -l -1 opção quando você grava usando lavrec
O tamanho da imagem depende do cartão que você usa. Em tamanho real (-d 1), você obtém estes
tamanhos de imagem: BUZ e LML33: 720x576, o DC10 e DC30: 768x576
Outro exemplo:
> Lavrec -w -f a -i S -d 2 -l -1 registro% 02d.avi
Deve começar a gravar,
-w
Aguarda o início da confirmação do usuário (pressione Enter)
-fa
use AVI como formato de saída,
-é
use a entrada SECAM SVHS (a gravação composta SECAM também é possível: -é)
-d2
o tamanho das fotos é da metade
-eu -1
não toque nas configurações do mixer
registro% 02d.avi
Aqui, o lavrec cria o primeiro arquivo chamado record00.avi após o arquivo atingir um tamanho de
1.6 GB (após cerca de 20 minutos de gravação), ele inicia uma nova sequência chamada record01.avi e
assim por diante até que a gravação seja interrompida ou o disco esteja cheio. Com o lançamento do 1.9.0
A versão mjpegtools é capaz de lidar com arquivos AVI maiores que 2 GB. Então essa opção está presente
para compatibilidade.
Outro exemplo:
> Lavrec -f a -i t -q 80 -d 2 -C europa-oeste: SE20 teste.avi
Deve começar a gravar agora,
-fa
use AVI como formato de saída,
-isto
use a entrada do sintonizador,
-q 80
defina a qualidade para 80% da imagem capturada
-d2
o tamanho das fotos é metade do tamanho (352x288)
-C
escolher os canais de TV, e os correspondentes -it e -iT (fonte de vídeo: sintonizador de TV) podem
atualmente em uso no Marvel G200 / G400 e no Matrox Millenium G200 / G400 com Rainbow
Extensão do corredor (BTTV-Support está em construção). Para obter mais informações sobre como fazer
as partes do sintonizador de TV dessas placas funcionam, consulte o projeto Marvel / Linux em:
Último exemplo:
> Lavrec -f a -i p -g 352x288 -q 80 -s -l 70 -R l --codificação de software teste03.avi
As duas novas opções são -g 352x288, que define o tamanho do vídeo a ser gravado quando
utilização --codificação de software, isso permite a codificação de software das imagens gravadas. Com
esta opção você também pode gravar de um cartão baseado em bttv. A carga do processador está alta. Esse
opção só funciona para placas video4linux genéricas (como a baseada em brooktree-848/878
cartões), não funciona com cartões baseados em Zoran.
Outros gravação dicas
Todos os lavtools aceitam uma descrição de arquivo como arquivo * .avi, então você não precisa nomear cada arquivo
mas isso é uma possibilidade.
Nota: Mais opções são descritas na página do manual, mas com isso você deve ser capaz de obter
iniciado.
Aqui estão algumas dicas para configurações razoáveis. Mude a qualidade para 80% ou mais para -d 2
capturar. Em resolução máxima, apenas 40% parece ser visualmente “perfeito”. -d 2 já é
melhor do que o vídeo VHS (muito *!). Para uma Marvel, você não deve definir a qualidade superior a
50 quando você grava em tamanho real (-d 1). Se você usar configurações mais altas (-q 60), é mais
provavelmente você encontrará problemas. Configurações mais altas resultarão em framedrops. Se
você pretende criar VCDs, então há pouco a ganhar gravando por completo
resolução, pois você precisa reduzir para -d 2 resolução mais tarde de qualquer maneira.
você pode gravar em outros tamanhos além do óbvio -d 1/2/4. Você pode usar combinações onde
você usa o tamanho horizontal pela metade e o tamanho vertical total: -d 21. Isso gravaria para NTSC
em um tamanho de 352x480. Isso ajuda se você deseja criar SVCDs, dimensionando os 352 pixels colocados
a 480 não é tão visível a olho nu como se você usasse a outra combinação -d 12.
Onde você tiver a resolução horizontal total e meia vertical, esta versão terá um
tamanho de 720x288 para NTSC
Alguns INFORMAÇÕES sobre da típico Lavrec saída enquanto gravação
0.06.14: 22 int: 00040 lst: 0 ins: 0 del: 0 ae: 0 td1 = 0.014 td2 = 0.029
A primeira parte mostra a hora em que o lavrec está gravando. interno: o intervalo entre dois quadros.
primeiro: o número de frames perdidos. ins e do: é o número de quadros inseridos e excluídos
para correção de sincronização. ah: número de erros de áudio. td1 e td2 são o tempo de áudio / vídeo
diferença.
(int) quadro intervalo deve ser em torno de 33 (NTSC) ou 40 (PAL / SECAM). Se for muito
diferente, você provavelmente terá uma gravação ruim e / ou muitos quadros perdidos
(primeiro) perdido quadros são ruins e significam que algo não está funcionando muito bem durante
gravação (HD muito lento, uso de CPU muito alto, ...) Tente gravar com uma decimação maior
e possivelmente uma qualidade inferior.
(ins, del) inserido OR excluído quadros deles são normais → sincronizar. Se você perdeu muitos E
quadros inseridos, você está exigindo muito de sua máquina. Use opções menos exigentes ou
tente uma placa de som diferente.
(ae) auditivo erros nunca são bons. Deveria ser 0
(td1, td2) tempo diferençaestá sempre flutuando em torno de 0, a menos que a correção de sincronização esteja desativada
(--synchronization! = 2, 2 é o padrão).
Notas sobre ”Entrelaçar campo ordem - o que pode go Wrongs e como para fixo isto"
Em primeiro lugar, o que significa que a ordem dos campos entrelaçados está errada?
A cadeia de processamento de imagem mjpegtools é orientada por quadro. Uma vez que é material de vídeo que
é capturado cada quadro composto por um campo superior (as linhas 0, 2, 4 e assim) e um
campo inferior (o 1º, 3º, 5º e assim por diante).
Existem três coisas ruins que podem acontecer com os campos
Este é realmente um problema apenas para filmes em vídeo PAL, onde cada quadro de filme é enviado como um
par de campos. Estes podem ser enviados primeiro para o campo superior ou inferior e, infelizmente, nem sempre é o
mesmo, embora embaixo primeiro pareça ser normal. Se você capturar com a ordem de campo errada
(você começa a capturar cada quadro com uma parte inferior em vez de superior ou vice-versa) os quadros
do filme são divididos * entre * os quadros no stream. Reproduzido em uma TV onde cada
campo é exibido por conta própria, isso é inofensivo. A sequência de campos reproduzidos é
exatamente o mesmo que a seqüência de transmissão dos campos. Infelizmente, reproduzindo em um
Monitor de computador onde ambos os campos de um quadro aparecem ao mesmo tempo parece * terrível * porque
cada quadro está efetivamente misturando dois momentos com 1/25 de segundo de diferença no tempo.
Os dois campos podem simplesmente ser trocados de alguma forma para que o topo seja tratado como o fundo e o fundo
tratar como superior. O resultado é trepidação e “corte”. Isso ocasionalmente parece acontecer devido
a falhas de hardware na placa de captura.
Em algum lugar na captura / processamento do * pedido * no tempo dos dois campos em cada quadro pode
ser rotulado incorretamente de alguma forma. Isso não é bom, pois significa que quando a reprodução eventualmente leva
colocar um campo contendo uma imagem de amostra anterior no tempo vem depois de uma imagem de amostra
mais tarde. Efeitos estranhos de “trepidação” são os resultados.
Como posso reconhecer se tenho um desses problemas?
Isso pode ser difícil de detectar. Se você tiver imagens trêmulas misteriosamente durante a reprodução, tente
codificar um snippet com a ordem de campo reversa forçada (veja abaixo). Se as coisas te melhorarem
saiba qual era o problema e qual é a solução!
Os dois campos podem simplesmente ser trocados de alguma forma para que o topo seja tratado como o fundo e o fundo
tratar como superior. O resultado é trepidação e “corte”. Isso ocasionalmente parece acontecer devido
a falhas de hardware na placa de captura. Esse problema é parecido com este:
Problema de entrelaçamento
Em algum lugar na captura / processamento do * pedido * no tempo dos dois campos em cada quadro pode
ser rotulado incorretamente de alguma forma. Isso não é bom, pois significa que quando a reprodução eventualmente leva
colocar um campo contendo uma imagem de amostra anterior no tempo vem depois de uma imagem de amostra
mais tarde. O resultado são efeitos de “trepidação” estranhos.
Se você usar glav ou lavplay, certifique-se de usar também o -F / - piscar opção. Isto
desativa algumas coisas que melhoram a imagem.
Se você quiser ver o vídeo, você também pode usar o yuvplay:
> lav2yuv │ ... │ yuvplay
Se houver um problema de ordem de campo, você deve vê-lo com yuvplay.
Como você pode consertar isso?
Para consertar este, os campos precisam ser “deslocados” através dos frames. Use yuvcorrect's -T
BOTT_FORWARD / TOP_FORWARD para mudar a maneira como os campos são alocados aos quadros. Você pode descobrir
a ordem de campo atual para um arquivo MJPEG observando as primeiras linhas de depuração
saída de: > lav2yuv -v 2 o_mjpeg_file > / dev / null Ou regravar a troca -f a for -F
A ou vice-versa.
Isso também não é tão ruim. Use uma ferramenta que simplesmente troca os campos superior e inferior por segundo
Tempo. yuvcorrect pode fazer isso usando o -T LINE_SWITCH.
É fácil de consertar. Diga a uma ferramenta em algum lugar para renomear os campos ou simplesmente diga ao
jogador para reproduzir na ordem trocada (o último pode ser feito "indiretamente", dizendo
mpeg2enc ao codificar para reverso da bandeira (-z b│t) que diz ao decodificador qual campo
ordem de usar.
In ordem para determinar exatamente o que tipo of entrelaçamento problema Você ter, Você necessidade para
extrato alguns quadros da da gravado transmitir canais e levar a olhar at eles:
> mkdir pnm
> lav2yuv -f 40 video.avi │ y4mtoppm │ pnmsplit - pnm / imagem% d.pnm
> rm pnm / imagem? .pnm
> cd pnm
> xv
Primeiro, criamos um diretório onde armazenamos as imagens. O lav2yuv -f 40 grava apenas o
primeiros 40 quadros para saída padrão. O programa y4mtoppm converte os quadros em imagens pnm e o
pnmsplit divide a imagem em dois quadros na imagem para duas imagens individuais. Então nós
remova as 10 primeiras imagens porque o pnmsplit não oferece suporte à numeração% 0xd. Sem um
zero à esquerda do número, os arquivos serão classificados na ordem errada, levando a
reprodução confusa.
Use seu programa gráfico favorito (xv por exemplo) para ver as fotos. Como cada imagem
conter apenas um campo de dois, eles aparecerão dimensionados verticalmente. Se você olhar para o
fotos que você deve ver o filme avançando lentamente.
Se você tem um filme, deve sempre ver 2 fotos quase iguais (porque o
o quadro do filme é dividido em dois campos para transmissão) um após o outro. Você pode observar
isso facilmente se você tiver efeitos de pente ao pausar o filme, porque ambos os campos serão
exibido ao mesmo tempo. As duas fotos que pertencem juntas devem ter um mesmo
número e o seguinte número ímpar. Então, se você der uma olhada nas fotos: 4 e 5 são quase
idênticos, 5 e 6 diferem (têm movimento), 6 e 7 idênticos, 7 e 8 diferem, ....
Para resolver este problema você tem que usar o yuvcorrect's -T BOTT_FORWARD or TOP_FORWARD. Você pode
também tenho o problema de que a ordem dos campos (superior / inferior) ainda está errada. Você pode ter que
use yuvcorrect uma segunda vez com -M LINE_SWITCH, ou use o mpeg2enc -z (b│t) opção.
Para ver se acertou, extraia os frames novamente e reordene-os usando
yuvcorreto:
> lav2yuv -f 40 vídeo.avi │ você está correto -T OPÇÃO │ y4mtoppm │ pmmsplit - pnm / imagem% d.pnm
Onde “OPÇÃO” é o que você acha que corrigirá o problema. Isto é para material convertido
do filme. O material produzido diretamente para a TV é abordado a seguir.
Ei, e os filmes NTSC?
Os filmes são transmitidos em NTSC usando o menu suspenso "3: 2", o que significa que metade dos quadros de captura
contêm campos de 1 quadro de filme e meios-campos de 2 quadros. Para desfazer este efeito para
codificação MPEG eficiente de que você precisa para usar o yuvkineco.
Se você tiver uma fonte entrelaçada como uma câmera de TV, você tem um quadro composto por dois campos
que são registrados em diferentes momentos. Identificar o problema aqui é mais difícil. Vocês
precisa encontrar algo se movendo horizontalmente da esquerda para a direita. Quando você extrai
os campos, a coisa deve se mover em pequenos passos da esquerda para a direita, não um grande
passo para frente, pequeno passo para trás, grande para frente, pequeno para trás ...... Você tem que usar o mesmo
opções mencionadas acima para corrigir o problema.
Não espere que a ordem dos campos seja sempre a mesma (parte superior ou inferior primeiro). Isso pode mudar
entre os canais, entre os filmes, e pode até mudar dentro de um filme. Se isso
mudanças constantes você pode ter que codificar com o mpeg2enc -I 1 ou mesmo -I 2.
Você só pode ter esses problemas se gravar em tamanho real !!!
Criação de vídeos de outras fontes
Aqui estão algumas dicas e descrições de como criar os vídeos de outras fontes, como
imagens e outros tipos de vídeo.
Você também pode estar interessado em dar uma olhada no Transcodificação of existente MPEG-2
seção.
Criar vídeos da imagens
Você pode usar o jpeg2yuv para criar um fluxo do yuv a partir de imagens JPEG separadas. Este stream foi enviado
para stdout, para que possa ser salvo em um arquivo, codificado diretamente em um vídeo MPEG
usando mpeg2enc ou usado para qualquer outra coisa.
Salvar um stream do yuv pode ser feito assim:
> jpeg2yuv -f 25 -I p -j imagem% 05d.jpg > resultado.yuv
Cria o arquivo result.yuv contendo os dados de vídeo yuv com 25 FPS. A opção -f é
usado para definir a taxa de quadros. Observe que a imagem% 05d.jpg significa que os arquivos jpeg são nomeados
image00000.jpg, image00001.jpg e assim por diante. (05 significa cinco dígitos, 04 significa quatro dígitos,
etc.) O -I p é necessário para especificar o entrelaçamento. Você tem que verificar qual tipo você
tenho. Se você não tiver entrelaçamento, escolha p para progressivo
Se você deseja codificar um vídeo mpeg diretamente de imagens jpeg sem salvar um
tipo de arquivo de vídeo:
> jpeg2yuv -f 25 -I p -j imagem% 05d.jpg │ mpeg2enc -o arquivo mpeg.m1v
Faz o mesmo que acima, mas salva um vídeo mpeg em vez de um vídeo yuv. Veja mpeg2enc
seção para detalhes sobre como usar mpeg2enc.
Você também pode usar yuvscaler entre jpeg2yuv e mpeg2enc. Se você deseja criar um SVCD
de suas imagens de origem:
> jpeg2yuv -f 25 -I p -j imagem% 05d.jpg │ yuvscaler -O SVCD │ mpeg2enc -f 4 -o vídeo.m2v
Você pode usar a opção -b para definir o número da imagem com a qual começar. O número de
as imagens a serem processadas podem ser especificadas com o número -n. Por exemplo, se o seu primeiro
a imagem é image01.jpg em vez de image00.jpg e você deseja que apenas 60 imagens sejam processadas
Tipo:
> jpeg2yuv -b 1 -f 25 -I p -n 60 -j imagem * .jpg │ yuv2lav -o stream_without_sound.avi
Adicionando o som ao stream e:
> lavaddwav stream_without_sound.avi som.wav stream_with_sound.avi
Para entrada de ppm, há o utilitário ppmtoy4m. Há uma página de manual para ppmtoy4m que deveria ser
consultado para informações adicionais.
Para criar um vídeo MPEG, tente o seguinte:
> gato * .ppm │ ppmtoy4m -o 75 -n 60 -F 25:1 │ mpeg2enc -o saída.m1v
cat cada arquivo * .ppm para ppmtoy4m. Lá, os primeiros 75 quadros (fotos) são ignorados e os próximos
60 são codificados por mpeg2enc para output.m1v. Você pode executá-lo sem as opções -o e -n. o
As opções -F definem a taxa de quadros, o padrão é NTSC (30000: 1001), para PAL você deve usar -F
25: 1.
Outros formatos de imagem também podem ser usados se houver um conversor para ppm.
> ls * .tga │ xargs -n1 tgatoppm │ ppmtoy4m │ yuvplay
Uma lista de nomes de arquivos (ls * .tga) é dada a xargs que executa o tgatoppm com um (-n
1) argumento por chamada e alimenta a saída em ppmtoy4m. Desta vez, o vídeo é apenas
mostrado na tela. O xargs só é necessário se o conversor (tgatoppm) só puder operar
em uma única imagem por vez.
Se você deseja usar a ferramenta de 'conversão' do ImageMagick (um canivete suíço), tente:
> converter * .gif ppm: - │ ppmtoy4m │ yuvplay
Isso significa pegar todas as imagens '.jpg' no diretório, converter para o formato PPM, canalizar para stdout,
em seguida, para ppmtoy4m para conversão em y4m ....
decodificação córregos com mplayer
Decodificar os streams com o mplayer é uma boa maneira de trazer todos os vídeos que o mplayer pode
reproduza algo que você pode editar ou codificar para mpeg com mjpegtools. Este método tem
foi testado com mplayer 1.0rc2 e deve funcionar com versões mais recentes
> mkfifo stream.yuv
> gato stream.yuv │ yuv2lav -o mjpeg_wo.avi &
> mplayer -sem som -noframedrop -vo yuv4mpeg qualquer arquivo.mpg
> mplayer -vo nulo -ao pcm: file = anyfile.wav qualquer arquivo.mpg
Agora você tem um exemplo de um AVI codificado em mjpeg sem som. O som estará em
anyfile.wav. Você pode escolher se deseja adicionar o som ao AVI com lavaddwav e
edite o arquivo antes de codificar.
Você também pode usar em vez de yuv2lav, mpeg2enc ou qualquer outra ferramenta das ferramentas mjpeg,
seu comando também pode ser assim:
> gato stream.yuv │ Yuvdenoise │ yuvscaler -O SVCD │ mpeg2enc -f 4 -o vídeo_svcd.m2v
catar o arquivo wav em mp2enc para codificá-lo para áudio MP2. o -vo yuv4mpeg opção funciona bem
com outros tipos de entrada mencionados na documentação do mplayer.
decodificação MPEG-2 córregos com MPEG2DEC
Você pode decodificar streams mpeg2 com a versão mpeg2dec com patch que cria streams yuv.
Você pode canalizar isso para qualquer outro programa mjpegtools. Ou você usa uma versão MPEG2DEC
diretamente do projeto libmpeg2 e use o modo de saída pgmpipe. Com o pgmtoy4m
programa, você pode converter a saída do pgm de volta para yuv.
Se você se pergunta por que existe uma versão corrigida e o pgmtoy4m. A resposta é que o
patch para a saída do yuv foi enviado várias vezes para os desenvolvedores libmpeg2, mas nunca foi
incluído. Agora temos duas maneiras de contornar esse problema. A decodificação fica assim:
> MPEG2DEC -s -o pgmpipe ANYTS.VOB │ pgmtoy4m -i t -a 10:11 -r 30000:1001 │ mpeg2enc -f 8
novovídeo.m2v
Você pode decodificar o áudio conforme descrito no Transcodificação of existente MPEG-2 Seção.
Outros coisas para sabemos
Se você tiver transmissões de transporte de sua placa DVB ou receptor de satélite, talvez queira
demultiplex ou corte-os. Uma boa ferramenta para isso é PROJETO X disponível a partir de:
Você pode processar os streams depois, como faria com qualquer filme MPEG ou
vídeo de áudio demultiplexado. Então o Transcodificação of existente MPEG-2 seção deste documento
será de interesse. Verificar se a gravação foi bem-sucedida
Você pode usar lavplay ou glav. IMPORTANTE: NUNCA tente executar xawtv e lavplay ou glav com
reprodução de hardware, não funcionará. Para reprodução de software, funciona bem.
> lavplay -p S registro.avi
Você deve ver o vídeo gravado e ouvir o som. Mas a decodificação do vídeo é
feito pela CPU, o que sobrecarrega o sistema. A vantagem deste método
é que você não precisa do xawtv.
A melhor maneira:
> lavplay -p H registro.avi
O vídeo é decodificado e reproduzido pelo hardware. A carga do sistema está muito baixa. Isso vai
reproduza-o na tela usando o hardware em vez da decodificação do software.
Você também pode tentar:
> abundantemente -p C registro.avi
Que irá reproduzi-lo usando o hardware, mas para a saída de vídeo da placa.
> glacê registro.avi
Faz o mesmo que lavplay, mas você tem uma interface gráfica agradável. As opções para glav e lavplay são
quase o mesmo. Sem usar a opção de reprodução de SW.
Usando a reprodução de hardware, um sinal para o Composto e SVHS OUT é gerado para que você possa
veja o filme na sua TV.
> lav2yuv teste.eli │ yuvplay
É outra forma de obter o vídeo sem som. Você pode usar o yuvplay uma vez na codificação
comando. Quando você usa o yuvplay no comando de codificação você vê as mudanças feitas pelos filtros
e dimensionamento. Você também pode usá-lo para depuração em câmera lenta.
OBSERVAÇÃO: Depois de carregar o driver, você deve iniciar o xawtv para configurar algumas coisas lavplay e
glav não, mas eles são necessários para HW-Playback. Não se esqueça de fechar o xawtv !!
NOTE2: Não tente enviar ao glav um lavplay para o fundo, não funcionará corretamente !!!
NOTE3: A reprodução SECAM é agora (12.3.2001) apenas em monocromático, mas a gravação e codificação
é bem feito.
NOTE4:Cabos ruins podem reduzir a qualidade da imagem. Normalmente você não pode ver isso, mas quando
há um texto em que você pode notar uma pequena sombra. Quando você ver isso, você deve mudar o
cabo.
Vinda em breve: Existe uma ferramenta que torna a gravação de vídeos muito simples: Linux Studio. Vocês
pode baixá-lo em:
Edite o vídeo
Editar com glacê
A maioria das tarefas pode ser facilmente realizada pelo glav. Como excluir partes do vídeo, cortar, colar e
copie partes dos vídeos.
descrição do botão glav
As modificações devem ser salvas porque glav não edita o vídeo de forma destrutiva. Esse
significa que o vídeo original é deixado intocado e as modificações são mantidas em um extra
Arquivo "Editar Lista" legível com um editor de texto. Esses arquivos podem ser usados como uma entrada para o
outros programas lavtools, como lav2wav, lav2yuv, lavtrans.
Se você quiser cortar o início e o fim do riacho, marque o início e o
e, e use o botão “selecionar salvar”. O arquivo da lista de edição é então usado como entrada para o
lavtools. Se você quiser dividir um vídeo gravado em algumas partes menores, basta selecionar o
partes e, a seguir, salve cada parte em um arquivo de lista diferente.
Você pode ver todas as mudanças no vídeo e no som AGORA e não precisa recalcular
qualquer coisa.
Se você deseja obter uma versão "destrutiva" do seu vídeo editado, use:
> Lavtrans -o versão_curta.avi -f a editlist.eli
-o
especifica o nome de saída
-fa
especifica o formato de saída (AVI por exemplo)
editlist.eli
é o arquivo de lista onde as modificações são descritas. Você gera o arquivo de lista com
os botões "salvar tudo" ou "selecionar salvar" no glav.
Unificar vídeos
> Lavtrans -o fluxo.qt -f q registro_1.avi registro_2.avi ... record_n.avi
-o
especifica o nome do arquivo de saída
-fq
especifica o formato de saída, quicktime neste caso
Isso geralmente não é necessário. Lembre-se de que há um limite de tamanho de arquivo de 2 GB para 32 bits
sistemas com um glibc mais antigo. Normalmente não é um problema hoje em dia
Separado som
> Lavtrans -o som.wav -f w stream.avi
Cria um arquivo wav com o som do stream.avi Talvez seja necessário se você deseja remover
ruído ou se você deseja convertê-lo para outro formato de som.
Outra maneira de dividir o som é:
> lav2wav editlist.eli > sound.wav
Separado imagens
> mkdir jpg; Lavtrans -o jpg / image% 05d.jpg -f i stream.avi
Primeiro crie o diretório ”jpg”. Em seguida, o lavtrans criará imagens JPG únicas no jpg
diretório do arquivo stream.avi. Os arquivos serão nomeados: image00000.jpg,
imagem00001.jpg ....
As imagens jpg criadas contêm a imagem completa. Mas se você gravou em tamanho real
as imagens são armazenadas entrelaçadas. Normalmente, os visualizadores de imagens mostram apenas o primeiro campo em
o arquivo jpg.
Se você quiser ter a imagem em um único arquivo, você pode usar essa versão
> lav2yuv -f 1 stream.avi │ y4mtoppm -L > arquivo.pnm
Se você quiser dividir os campos em arquivos únicos, use:
> lav2yuv -f 5 ../stream.avi │ y4mtoppm │ pmmsplit - imagem% d.pnm
Talvez seja interessante se você precisar de imagens de amostra e não quiser brincar pegando um
imagem única.
Criar filme transições
Graças ao tubo de lavagem de Philipp Zabel, agora podemos fazer transições simples entre filmes ou
combinar várias camadas de filmes.
Philipp escreveu este COMO FAZER sobre como fazer transições:
Vamos supor uma cena simples: temos dois vídeos de entrada intro.avi e epilogue.mov e
deseja fazer a transição de intro.avi para epilogue.mov com a duração de um segundo (isto é
25 quadros para PAL ou 30 quadros para NTSC).
Intro.avi e epiloque.mov devem ter o mesmo formato (a mesma taxa de quadros e
resolução). Neste exemplo, ambos são arquivos 352x288 PAL. intro.avi contém 250
frames e epilogue.mov tem 1000 frames de comprimento.
Portanto, nosso arquivo de saída conterá:
os primeiros 225 frames de intro.avi
uma transição de 25 quadros contendo os últimos 25 quadros de intro.avi e os primeiros 25 quadros
de epílogo.mov
os últimos 975 frames de epilogue.mov
Poderíamos obter os últimos 25 frames de intro.avi chamando:
> lav2yuv -o 225 -f 25 introdução.avi
-o 255, o deslocamento, diz ao lav2yuv para começar com o quadro # 225 e
-f 25 faz com que ele produza 25 quadros a partir daí.
Outra possibilidade (porque os deslocamentos negativos são contados a partir do final) é:
> lav2yuv -o -25 introdução.avi
E os primeiros 25 quadros de epílogo.mov:
> lav2yuv -f 25 epílogo.mov
-o o padrão é um deslocamento de zero
Mas precisamos combinar os dois fluxos com o tubo de pia. Portanto, a ligação seria:
> flauta ”Lav2yuv -o 255 -f 25 intro.avi ” ”Lav2yuv -f 25 epílogo.mov ”
A saída disso é um fluxo yuv bruto que pode ser alimentado em transist.flt.
transist.flt precisa ser informado sobre a duração da transição e a opacidade de
o segundo fluxo no início e no final da transição:
-o num
opacidade da segunda entrada no início [0-255]
-O num
opacidade da segunda entrada no final [0-255]
-d número
duração da transição em frames
Uma opacidade de 0 significa que o segundo fluxo é totalmente transparente (apenas o fluxo um
visível), em 255 o fluxo dois é totalmente opaco.
Em nosso caso, a chamada correta (transição do stream 1 para o stream 2) seria:
> transit.flt -o 0 -O 255 -d 25
Os parâmetros -s e -n são iguais aos parâmetros -o e -f de lav2yuv e são necessários apenas
se alguém quiser renderizar apenas uma parte da transição por qualquer motivo. Por favor
note que isso afeta apenas os cálculos de ponderação - nenhuma das entradas é realmente
pulado. Se você usar o parâmetro skip (-s 30, por exemplo), você também precisa pular o
primeiros 30 quadros em lav2yuv (-o 30) para obter o resultado esperado. Se você não
entender isso envie um e-mail para os autores ou simplesmente ignore -s e -n. O todo
procedimento será eventualmente automatizado.
Agora queremos compactar o fluxo yuv com yuv2lav:
> yuv2lav -f a -q 80 -o transição.avi
Lê o fluxo do yuv de stdin e gera um arquivo avi (-fa) com quadros JPEG compactados
de qualidade 80.
Agora temos todo o comando para criar uma transição:
> ypipe ”Lav2yuv -o 255 -f 25 intro.avi ” ”Lav2yuv -f 25 epílogo.mov ” │ transit.flt -o 0
-O 255 -d 25 │ yuv2lav -f a -q 80 -o transição.avi
O vídeo resultante pode ser escrito como uma Lista de Edição LAV (um arquivo de texto simples) contendo o
seguintes linhas:
Lista de edição LAV
AMIGO
3
introdução.avi
transição.avi
epílogo.mov
0 0 224
1 0 24
2 25 999
Este arquivo pode ser alimentado em glav ou lavplay, ou você pode canalizá-lo em mpeg2enc com lav2yuv
ou combine tudo em um único arquivo mjpeg com lavtrans ou lav2yuv│yuv2lav.
Converter o stream em vídeos MPEG ou DIVx
Primeiro, há uma descrição geral do processo de codificação e depois há um
descrição detalhada de alguns formatos de saída comumente usados.
Se você quiser uma conversa de um comando para vídeos MPEG, tente lav2mpeg nos scripts
anuário
A codificação com o script lav2mpeg é semelhante a esta para a saída MPEG1:
> lav2mpeg -a 160 -b 2110 -d 320x240 -m mpeg1 -o saída.mpg arquivo.eli
Irá criar um MPEG1 com videobitrate de 2110kBit / sec e audiobitrate de 160 kBit / sec
em uma resolução de 320x240
Ou para a geração de saída MPEG2:
lav2mpeg -o mpeg2 -O saída.mpg arquivo.eli
Irá criar um MPEG2 com taxa de bits padrão na mesma resolução da resolução de entrada
Melhores resultados podem ser alcançados, no entanto, tentando várias opções e descobrir quais
aqueles funcionam melhor para você. Eles são discutidos a seguir.
A criação de filmes MPEG-1 é explicada com mais exemplos e em maiores detalhes
porque a maioria das coisas que podem ser usadas para MPEG-1 também funcionam para a outra saída
formatos
Para a criação de sequências de Stills de VCD / SVCD (-f 6 / -f 7 em mpeg2enc), você deve ver:
Sequências estáticas são necessárias para a criação de menus em VCD / SVCD. A criação de menus é
descrito no doku de vcdimager.
Criar som
Os vídeos MPEG-1 precisam de arquivos de som MPEG-1-Layer2 (MP2). Para vídeos MPEG-2, você pode usar
MPEG-1-Layer2 e MPEG1-Layer3 (MP3). O áudio MP3 não é um formato de áudio oficialmente válido, mas
muitos jogadores de VCD irão reconhecê-lo. O áudio MP3 não é válido para DVDs. Você deve ficar
para MP2 porque muitos dos reprodutores MPEG-2 (DVD Player, por exemplo, geralmente o Windows
As versões também apresentam grandes problemas) não são capazes de reproduzir vídeo MPEG2 e MP3
som.
mp2enc é um codificador de áudio MP2. O codificador do nome da ferramenta também é capaz de produzir um arquivo MP2.
Toolame é muito mais rápido do que o mp2enc, mas o toolame não realiza reamostragem (48000 a 44100
amostras / segundo). Muitos players de hardware reproduzirão SVCDs usando áudio de taxa de 48000. Para MP3
criação Tenho certeza de que você tem um codificador.
Exemplo:
> lav2wav stream.avi │ mp2enc -o som.mp2
Isso cria um arquivo de som MPEG fora do stream.avi com taxa de bits de 224kBit / seg e uma amostra
taxa de 48kHz. Se o seu arquivo de áudio tiver 44.1 kHz, o mp2enc faz uma nova amostragem do áudio para criar um valor de 48 kHz
saída. Se você quiser uma taxa de amostragem de saída de 44.1 kHz, você deve adicionar -r 44100 ao mp2enc
comando
Exemplo
> gato som.wav │ mp2enc -v 2 -V -o som.mp2
Isso cria uma saída compatível com VCD (-V bitrate = 224, estéreo, taxa de amostragem: 44100) de
o arquivo wav.
Com -v 2, o mp2enc é mais detalhado, enquanto a codificação você vê o número de segundos de áudio
já codificado.
Você pode testar a saída com:
> play mpeg som.mp2
OBSERVAÇÃO: plaympeg é um MPEG-1 Player para Linux, você também pode usar outros players. Para áudio
testando você também pode usar mpg123. Para reprodução de áudio e vídeo, há o universal
jogador como VLC mplayer e outros.
Convertendo vídeo
Criação de vídeos MPEG-1 e MPEG-2.
Normalmente, o primeiro vídeo que você cria não é o melhor. Para qualidade / tamanho ideal, você precisa
brincar com a taxa de bits, raio de pesquisa, filtro de ruído .... As opções do mpeg2enc são
descrito na página de manual do mpeg2enc.
Exemplo:
lav2yuv stream.avi stream1.avi │ mpeg2enc -o vídeo.m1v
Isso cria um arquivo de vídeo com a taxa de bits constante padrão de 1152kBit / s. Isto é o
taxa de bits de que você precisa se quiser criar VCDs. Você pode especificar mais arquivos e também usar o
placeholder% nd. Onde n descreve o número. Por padrão, mpeg2enc assume que você deseja
para codificar um vídeo não entrelaçado para Mpeg-1. Se você deseja codificar um vídeo em tamanho real com
o entrelaçamento do comando acima falhará.
Exemplo:
> lav2yuv streami% 02d.avi │ mpeg2enc -b 1500 -r 16 -o vídeo.m1v
mpeg2enc cria um vídeo com uma taxa de bits de 1500kBit / s usa um raio de pesquisa de 16. Isso
significa que, ao tentar encontrar macroblocos de pixels 16 * 16 semelhantes entre os quadros, o codificador
olha até 16 pixels de distância da posição atual de cada bloco. Parece duas vezes mais longe
ao comparar quadros com 1 quadro de distância e assim por diante. Os valores razoáveis são 16 ou 24. O padrão
é 16, portanto, adicionar a opção aqui é inútil. Valores mais baixos (0, 8), melhoram a codificação
velocidade, mas você obtém qualidade inferior (artefatos mais visíveis), enquanto valores mais elevados (24, 32)
melhorar a qualidade à custa da velocidade. Com a descrição do arquivo do stream% 02d.avi
todos os arquivos são processados que correspondem a este padrão com 00, 01 ....
Escala
Usando o yuvscaler, agora também é possível dimensionar o vídeo antes de codificá-lo. Isso pode ser útil
para usuários com placas DC10 ou DC10 + que capturam em -d 1 768x576 ou -d 2 384x288
(PAL / SECAM) ou -d 1 640x480 (NTSC).
Você obtém uma descrição completa de todos os comandos lendo a página de manual ou executando:
> yuvscaler -h
Exemplo:
> lav2yuv stream.avi │ yuvscaler -O VCD │ mpeg2enc -o vídeo.m1v
Isso escalará o fluxo para o tamanho de VCD, que para PAL / SECAM é 352x288 e para NTSC é
352x240. O yuvstream dimensionado é codificado para MPEG-1.
Ele também pode dimensionar SVCD para 480x480 (NTSC) ou 480x576 (PAL / SECAM):
> lav2yuv stream.avi │ yuvscaler -O SVCD -M BICÚBICO │ mpeg2enc -o vídeo.m1v
A palavra-chave de modo (-M) força o yuvscaler a usar os algoritmos bicúbicos de alta qualidade para
redução da escala e não os algoritmos de reamostragem padrão. O aumento de escala é sempre feito usando o
algoritmo bicúbico.
Exemplo:
> lav2yuv stream.avi │ yuvscaler -I USE_450x340 + 20 + 30 -O TAMANHO_320 x 200 │ mpeg2enc -o
vídeo.m1v
Aqui, usamos apenas uma parte da entrada e especificamos uma resolução de saída não padrão.
OBSERVAÇÃO: yuvscaler pode definir uma área ativa e definir tudo o resto para preto usando: -I
ACTIVE_WidthxHeight + WidthOffset + HeightOffset Escala de alta qualidade: y4mscaler
y4mscaler já existe há algum tempo. Mas foi por um longo tempo um extra
ferramenta que você precisava para compilar. Há uma página de manual abrangente explicando todos os detalhes,
também há muitas informações úteis no site:
Uma característica única é que ele é capaz de alterar a subamostragem e os modos Choma. E você
pode escolher os kernels do scaler, dependendo da fonte que pode ajudar muito.
Exemplo:
> gato cru.yuv │ y4mscaler -O inferir = CLIP -O preset = DVD -O sar = PAL_Wide │ mpeg2enc vídeo.m1v
Neste exemplo, y4mscaler pegará o fluxo de entrada e escalonará para o PAL correspondente
Tamanho. A opção sar dizer à escala é para um formato amplo (16: 9). o inferir = clipe opção vai
diz ao y4mscaler que ele pode cortar as barras superior e inferior para redimensioná-las para o resultado
tamanho.
Exemplo:
> MPEG2DEC -o pgmpipe luxo.m2v │ pgmtoy4m -x 420 jpeg -r 25:1 -i t │ y4mscaler -I
sar = 64: 36 -I ativo = 344x476 + 100 + 48 -O preset = DVD │ mpeg2enc -f 8 vídeo.m1v
Este é mais o trabalho para y4mscaler. Temos um formato de fonte MPEG PAL estranho com 544x576
pixels em um formato widescreen 16: 9, que cria barras pretas ao redor do original 4: 3
imagem. Este comando dimensiona a imagem para um tamanho original de 4: 3 e leva apenas o
centro interessante. O SAR é a proporção da amostra perdida em algum lugar, então especificamos
no começo. Então é especificado novamente, então você diz ao y4mscaller o tamanho ativo
da imagem que deve usar para aumentar. A palavra-chave ativa é tratada de forma diferente em
y4mscaler e yuvscaler. O DVD é uma predefinição para o formato de saída desejado. De
parâmetros de fluxo y4mscaler sabe que é um fluxo PAL e os parâmetros de saída. Se
se você quisesse uma saída 16: 9, teria que usar a palavra-chave: DVD_WIDE.
O teste é feito por:
> mplayer vídeo.m1v
OBSERVAÇÃO: Estes são apenas exemplos. Existem mais opções que você pode usar. Você pode usar a maioria deles
juntos para criar vídeos de alta qualidade com a menor taxa de bits possível.
NOTE2:Quanto mais alto você definir o raio de pesquisa, mais tempo levará a conversão. Em geral
quanto mais opções forem usadas, mais tempo a codificação levará.
NOTE3:MPEG-1 não foi projetado para ser um VBR (fluxo de taxa de bits variável) !! Então, se você codificar
com -q 15 mpeg2enc define a taxa de bits máxima -b para 1152. Se quiser um VBR MPEG-1, você tem
para definir -b muito alto (2500).
NOTE4:Talvez você deva dar nomes melhores do que video.mpg. Uma boa ideia é usar as opções
como parte do nome do arquivo (por exemplo: video_b1500_r16_41_21.m1v) Outra possibilidade é
para chamar todos os arquivos de áudio da camada 2 ”.mp2” todos os arquivos de vídeo MPEG-1 ”.m1v” e todos
Arquivos de vídeo MPEG-2 ”.m2v” Fácil de ver o que está acontecendo então. Reserve .mpg para multiplexado
Fluxos MPEG-1/2.
Colocar da córregos juntos
Exemplo:
> complexo som.mp2 vídeo.m1v -o meu_vídeo.m1v
Coloca o stream de sound.mp2 e video.m1v juntos em my_video.mpg
Agora você pode usar seu MPEG player preferido e assisti-lo. Todos os jogadores (gtv por exemplo)
baseado na biblioteca SMPEG funcionam bem para MPEG-1. Outros jogadores (que podem reproduzir MPEG-2 como
bem como filmes MPEG-1) são: xmovie, xine e MPlayer VLC, para citar alguns.
OBSERVAÇÃO: Se você especificou o -S opção para mpeg2enc mplex irá dividir automaticamente o
arquivos se houver no nome de arquivo de saída um% d (semelhante a: -o test% d.mpg) Os arquivos
gerados dessa forma são vapores MPEG independentes e separados!
NOTE2: xine pode ter problemas para buscar vídeos. mplayer tem um problema com
a ”busca para trás / para frente” com fluxos de taxa de bits variável porque vai para a frente no
arquivar a quantidade de dados para um fluxo de taxa de bits constante. Essa quantidade pode ser significativa
mais de 10 segundos ou um minuto (essa é a quantidade de mplayer busca para cada pressionamento de
as setas do teclado). Portanto, não se pergunte se ele procura muito mais tempo para a frente ou para trás do que você
Espero.
Variável taxa de bits multiplexação: Lembre-se de dizer ao mplex que você está codificando VBR (opção -V) como
bem como mpeg2enc (veja os scripts de exemplo). Ele * poderia * ser detectado automaticamente, mas não está funcionando
ainda. Você deve dizer ao mplex um tamanho de buffer de vídeo pelo menos tão grande quanto o que você especificou
para ”mpeg2enc” Números sensíveis para MPEG-1 podem ser uma taxa de bits de teto de 2800Kbps, um
teto de qualidade (piso de quantização) de 6 e um tamanho de buffer de 400K.
Exemplo:
> complexo -V -r 1740 áudio.mp2 video_vbr.m1v -o vbr_stream.mpg
Aqui, multiplexamos um fluxo de taxa de bits variável. mplex é um multiplexador de passagem única, então
não consegue detectar a taxa de bits máxima e temos que especificá-la. A taxa de dados para a saída
stream é: taxa de bits de áudio + bit de vídeo de pico + 1-2% para informações mplex. Se áudio (-b
224) é 224kBit e o vídeo é 1500kBit (codificado com -b 1500 -q 9), então temos 1724 *
1.01 ou cerca de 1740kBit.
Exemplo:
> play mpeg meu_vídeo.mpg
or
> mplayer meu_vídeo.mpg
Criar MPEG-1 VÍDEOS
Para vídeos MPEG-1, você pode usar áudio MP2 e vídeo MPEG-1. Um subconjunto de filmes MPEG-1 são
VCD's. Você pode usar VBR (Variable BitRate) para o vídeo (embora os VCDs sejam quase sempre
usar vídeo CBR), mas o áudio deve ser CBR (Constant BitRate).
MPEG-1 é recomendado para tamanhos de imagem de até 352x288 para PAL e 352x240 para NTSC para
tamanhos maiores MPEG-2 é a melhor escolha. Não há resolução exata onde MPEG-1 é
melhor do que MPEG-2. Só para constar, o MPEG-1 não consegue lidar com fontes entrelaçadas. Se você
o vídeo é entrelaçado, você precisa do MPEG-2 para codificá-lo adequadamente.
Exemplo de criação de áudio MPEG-1
> lav2wav editlist.eli │ mp2enc -r 44100 -o som.mp2
Você pode salvar alguns bits dizendo ao mp2enc para usar uma taxa de bits mais baixa (opção -b) como 160 ou
192 kBit / s. A opção -r 44100 força o mp2enc a gerar um arquivo de áudio de 44.1 kHz.
> lav2wav editlist.eli │ mp2enc -b 128 -m -o som.mp2
Isso cria uma saída mono com uma taxa de bits de 128kBit / seg. A entrada desta vez é
o editlistfile (pode ter qualquer nome) criado com glav, então todas as mudanças que você fez no glav são
diretamente processado e entregue ao mp2enc. Você NÃO precisa criar um stream editado
com lavtrans para convertê-lo corretamente.
Exemplo de criação de vídeo MPEG-1
> lav2yuv editlist.eli │ mpeg2enc -b 2000 -r 24 -q 6 -o vídeo.m1v
mpeg2enc cria um vídeo com uma taxa de bits de 2000kBit / s (ou 2048000Bit / s), mas o sinalizador -q
ativa a taxa de bits variável e um fator de qualidade de 6. Ele usa um raio de pesquisa de 24.
Explicação:quando mpeg2enc é invocado sem o sinalizador 'q', ele cria ”taxa de bits constante”
Fluxos de MPEG. Onde (falando vagamente) a força de compressão (e, portanto, a imagem
qualidade) é ajustada para garantir que, em média, cada quadro de vídeo tenha exatamente o
número especificado de bits. Esses fluxos de taxa de bits constante são necessários para a transmissão e
para hardware de baixo custo, como reprodutores de DVD e VCD que usam hardware de reprodutor de velocidade fixa lenta.
Obviamente, isso é bastante ineficiente, pois significa que as cenas inativas usam bits que podem
melhor ser "gasto" em cenas que mudam rapidamente. Definir o sinalizador 'q' diz ao mpeg2enc para
gerar fluxos de taxa de bits variável. Para tais fluxos, a taxa de bits especificada é simplesmente o
máximo permitido. O parâmetro 'q' especifica o grau mínimo de compressão a ser
aplicado especificando como exatamente as informações da imagem são gravadas. Normalmente 'q' seria
definido para que cenas silenciosas usem menos do que o máximo especificado (cerca de 6 ou 8), mas
as cenas em movimento rápido ainda seriam limitadas pela taxa de bits. Para fins de arquivo, definir um
taxa de bits máxima alta o suficiente para nunca ser alcançada (por exemplo, 10 Mbps) e aq de 2 ou 3 são
escolhas razoáveis.
Exemplo:
> lav2yuv stream.avi │ yuvscaler -I ACTIVE_352x240 + 0 + 24 │ mpeg2enc -b 1152 -r 16 -4 1 -2 1
-o vídeo.m1v
Normalmente, há na parte superior e na parte inferior uma borda quase preta e muita largura de banda
é usado para algo de que você não gosta. A opção yuvscaler -I ACTIVE define tudo que
não está na área descrita para preto, mas o tamanho da imagem (352x288) não foi alterado. Então você
têm uma borda preta real, o codificador usa apenas alguns bits para codificá-los. Você ainda é
compatível com o formato do VCD neste exemplo. Para determinar a extração da janela ativa
um quadro para o formato jpeg:
> Lavtrans -f i -i 100 -o quadro.jpg teste.avi
Em seguida, use seu programa de exibição gráfico favorito para determinar o tamanho ativo. O -4 1 e
As opções -2 1 melhoram a qualidade em cerca de 10%, mas a conversão é mais lenta.
No tamanho de 352x288 (tamanho 1/2 PAL criado ao usar a opção -d 2 durante a gravação)
a taxa de bits necessária é / deve estar entre 1000 - 1500 kBit / s. Para NTSC, deve ser sobre o
mesmo, porque a imagem é menor, mas há mais quadros por segundo do que em PAL.
De qualquer forma, o principal fator é a qualidade do original e o grau de filtragem. Pobre
o material não filtrado de qualidade normalmente precisa de uma taxa mais alta para evitar artefatos visíveis. Se
você deseja reduzir a taxa de bits sem artefatos irritantes ao compactar o material de transmissão
você deve tentar um (ou mais) dos filtros de ruído.
Exemplo:
> lav2yuv stream.avi │ mpeg2enc -b 1500 -n s -g 6 -G 20 -P -o vídeo.m1v
Aqui, o stream.avi será codificado com:
-b 1500
uma taxa de bits de 1500kBit / s
-ns
a norma de entrada de vídeo é forçada a SECAM
-P
Isso garante que 2 quadros B apareçam entre os quadros I / P adjacentes. Vários MPEG-1 comuns
decodificadores não podem lidar com fluxos que não tenham 2 quadros B entre os quadros I / P
-g 6 -G 20
o codificador pode alterar dinamicamente o tamanho do grupo de imagens para refletir as mudanças de cena.
Isso é feito definindo um tamanho máximo de GOP (sinalizador -G) maior do que o mínimo (sinalizador -g).
Para VCDs, os valores sensíveis podem ser no mínimo 9 e no máximo 15. Para SVCD 9 e 15
seriam bons valores. Se você quiser apenas reproduzi-lo no SW player, você pode usar outros min-
valores máximos.
Exemplo:
> lav2yuv stream * .avi │ mpeg2enc -b 1500 -r 16 -4 1 -2 1 -S 630 -B 260 -o
video_n1_1500_r16_41_21_S630_B240.m1v
lav2yuv processa todos os arquivos de fluxo. Em seguida, o mpeg2enc recebe algumas opções que tornam o
o fluxo codificado parece melhor. Usando -S 630 significa que mpeg2enc marca o fluxo de modo que mplex
gera um novo stream a cada 630 MB. Uma coisa importante é o uso do -B opção que
especifica a taxa de bits de não vídeo (informações de áudio e mplex). o -B valor de 260 deve
estar bem para áudio com informações de 224kBit e mplex. Para mais informações, dê uma olhada
nos scripts de codificação no diretório de scripts.
Exemplo de multiplexação MPEG-1
Exemplo:
> mplex som.mp2 vídeo.m1v -o meu_vídeo.mpg
Coloca o stream sound.mp2 e video.m1v juntos em my_video.mpg. Só funciona isso
fácil se você tiver CBR (a opção -q não foi usada com mpeg2enc).
Exemplo:
complexo -V -r 1740 áudio.mp2 video_vbr.m1v -o vbr_stream.mpg
Aqui, multiplexamos um fluxo de taxa de bits variável. mplex agora é um multiplexador de passagem única, então
não consegue detectar a taxa de bits máxima e temos que especificá-la. A taxa de dados para a saída
stream é: auditivo taxa de bits + pico taxa de bits de vídeo + 1-2% for complexo INFORMAÇÕES. Se áudio (-b
224) tem 224kBit, o vídeo tem 1500kBit (foi codificado com -b 1500 -q 9) então temos 1724 *
1.01 ou cerca de 1740kBit.
Criar MPEG-2 VÍDEOS
MPEG-2 é recomendado para fontes com uma imagem maior que 352x240 para NTSC e 352x288
para PAL. O MPEG-2 também pode lidar com fontes entrelaçadas, como a gravação total da TV
resolução.
O MPEG-2 permite o uso de som MPEG da camada 3 (mp3). Então você pode usar o seu
mp3encoder para a criação do som. No entanto, o áudio MP3 não é válido para DVDs. Isto
é melhor usar áudio MP2 (Camada 2). O áudio também pode ser um fluxo VBR.
MPEG-2 é geralmente um fluxo VBR. A criação de MPEG-2 com otimização requer muita CPU
potência. Um filme com resolução dupla NÃO é 4 vezes maior do que um fluxo MPEG-1.
Dependendo das configurações de qualidade, será cerca de 1.5 a 3 vezes maior do que o
Fluxo MPEG-1 em sua resolução mais baixa. Exemplo de criação de áudio MPEG-2
> lav2wav editlist.eli │ mp2enc -o som.mp2
Você pode salvar alguns bits dizendo ao mp2enc para usar uma taxa de bits mais baixa (opção -b) como 160 ou
192 kBit / s. Você pode querer adicionar -r 44100 para que mpeg2enc gere amostragem de 44.1 kHz
taxa de áudio. Espero não precisar explicar o uso de um codificador de MP3. Mas voce devia
não use todas as opções sofisticadas que estão disponíveis. Exemplo de criação de vídeo MPEG-2
> lav2yuv editlist.eli │ mpeg2enc -f 3 -b 3000 -q 9 -o vídeo.m2v
Um exemplo muito simples para vídeo MPEG-2. A opção mais importante é -f 3. Isso indica
mpeg2enc que deve criar um fluxo MPEG-2. Por ser um MPEG-2 genérico, você deve
use as opções de taxa de bits -b. E deve usar a opção -q porque você geralmente quer um espaço
salvando fluxo VBR. Ao usar streams VBR a opção -b diz ao mpeg2enc a taxa de bits máxima
que pode ser usado. A opção -q diz ao mpeg2enc que qualidade os streams devem ter. o
a taxa de bits tem um limite superior do valor especificado por -b.
> lav2yuv editlist.eli │ mpeg2enc -f 3 -4 1 -2 1 -q7 -b 4500 -V 300 -P -g 6 -G 18 -I 1 -o
vídeo.m2v
Isso irá gerar um fluxo MPEG-2 de maior qualidade porque as opções -4 1 e -2 1 foram
usado. Com -b 4500 -q 7, você informa ao mpeg2enc a taxa de bits máxima e o fator de qualidade. -V
é o tamanho do buffer de vídeo usado para decodificar o stream. Para a reprodução de SW pode ser muito
superior ao padrão. GOP dinâmico é definido com -g e -G. Um tamanho de GOP maior pode ajudar
reduzir a taxa de bits necessária para uma determinada qualidade, mas tamanhos muito grandes podem introduzir
artefatos devido a erros de arredondamento acumulados de DCT / iDCT. A opção -P também garante que 2
Os quadros B aparecem entre os quadros I / P adjacentes. A opção -I 1 diz ao mpeg2enc que o
a fonte é um material entrelaçado como vídeos. Há (demorado) movimento entrelaçado
lógica de compensação presente no mpeg2enc. Mpeg2enc usará essa lógica se o tamanho do
os quadros que você codifica são maiores do que o tamanho do VCD para sua norma de TV.
Se você desentrelaçar o filme com yuvdeinterlace você deve dizer ao mpeg2enc que ele faz
não precisa fazer estimativa de movimento para material entrelaçado. Você deve usar a opção -I 0
de mpeg2enc para dizer que os frames já estão desentrelaçados. Isso vai economizar muito tempo
ao codificar. Se você não usar -I 0, não causará problemas, a codificação apenas
levar mais tempo.
Você também pode usar opções de dimensionamento que otimizam (diminuem o ruído) das imagens para que fiquem menores
córregos. Essas opções são explicadas em detalhes nas seções a seguir. Quais valores
deve ser usado para codificação VBR?
A opção -q controla a quantização mínima do fluxo de saída. Quantização
controla a precisão com que as informações da imagem são codificadas. Quanto menor o valor,
melhor a qualidade da imagem. Valores abaixo de 4 são extremos e só devem ser usados se você souber
o que você está fazendo
Normalmente, você deve configurar uma taxa de bits máxima com a opção -b. A tarefa complicada é
defina um valor para a opção -q e a opção -b que produz um bom filme sem usar
muita largura de banda e não introduz muitos artefatos.
Um fator de qualidade deve ser escolhido de forma que a saída mplex da taxa de bits de pico e
a taxa de bits média difere em cerca de 20-25%. Se a diferença for muito pequena (menor que
10%) é provável que você comece a ver artefatos em cenas de movimento intenso. A maioria
a causa comum da taxa média estar muito próxima (ou igual) da taxa máxima está errada
valor para a taxa de bits máxima ou um fator de qualidade muito alto.
Uma combinação que irá produzir mais artefatos do que você pode contar é um SVCD com um máximo
taxa de bits de vídeo de 2500kBit e um fator de qualidade de 1 ou 2. Para SVCD com um limite de vídeo de
2500kBit um fator de qualidade de 7-11 se encaixa muito bem (8 é o padrão). Se você usar filtro
programas ou ter uma fonte muito boa como TV digital, material semelhante a DVD ou renderizado
fotos você pode usar um fator de qualidade de 6 ao criar SVCDs. Se o seu reprodutor de SVCD / DVD
suporta taxas de bits fora do padrão, você pode aumentar a taxa de bits acima do máximo padrão de
2788 kBit / seg (vídeo mais áudio). Ao usar uma taxa de bits mais alta e ação de fator de qualidade
as cenas ficarão muito melhores, mas é claro que o tempo de reprodução do disco será menor.
O mesmo (7-11) fator de qualidade para uma imagem em tamanho real e uma taxa de bits superior de 3500 a 4000
O kBit produzirá poucos artefatos.
Para SVCD / DVD, você pode esperar um resultado como o descrito se a taxa de bits máxima não for
definido muito baixo:
q <= 6 fotos bem nítidas e de boa qualidade
q <= 8 de boa qualidade
q> = 10 qualidade média
q> = 11 não é tão bom
q> = 13 aqui, mesmo as sequências paradas podem parecer em blocos
Codificação de destino de TV (entrelaçado) ou Monitor (progressivo)
O MPEG-2 oferece suporte a dados entrelaçados, além do formato progressivo. Um filme MPEG-2 pode
ser entrelaçado ou progressivo. Depende da fonte (filme ou transmissão) e do
dispositivo de visualização.
Se você codificar um filme, os dois campos devem ser iguais. Desentrelaçar o fluxo com
yuvdeinterlace, ou se você tiver uma fonte de alta qualidade e não precisar usar o denoiser
com yuvcorrect -T NOT_INTERLACED. Defina também a opção mpeg2enc interlace-mode (-I) para 0.
Isso significa que não há entrelaçamento. Nós realmente não precisamos de desentrelaçamento aqui porque
não há movimento entre os campos do quadro. Só precisamos unir os dois campos
em um único quadro progressivo.
Este filme deve ser reproduzido em qualquer dispositivo (TV ou monitor) sem problemas.
Se você tiver uma fonte entrelaçada (transmissão), poderá codificá-la como fluxo entrelaçado. Ou
desentrelaçar o fluxo e codificá-lo como fluxo progressivo. Se você desentrelaçar com
yuvdeinterlace você perderá detalhes. Mas se você planeja reproduzir a transmissão gravada em seu
DVD player e sua TV não seria aconselhável realizar o desentrelaçamento. Se você só quiser
reproduz no monitor (display progressivo) a imagem fica melhor quando reproduzida
de volta se estiver desentrelaçado. Se o player que você usa pode fazer o desentrelaçamento, não importa
se o seu vídeo codificado tiver quadros entrelaçados ou quadros progressivos.
Se você planeja desentrelaçar o fluxo, você só pode fazer isso com yuvdeinterlace e definir o
mpeg2enc -I 0. Se você não deseja desentrelaçar o fluxo, você não precisa definir nenhum
opção especial (não use yuvdeinterlace e mpeg2enc -I 0)
Se você gosta de pausar o fluxo e olhar para a imagem estática, você deve desentrelaçar. Porque então
a imagem fica sem cintilação durante a pausa.
Se você tem um filme (progressivo) com partes de uma transmissão (entrelaçadas) misturadas
(como em um documentário onde algumas partes de um locutor são gravadas entrelaçadas e outras
as partes são filmadas), você deve escolher entre boas sequências de filme com imagens estáticas médias
ou sequências de filme de aparência média com boas imagens estáticas.
Para um bom filme com fotos médias, não desentrelaque. Para sequências de filme médias com
boas fotos e depois desentrelaçar (usando yuvdeinterlace e mpeg2enc -I 0). Multiplexação MPEG-2
exemplo
> complexo -f 3 -b 300 -r 4750 -V áudio.mp3 vídeo.m2v -o final.mpg
Agora, os dois fluxos (um áudio mp3 e um vídeo MPEG2) são multiplexados em um único fluxo
(final.mpg). Você tem que usar o -f 3 opção para dizer ao mplex o formato de saída. Você também
tem que adicionar o -b opção de tamanho dos buffers do decodificador com o mesmo valor usado ao codificar o
vídeo. -r é essa taxa de vídeo + áudio + 1-2% de informações mplex.
A -Vopção informa que sua fonte para mplexing é um fluxo VBR. Se você não usar isso
a opção mplex cria algo como um fluxo CBR com a taxa de bits que você disse com
da -r opção. Esses streams geralmente ficam GRANDES.
Criar Vídeo CDs (VCD)
VCD é uma versão restrita de vídeo MPEG-1. O formato VCD foi definido pela Philips. O objetivo
era usar uma unidade de CD de velocidade única e outro hardware barato (não flexível) para ter um
HW-Player. Por isso, existem limitações para vídeo e áudio usados para fazer um VCD.
A taxa de bits para vídeo é 1152kBit e áudio MP224 de 2kBit / seg. Você não tem permissão para usar
a opção -q, tamanhos de GOP dinâmicos e o buffer de vídeo são limitados a 46kB. O tamanho da imagem
está limitado a 352x240 para NTSC e a 352x288 para PAL.
Se você não tem um reprodutor de VCD (apenas) e planeja usar o seu reprodutor de DVD, então é bastante
possível que o DVD player seja flexível o suficiente para permitir taxas de bits mais altas, GOP dinâmico
tamanhos, buffer de vídeo maior e assim por diante. Exemplo de criação de áudio de VCD
> lav2wav stream.avi │ mp2enc -V -o som.mp2
-V forçar saída compatível com VCD 2.0. Lá, a taxa de amostragem de áudio é fixada em 44.1 kHz. E
você pode escolher a taxa de bits de áudio para áudio mono como 64, 96 ou 192kBit / seg. Se você tem
áudio estéreo você pode escolher 128, 192, 224 ou 384kBit / seg. Para jogadores de hardware, você
deve se limitar a 44.1 224kBps da camada estéreo 2 Audio.VCD Exemplo de criação de vídeo
> lav2yuv stream.avi │ yuvscaler -O VCD │ mpeg2enc -f 1 -r 16 -o vídeo.mpg
Para saída compatível com VCD, -f 1 define todas as opções em mpeg2enc conforme necessário. Parece que
muitos players de VCD (Avex, por exemplo) não são capazes de reproduzir streams MPEG codificados
com um raio de pesquisa maior que 16, portanto, não use a opção -r para substituir o padrão
de 16.
> lav2yuv streams.eli │ mpeg2enc -f 1 -4 1 -2 1 -S 630 -B 260 -P -o vídeo.m1v
utilização '-S 630 ' significa que mpeg2enc marca o fluxo de modo que mplex gere um novo fluxo
a cada 630 MB. Uma coisa importante é o uso do -B opção que especifica o não-vídeo
(informações de áudio e mplex) taxa de bits. O valor -B de 260 deve ser adequado para áudio com
Informações de 224kBit e mplex. Para obter mais informações, dê uma olhada nos scripts de codificação
no diretório de scripts. Os streams multiplexados devem caber facilmente em um CD de 650 MB.
O valor padrão (-B) é 700 MB para o vídeo. mpeg2enc marca automaticamente todas as transmissões
nesse tamanho se a opção -B não for usada para definir um valor diferente. Se você tem um CD
onde você pode escrever mais dados (talvez até 800 MB), você deve definir a opção -S ou
caso contrário, o mpeg2enc marcará o fluxo em 700 MB e o mplex dividirá o fluxo ali.
O que quase certamente não é o que você deseja.
Exemplo de multiplexação de VCD
> complexo -f 1 som.mp2 vídeo.mpg -o vcd_out.mpg
A opção -f 1 ativa um monte de coisas estranhas que de outra forma não teriam lugar em um respeitável
multiplexer! Criando o CD
Os fluxos multiplexados devem ser convertidos para um VCD compatível. Isso é feito por
vcdimager
> vcdimager teste de vídeo.mpg
Cria um videocd.bin, o arquivo de dados e um videocd.cue que é usado como arquivo de controle para
cdrdão.
Você usa cdrdao para gravar a imagem. Cdrdao é outro excelente projeto do Sourceforge que é
encontrado em: Notas
Para a codificação MPEG-1, um programa típico (45 minutos de duração) ou um filme de 90 minutos ímpares de um
transmissão analógica, uma taxa de bits constante de cerca de 1800 kBit / seg deve ser ideal. o
os arquivos resultantes têm cerca de 700M por 45 minutos, o que se encaixa perfeitamente como dados XA MODE2 brutos
faixa em um CD-R. Para fontes digitais puras (fluxos de DTV ou DVD e semelhantes), o VCD 1152 funciona
bem.
Nota: Se você codificar VBR MPEG-1 (-q), lembre-se de que o hardware provavelmente não foi projetado para fazer
a reprodução porque não está nas especificações. Se funcionar, fique muito feliz. Eu tenho
notei que ajuda quando você tem um fluxo MPEG-1 para informar ao vcdimager que é um SVCD.
vcdimager reclama (mas apenas com um aviso e não um erro fatal), mas você deve ser capaz
para queimá-lo. Isso poderia convencer o jogador a usar rotinas diferentes em seu firmware e
reproduzi-lo corretamente, mas não há garantia disso. Armazenando MPEGs
Se você gravar os dados como faixas de modo 2 XA, poderá ajustar consideravelmente mais em um CD (no
despesas de correção / detecção de erros). Você pode usar o vcdimager para fazer isso e o vcdxrip (parte
do pacote vcdimager) para extrair (”ripar”) os arquivos resultantes. Para melhor qualidade lá
são SVCD e XVCD e DVD.
Atualmente, o SVCD é totalmente compatível com um formato predefinido em mplex e ferramentas para criar
discos. Streams MPEG que podem ser reproduzidos por hardware e software de reprodutor de DVD podem prontamente
produzido usando mpeg2enc / mplex
Se o seu player não suporta SVCD, você pode descobrir que ele pode lidar com fluxos de VCD que tenham
muito mais altas do que as taxas de bits padrão. Freqüentemente, é possível até 2500kBit / s. o
Diversas marcas de reprodutores de DVD também podem reproduzir discos SVCD e VCD fora das especificações. Com
taxas de bits mais altas e material de origem de boa qualidade, vale a pena tentar o sinalizador -h do mpeg2enc
que produzem um fluxo tão nítido quanto os limites do padrão VCD permitem.
No entanto, se o seu player suportar e você tiver paciência para a codificação mais longa
times SVCD é uma alternativa muito melhor. Usando um formato SVCD de MPEG mais eficiente, mais do que
dobra a resolução do VCD ao mesmo tempo que produz arquivos com menos de duas vezes o tamanho.
Criar SVCD
O Super Video CD (SVCD) é um aprimoramento do Video CD desenvolvido por um chinês
comitê de fabricantes e pesquisadores apoiado pelo governo. A especificação final de SVCD era
anunciado em setembro de 1998. Uma boa explicação do formato SVCD da Philips pode ser
encontrado aqui:.
Grave na resolução total da TV (significa: -d 1 para PAL é 720x576). A resolução é para
NTSC é 480x480 de PAL 480x576, então você sabe por que deve gravar em tamanho real. Áudio VCD
Exemplo de criação
> lav2wav stream.avi │ mp2enc -V -e -o som.mp2
As especificações SVCD permitem uma escolha muito mais ampla de taxas de áudio, não é necessário
use 224 kBit / s. Qualquer taxa de áudio entre 32 e 384 kBit / s é permitida. O áudio pode
ser VBR (Taxa de bits variável). O -e ativa a proteção de erro CRC para o áudio. O CRC
deve ser habilitado para ser compatível com o padrão SVCD, mas parece que a maioria dos jogadores não paga
atenção às informações do CRC. As informações CRC precisam de 2 bytes por quadro de áudio
A fórmula de comprimento de quadro aproximado para MPEG-1 layer-II é:
(comprimento do quadro em bytes) = 144 * (taxa de bytes) / (taxa de amostragem)
Se você tiver as configurações típicas de VCD, os dados CRC precisam de cerca de 0,27% de todos os dados. No
o pior caso onde você tem um fluxo de Bitrate MONO 32k, os dados CRC precisam de 1,92% .SVCD
Exemplo de criação de vídeo
> lav2yuv stream.avi │ yuvscaler -O SVCD │ mpeg2enc -f 4 -q 7 -I 1 -V 200 -o vídeo.m2v
-f4
define as opções de mpeg2enc para SVCD
-q 7
diga ao mpeg2enc para gerar um fluxo de taxa de bits variável
-Eu 1
diga ao mpeg2enc para assumir que o sinal original é um vídeo entrelaçado de campo, onde o ímpar
filas de pixels são amostradas meio intervalo de quadro após os pares em cada quadro. O -I
A opção 0 (saída progressiva (sem imagens de campo)) também funcionará para PAL
Você pode usar taxas de bits mais baixas, mas os limites padrão de SVCD total taxa de bits (áudio e vídeo)
para 2788800 Bit / s. Portanto, com áudio de 224 Kbps e overhead 2550 já pode ser marginal também
apertado. Uma vez que o formato SVCD permite qualquer taxa de áudio entre 32 e 384 kBit / seg, você pode
economize alguns bits / seg usando 192k de áudio (ou para material não musical 160k).
SVCD suporta taxa de bits variável (VBR), porque MPEG-2 é geralmente VBR, mas com a parte superior
limite de taxa de bits de vídeo de 2500kBit / seg. Com o sinalizador -f 4, o codificador também define GOP dinâmico
com um limite inferior de -g 6 e um limite superior de -G 18. Isso economiza alguns bits / seg e melhora
a qualidade da imagem durante as mudanças de cena. Ao codificar com -f 4, o mpeg2enc ignora o
taxa de bits de vídeo (-b) e opções de raio de pesquisa (-r). Se você usar -f 5, deverá especificar o
taxa de bits e outras opções para mpeg2enc.
Outra possibilidade para filmes em vídeo PAL (estilo europeu 25 frames / 50 campos por segundo)
é:
> lav2yuv stream.avi │ yuvscaler -O SVCD │ mpeg2enc -f 4 -I 0 -V 300 -o vídeo.m2v
Os filmes são gravados em filme a 24 quadros / seg. Para transmissão PAL, o filme é simplesmente mostrado
ligeiramente "muito rápido" a 25 quadros / s (para a dor das pessoas com um tom absoluto
senso de altura). O sinalizador -I 0 desativa os cálculos tediosos necessários para compensar
entrelaçamento de campo fornecendo codificação muito mais rápida.
Infelizmente, os filmes transmitidos em vídeo NTSC (estilo dos EUA 30 quadros / 60 campos seg)
produz uma compressão muito pobre. A amostragem "suspensa" costumava produzir 60 campos por segundo
de um segundo filme de 24 quadros, metade dos quadros em um NTSC * são * entrelaçados em campo.
Não se esqueça das opções -S e -B mencionadas acima. Você quer que o stream caiba em um CD
não é? Exemplo de multiplexação de SVCD
> complexo -f 4 -b 300 -r 2750 som.mp2 vídeo.m2v -o svcd_out.mpg
-f4
diz ao mplex para fazer o mplex de um SVCD
-r 2750
é a taxa de bits de áudio + vídeo calculada + 1-2% da informação multiplex
-b 300
é o buffer disponível no dispositivo de reprodução (o mesmo valor usado para o vídeo
codificação (opção -V do mpeg2enc). SVCD criando o CD
Exemplo:
> vcdimager -t svcd teste de vídeo.mpg
Cria um videocd.bin, o arquivo de dados e um videocd.cue que é usado como arquivo de controle para
cdrdão.
Use cdrdao para gravar a imagem conforme mencionado anteriormente.
OBSERVAÇÃO: Se você quiser construir um VCD / SVCD "personalizado", você precisará usar o mplex -f 2 e -f 5
comuta.
OBSERVAÇÃO: O material de VCD e SVCD pode funcionar em seu HW player ou não. Existem muitos relatórios que
funciona muito bem. Não se preocupe se não funcionar. Nem sou responsável por
CDs inutilizáveis. (”Montanhas-russas”)
Criar DVD
Esta afirmação estava correta alguns anos atrás: Tudo nesta seção é novo. o
limitações que menciono aqui podem não existir na versão atual. Atualmente (dezembro de 2007)
A criação de DVD está funcionando.
Obviamente, você precisa de um gravador de DVD. Eu tinha um Ricoh DVD + RW que funciona e conheço um DVD-
Gravador de RAM capaz de gravar DVD-R. Esses discos também funcionam com um DVD-Player. Agora mais
Os gravadores de DVD são capazes de gravar mídia + e -, então isso não deve ser mais um problema.
Os programas usados para gravação dependem da unidade de gravação de DVD.
Para a criação e escrita dos arquivos VOB, IFO e BUP usamos dvdauthor. Disponível em
Sourceforge (você deve ter adivinhado) .DVD Exemplo de criação de áudio
> lav2wav stream.eli │ mp2enc -o som.mp2
A taxa de amostragem deve ser 48kHz. O mp2enc cria por padrão uma taxa de amostragem de 48 kHz.
Se não for 48kHz, o mp2enc fará uma nova amostragem do áudio para obter a taxa de amostragem. Se o áudio
é gravado a 48 kHz, então nenhuma reamostragem é necessária e o nome de ferramenta pode ser usado para a codificação
(é mais rápido que mp2enc). Exemplo de criação de DVD Video
> lav2yuv stream.eli │ mpeg2enc -f 8 -o vídeo.m2v
-f8
Isso define as opções corretamente para um vídeo MPEG-2 compatível com o DVD
padrão. A taxa de bits máxima é definida para 7500 kBps e o tamanho do buffer de vídeo é definido para
230 KB. O fator de qualidade padrão é definido como 8. mpeg2enc define atualmente não automático
comprimento de sequência como acontece com VCD / SVCD.
As outras opções para obter uma taxa de bits baixa e stream de alta qualidade também podem ser usadas para
substituir as configurações padrão mencionadas acima. Você também pode usar yuvdenoise para aumentar
a qualidade da imagem se os dados de entrada forem ruidosos (de uma fita VHS, por exemplo). Um típico
comando será parecido com este:
lav2yuv moby.eli │ Yuvdenoise │ mpeg2enc -f 8 -q 7 -4 1 -2 1 -P -I 0 -N -o
vídeo_DVD.m2vExemplo de multiplexação de DVD
> complexo -f 8 som.mp2 vídeo.m2v -o meu_dvdlikestream.mpg
-f8
Aqui, mais uma vez, especificamos que queremos um DVD como um fluxo MPEG. mplex não pode fazer todo o
coisas extravagantes permitiam um DVD, mas é perto o suficiente para que os aparelhos de HW-DVD aceitem.
-o
lá especificamos o nome do arquivo de saída. Exemplo de criação de DVD
Este tópico será coberto pela documentação do programa dvdauthor. Para perguntas
consulte Em geral, funcionará assim:
> autor de dvd -o saída/ stream1.mpg stream2.mpg ... meu_dvdlikestream.mpg; autor de dvd -T -o
saída/
Você obterá um diretório com os diretórios AUDIO_TS e VIDEO_TS. Gravando os dados de
o disco para um gravador DVD + -R / + - RW seria feito assim:
Growisofs -Z / dev / scd2 -dvd-vídeo mydvd /
Se você possui uma unidade de DVD + RW / + R, um bom lugar para obter mais informações é:
página. Você também precisa de uma versão dos cdrtools com dvd-vídeo Apoio, suporte. Os cdrtools
1.11a27 é conhecido por funcionar, mas já existem versões mais recentes.
Para outros gravadores, os comandos para gravar um DVD serão diferentes. Você pode conseguir um pouco mais
informações no pacote dvdauthor. Não há garantia de que funcionará !!!
Criar DIVX VÍDEOS
lav2avi.sh
Outra forma de criar DIVX é o programa mencoder que é do projeto mplayer. .
Para obter mais informações sobre o mencoder, leia a ajuda e os documentos do mencoder / mplayer. UMA
a primeira e a segunda passagem fornecem, no final da passagem, dicas para a taxa de bits que podem ser usadas para
codificação para tamanho específico (650 MB, 700 MB e 800 MB). O script lav2avi.sh usa isso
informações se fornecidas (para streams curtos é omitido pelo mencoder). Procure o parâmetro
tamanho preferido no script. Você também pode especificar outros parâmetros usados para codificação com
codificadorParam opção no script. Para uma descrição dos parâmetros utilizáveis, dê uma olhada
no manual do mplayer / mencoder.
O outputfilename é o nome do seu arquivo de entrada (primeira opção), mas com a extensão
avi. Se o tamanho do arquivo for menor do que o especificado por tamanho preferido é porque a fonte
era de muito alta qualidade (sem ruído) e a taxa de bits especificada era maior do que o necessário.
Você geralmente obtém 700 MB para filme de 1.5 horas com metade do tamanho da imagem com taxa de bits em torno de 900 que
significa para divx de boa qualidade (assumindo material de origem de boa qualidade, é claro).
O script faz uma codificação de 3 etapas:
1ª etapa - codificação de áudio
2ª etapa - primeira passagem de vídeo
3ª etapa - segunda passagem de vídeo
A documentação do mplayer / mencoder desaprova o uso do método de codificação de 3 passagens (ele
pode causar problemas de sincronização A / V) e recomenda o uso do método de 2 passagens. o
A documentação do mencoder / mplayer é extensa e tem muitas dicas úteis (e uma taxa de bits
calculadora no diretório TOOLS /).
Para codificação, use o codec rápido ffmpeg (lavc). Dá bons resultados junto com alto
Boa performance. Para codificação de áudio, mp3 é usado. Para codificação de todas as partes, ele usa unix
tubos. Isso significa que você NÃO precisa de espaço adicional em seu disco rígido, onde todos os glav
as manipulações serão feitas. Para codificação de áudio, o script usa uma fila FIFO.
Se você quiser ajustar o script para suas próprias necessidades, use estas dicas:
A saída da 1ª etapa é um arquivo chamado frameno.avi com áudio codificado
2ª etapa é usar frameno.avi e a saída é um arquivo de texto chamado lavc_stats.txt com tempo
notícia
3º passo é usar frameno.avi e lavc_stats.txt para codificar o fluxo para a saída
lima movie2.avi
Se você quiser alterar apenas a taxa de bits do vídeo, mantenha o arquivo frameno.avi comente a 1ª etapa
codificação e repetição da 2ª e 3ª etapas. Não se esqueça de remover a linha onde o
frameno.avi é removido.
Otimizando o stream
O uso de filtros ajuda a aumentar a qualidade da imagem de fluxos de vídeo com taxa de bits constante (CBR).
Com o vídeo VBR (taxa de bits variável), o tamanho do arquivo é reduzido.
Exemplo:
> lav2yuv stream.avi │ filtro yuvmedian │ mpeg2enc -o vídeo.m1v
Aqui, o programa yuvmedianfilter é usado para melhorar a imagem. Isso remove um pouco de baixo
ruído de frequência nas imagens. Também suaviza um pouco a imagem. É preciso um centro
ponteiro e calcula a média dos pixels em torno dele que estão dentro do limite especificado. Isto
em seguida, substitui o pixel central por este novo valor. Você também pode usar o -r (raio)
opção para outro raio de pesquisa.
OBSERVAÇÃO: um raio maior que o valor padrão de 2 é terrivelmente lento!
yuvmedianfilter tem configurações separadas para luma e croma. Você pode controlar a pesquisa
raio e o limite de disparo independentemente. Se você usar um limite de 0, então
a filtragem está desabilitada (-t 0 desabilita a filtragem de luma, -T 0 desabilita a filtragem de croma).
> lav2yuv stream.avi │ filtro yuvmedian -r 3 -t 4 -T 0 │ mpeg2enc -o vídeo.m1v
Este exemplo usa um raio de pesquisa de 3 pixels para o luma, um limite de 4 (o padrão
é 2), e desativa a filtragem para os componentes de croma. Às vezes, dependendo do
material de origem, a filtragem média do croma pode causar uma ligeira mudança de cor em direção
verde. Filtrar no componente luma (desativando a filtragem de croma) é a solução
para esse problema.
Exemplo:
> lav2yuv stream.avi │ Yuvdenoise │ mpeg2enc -o vídeo.m1v
Agora estamos usando yuvdenoise para melhorar a imagem. O filtro reduz principalmente a cor e
luminância-ruído e cintilação devido a erros de fase, mas também é eficaz na remoção
manchas.
yuvdenoise denoises entrelaçados se a entrada for entrelaçada. Você pode, é claro, mudar o
limite de denoiser (-g / t). Criar uma borda preta pode diminuir a taxa de bits do codificado
stream porque as áreas totalmente pretas se comprimem muito melhor do que o ruído (captura do analógico
fontes como VHS e 8mm geralmente têm várias linhas no momento e no fundo que são
muito barulhento). Para isso, você pode usar o scaler.
yuvdenoise usa uma abordagem diferente para filtrar o ruído. Mais informações sobre como
yuvdenoise funciona, bem como as descrições de suas opções podem ser encontradas na página de manual.
Se você tiver uma fonte de alta qualidade, deve diminuir o filtro para níveis como este: -g
0,255,255 -t 2,2,2. Você também pode usar o mpeg2enc -h / - keep-hf opção. Essa opção
diz ao mpeg2enc para manter o máximo de informações de alta frequência possível. Usando -h irá
aumentar bastante a taxa de bits (tamanho do arquivo). Se a taxa de bits estiver muito próxima do máximo (defina
com -b) o codificador terá que diminuir a qualidade para evitar exceder o máximo
taxa de bits.
Um filtro embutido no mpeg2enc é a opção -N / - reduce-HF. Esta opção não é realmente
filtrar no sentido usual. Em vez disso, muda exatamente como as informações de alta frequência
está codificado. Freqüentemente, a alta frequência é ruído. Você também tem altas frequências em nítidas
fronteiras ou transições. A opção -N pode ter valores entre 0.0 e 2.0, onde 0.0 significa
nada (desativa o aumento do quantizador de alta frequência) e 2.0 dá o máximo
aumento de quantização. O valor a ser usado depende da qualidade de saída desejada e do tamanho do arquivo.
Valores de -N menores que 0.5 são muito sutis, enquanto um valor de 1.0 alcançará um bom
equilíbrio entre a redução da taxa de bits e a qualidade da saída. Usar valores -N acima de 1.5 irá
reduzem visivelmente a nitidez da imagem de saída e normalmente são usados apenas para
fontes de qualidade (fitas VHS, por exemplo).
Usar a capacidade do yuvmedianfilter de filtrar apenas o croma (-T) é moderadamente eficaz
na redução do ruído em cenas escuras sem suavizar a imagem durante o normal (mais claro)
cenas. A filtragem mediana do luma (-t) produzirá uma taxa de bits mais baixa, mas pode causar
perda de detalhes (suavização). A filtragem apenas média de croma é menos agressiva e é uma boa
escolha para usar em combinação com yuvdenoise.
Combinar os filtros yuvdenoise, yuvmedianfilter e a opção mpeg2enc -N dá uma
bom grau de controle sobre a taxa de bits (tamanho do arquivo). A redução (ou aumento) no
a taxa de bits depende do material de origem e das opções exatas de codificação / filtro usadas. Então nós
não pode fornecer números exatos de quanto cada opção e combinação reduzirá o tamanho do arquivo,
apenas orientações.
Normalmente, você deve usar a opção -N em um intervalo de 0.5 a 1.5. Abaixo de 0.5 não
reduz muito a taxa de bits (mas preserva a nitidez). Com 1.5 e superior, você
observe uma suavização no vídeo e, possivelmente, artefatos (halo / toque) em torno das bordas de
objetos (especialmente texto / legendas). Se você combinar os filtros você deve usar yuvdenoise
e talvez depois yuvmedianfilter. Talvez yuvmedianfilter mesmo após o dimensionamento. Tendo
yuvmedianfilter na cadeia não reduz a taxa de bits muito. Freqüentemente, o uso de
yuvdenoise é o suficiente. O filtro yuvmedian ajuda muito se você tiver fontes de baixa qualidade e
não muito se você já tiver uma qualidade bastante boa. Quando você combina o filtro e
opção você provavelmente irá reduzir o tamanho do arquivo para cerca da metade do tamanho do arquivo sem
usando as opções e programas.
Em geral, a filtragem agressiva produzirá arquivos menores (menor taxa de bits), mas reduzirá o
qualidade (detalhes) da imagem. Uma filtragem / processamento menos agressivo preservará mais
detalhes, mas resultam em arquivos maiores.
Exemplo:
> lav2yuv stream.avi │ yuvkineco -F 1 │ mpeg2enc -o vídeo.m1v
yuvkineco é usado para fontes NTSC. Ele faz a conversa de 30000.0 / 1001.0 (cerca de
29.97) fps a 24000.0 / 1001.0 (cerca de 23.976) fps, você pode chamá-lo de ”reverso 2-3 pulldown”
mais informações sobre isso no README.2-3pulldown. yuvkineco remove apenas NTSC específico
problemas.
Se você quiser melhorar a imagem, você também deve usar yuvdenoise:
> lav2yuv stream.avi │ yuvkineco │ Yuvdenoise │ mpeg2enc -o vídeo.m1v
Exemplo
> lav2yuv stream.avi │ Yuvycsnoise │ mpeg2enc -o vídeo.m1v
yuvycsnoise também é usado para NTSC e é especializado para ruído de separação NTSC Y / C. Se
hardware de captura de vídeo tem apenas um separador Y / C ruim, em seguida, em listras verticais (especialmente
vermelho / azul) aparecem ruídos que parecem checker flag e claro / escuro invertido por 1 quadro.
yuvycsnoise reduz ruídos desse tipo. Você também pode usar limites diferentes para
luma / chroma e o método de otimização. Este filtro não é necessário para trabalhar com DV
(Vídeo digital) dados.
yuvycsnoise funciona corretamente apenas quando temos NTSC com:
altura total (480 linhas)
movimento total capturado (29.97 fps)
capturado com hardware de separador Y / C ruim
Para obter mais informações sobre o yuvkineco e o yuvycsnoise, leia o README nos filtros do yuv
diretório.
Se você deseja experimentar para determinar as configurações ideais para o denoiser, scaler e
assim por diante, substitua o mpeg2enc pelo yuvplay. yuvplay reproduz os frames do yuv para que você possa ver
se as opções que você escolheu estão tornando a coisa melhor ou pior.
Um comando seria semelhante a este:
> lav2yuv stream.eli │ Yuvdenoise -opções │ yuvscaler -opções │ yuvplay
Se você quiser saber o quanto cada ferramenta reduz a taxa de bits média. Você pode usar esta mesa
para ver o que você pode esperar se tiver um vídeo em tamanho grande e quiser criar um DVD com um
fator de qualidade de 5 e a taxa de bits máxima permitida de 8500 kb / s.
sem ruído: 8300 kb / s (principalmente atingindo o limite superior)
Yuvenoise: 7700 kb / s
mpeg2enc --reduce-hf: 7400 kb / s
yuvdenoise + yuvmedianfilter: 6000 kb / s
yuvdenoise + mpeg2enc --reduce-hf: 4900 kb / s
todas as alternativas acima: 3600 kb / s
Embora -N│ - reduzir-hf ou yuvdenoise sozinho é apenas uma melhoria modesta, juntos eles
reduza a taxa de bits substancialmente. Não há realmente muita diferença visível entre
usando yuvdenoise sozinho e yuvdenoise com mpeg2enc --reduce-hf. Os valores úteis são
entre 0.0 e 1.5. Onde você pode dizer que quanto maior o fator de qualidade que você deseja, o
menos esta opção melhora. Com um fator de qualidade 4, você economiza usando -N 1.0 cerca de 1%. Se você
deseja um fator de qualidade de 9 e use o -N 1.0, você pode economizar até 40%. Mas você pode salvar
menos, isso depende do vídeo que você codificar !!!
Se você se pergunta por que não usar sempre todos os filtros acima? As respostas são que
a imagem fica mais suave (perda de detalhes) e o tempo de codificação aumenta. A maioria dos filtros
cada um requer aproximadamente a mesma quantidade de tempo que o mpeg2enc precisa para codificar o vídeo.
Se você tem um material de altíssima qualidade e deseja manter todos os detalhes que deve tentar usar
o mpeg2enc --keep-hf│-h por outro lado.
Nota: A redução da taxa de bits depende do material e do ruído do
imagens.
Uma outra opção de mpeg2enc interessante é o -E│ - coeficiente de unidade-elim opção. Esta opção é
desativado por padrão. Se você ativá-lo, um algoritmo especial de "eliminação de coeficiente de unidade",
é aplicado aos blocos de imagem codificados. Basicamente, este procedimento força blocos de um
tipo que não carrega muitas informações (mas usa muitos bits para codificar) a ser ignorado. UMA
o valor negativo examina a base (DC), bem como os coeficientes AC. Um valor positivo
significa que apenas os coeficientes de textura (AC) são examinados e possivelmente zerados. o
os valores recomendados estão entre -20 e +20. Você geralmente pode esperar que tenha 5%
diminuiu o tamanho do arquivo. A quantidade de redução da taxa de bits pode variar consideravelmente, o intervalo
vai de não realmente perceptível até 20%.
Se você acha que outra matriz de quantização ajudará a usar o -K│ - matrizes-quant-personalizadas
opção. Você pode experimentar sua própria matriz de quantificação ou usar outra embutida que não a
predefinição. Você pode escolher entre kvcd, tmpgenc, alta resolução e o seu próprio. Usando -K normalmente
torna o arquivo menor, exceto a opção de alta resolução (que torna os arquivos consideravelmente maiores).
Diretrizes exatas são difíceis de fornecer, às vezes uma outra matriz de quantificação economiza quase
nada, e da próxima vez até 20%. Mais de 20% é muito improvável, 10-15% em um moderado
fator de qualidade (-q 8-10) são prováveis. Quanto maior a qualidade, menos economiza, com uma qualidade
fator de 4-6, a redução na taxa de bits pode ser de apenas 5%
Uma coisa a ter em mente é que a eliminação do coeficiente de unidade e a quantização
a opção de matriz está diminuindo a taxa de bits, mantendo a mesma qualidade visual. No
neste ponto, você pode escolher usar o arquivo menor para aumentar a quantidade de vídeo que
caber na mídia de disco ou você pode optar por aumentar a qualidade ainda mais diminuindo o
-q valor por 1 e cria um arquivo maior (mas de qualidade superior).
Escala e compensar correção
A escala básica é descrita no Convertendo vídeo seção
O dimensionamento pega uma parte da imagem e a redimensiona para um tamanho maior ou menor. o
o dimensionamento é feito pelo yuvscaler:
lav2yuv teste.eli │ yuvscaler -I USE_400x400 + 50 + 100 │ yuvplay
Aqui, pegamos apenas parte da imagem e a redimensionamos até o tamanho do quadro original.
Mas o yuvscaler também muda a proporção do pixel. Isso significa que quando você olha para o fluxo
usando yuvplay parece um quadrado em nosso exemplo. Após o dimensionamento, se a amostra (pixel)
a proporção de aspecto não foi alterada, o vídeo não seria exibido com a proporção de aspecto adequada.
O Yuvscaler compensa ajustando a proporção da amostra. Se você tem um entrelaçado
vídeo, a altura e HeightOffset devem ser múltiplos por 4 se o vídeo for entrelaçado.
Caso contrário, os valores (largura, altura, deslocamento de largura, deslocamento de altura) devem ser múltiplos de 2.
Um problema que não pode ser resolvido facilmente com o dimensionamento é quando a imagem não está centralizada
horizontal. De um lado você não tem pixels pretos e do outro você tem 30, por exemplo.
O dimensionamento está aqui é a solução errada. y4mshift é a solução perfeita porque pode
deslocar a imagem para a esquerda ou direita.
lav2yuv teste.eli │ turno y4m -n 20 │ mpeg2enc -f 3 -b 4000 -q 10 -o vídeo.m2v
Isso mudará a imagem 20 pixels para a direita. Se você usar um negativo, a imagem muda
Para a esquerda. Você tem que usar um número par. Os pixels inseridos são definidos como pretos.
Alguns podem se perguntar por que a imagem não está centralizada e há uma borda preta ao redor do
imagem quando você vê o que você gravou. O motivo da borda preta está na história
da tecnologia de TV CRT (Cathode Ray Tube). A história do padrão de TV é muito
história interessante, mas esse tópico é descrito em outros livros (grandes).
A TV não mostra a imagem inteira. Uma parte da imagem não é mostrada porque a TV
define overscan (às vezes até 10%, mas mais comum hoje é 5%). Mas quando você
capturar o vídeo com uma placa você vê a imagem inteira incluindo a borda que as TVs perdem
devido ao overscanning. Um deslocamento horizontal geralmente não é um problema da placa de captura. Isto
é um problema quando o filme é transmitido e não está bem sincronizado com a imagem. Esse
significa que a varredura da fonte não está exatamente sincronizada com o sinal da portadora, você
não vou ver isso na TV.
quadro taxas conversão
Já precisou converter a taxa de quadros de PAL para NTSC ou na direção oposta? Ou
algo muito mais simples como converter a taxa de quadros de 24FPS para 24000: 1001 para
conversa de uma taxa de quadros de filme para uma taxa de quadros NTSC válida.
Do que yuvfps é o seu programa. Ele pode diminuir a taxa de quadros eliminando quadros ou criar um
maior taxa de quadros replicando quadros. Se você tiver uma taxa de quadros errada no cabeçalho, você
só pode alterar o cabeçalho do fluxo YUV e não modificar o fluxo.
Como os quadros são apenas replicados (copiados), você deve primeiro diminuir o ruído e depois alterar
a taxa de quadros e a escala na última etapa. Se você tem uma fonte entrelaçada, você também deve
desentrelaçar antes de alterar a taxa de quadros. Se você criar uma taxa de quadros mais alta, é muito
provavelmente você terá cintilações estranhas ao reproduzi-lo. Se você converter PAL em NTSC
(30000: 1001 FPS em cerca de 29,97 FPS), a taxa de quadros será reduzida em cerca de 480/576
(Linhas NTSC / linhas PAL). Se você diminuir a taxa de quadros de PAL para NTSC (em 24000: 1001) ou
FILME NTSC (24FPS) a taxa de bits será de cerca de (480 Linhas * 24 FPS) / (576 Linhas * 25FPS).
Se você alterar a taxa de quadros antes de remover o ruído do yuvdenoise terá problemas para encontrar
o ruído entre os quadros e a largura de banda necessária aumentará ligeiramente.
Exemplo
> lav2yuv vídeo.eli │ yuvfps -r 30000:1001 │ yuvscaler -O SVCD │ mpeg2enc -f 4 -o
video_ntsc_svcd.m2v
Este é um exemplo para converter o vídeo de origem em um vídeo NTSC rodando a 30000: 1001 FPS
(ou cerca de 29,97 FPS) no tamanho de SVCD.
Exemplo
> lav2yuv vídeo.eli │ Yuvdenoise │ yuvfps -r 24000:1001 │ yuvscaler -O TAMANHO_720 x 480 │
mpeg2enc -f 3 -b 4000 -q 7 -o video_ntsc.m2v
Este exemplo mostra como você deve usar as ferramentas. Denoise primeiro e depois mude o
taxa de quadros e, na última etapa, altere o tamanho da imagem.
Pode acontecer que yuvscaler ou mpeg2enc não detectem a norma de TV correta. Se isso
acontece que você tem que adicionar a opção de norma -n n / p / s para o programa que escolhe o errado
padrão.
Se você sabe que o cabeçalho informa a taxa de quadros errada, você pode simplesmente alterar a taxa de quadros
do cabeçalho do yuv desta forma:
> lav2yuv vídeo.eli │ yuvfps -r 25:1 -c │ mpeg2enc -f 3 -b 4000 -q 7 -o video_pal.m2v
Você precisa do -c opção. Para dizer ao yuvfps que ele só deve alterar o cabeçalho do
Stream. Com o -r 25:1 você diz ao yuvfps a taxa de quadros que ele deve escrever no cabeçalho.
No seu exemplo, a taxa de quadros PAL de 25 FPS. Você sempre deve usar a forma fracionária.
Se você sabe que o cabeçalho está errado e precisa de uma taxa de bits de saída diferente, você pode
isso em uma única etapa:
> lav2yuv vídeo.eli │ yuvfps -s 24:1 -r 25:1 │ mpeg2enc -o vídeo.m1vTranscodificação de
MPEG-2 existente
Para transcodificar streams MPEG-2 existentes de placas de TV digital ou DVD, uma taxa de dados mais baixa
do que para a transmissão dará bons resultados. VCD padrão 1152 kbps normalmente funciona apenas
bom para MPEG-1. A diferença está na relação Sinal / Ruído do original. O barulho em
o material analógico torna muito mais difícil de comprimir.
Você também precisará ajustar manualmente o deslocamento do atraso de áudio em relação ao vídeo quando
multiplexação. Muitas vezes, um atraso de cerca de 150 ms parece funcionar.
Você deve baixar os pacotes ac3dec e mpeg2dec. Você pode encontrá-los em seus
página inicial: mpeg2dec () e ac3dec. Para decodificar os streams de áudio, o mpg123 e o mplayer podem
ser muito útil. Você também precisa de sox e toolame.
No diretório de scripts, há um mpegtranscode script que faz a maior parte do trabalho.
Portanto, a transcodificação se parece com isto:
> mjpegtranscode -V -o vcd_stream mpeg2src.mpg
-V
definir as opções para que um fluxo compatível com VCD seja gerado
-o vcd_stream
um vcd_stream.m1v (vídeo) e vcd_stream.mp2 (áudio) é criado
mpeg2src.mpg
especifica o stream de origem
O script também imprime algo assim:
> SYNC 234 ms
Você precisará ajustar os atrasos de inicialização de áudio / vídeo durante a multiplexação para garantir o áudio
e o vídeo são sincronizados. O atraso exato (em milissegundos) que você precisa passar para
mplex para sincronizar áudio e vídeo usando o ”-v” "é impresso pela ferramenta extract_a52
rotulado como ”SYNC” quando executado com a bandeira ”s”. Este é o valor do script mjpegtranscode
imprime após o SYNC palavra.
Então você precisa multiplexá-los assim:
> complexo -f 1 -O 234 vcd_stream.mp2 vcd_stream.m1v -o taxa baixa.mpg
-f1
O formato Mux está definido para VCD
-O 234
Deslocamento do carimbo de data / hora do vídeo em mSec, gerado pelo script mjpegtranscoding, negativo
valores são permitidos
vcd_stream.mp2 & vcd_stream.m1v
arquivos gerados pelo script
taxa baixa.mpg
o fluxo de saída compatível com VCD
Aqui temos um exemplo SVCD (vídeo MPEG-2):
> mjpegtranscode -S -o svcd_stream mpeg2src.mpg
Você tem que multiplexar com:
> complexo -f 4 -O 234 svcd_stream.mp2 svcd_stream.m2v -o taxa baixa.mpg
Problema: Às vezes, há um problema com a reprodução de NTSC e VCD porque os filmes podem ser
recodificado com 3: 2 pulldown NTSC com 60 campos / seg. mpeg2dec é projetado para reprodução em
computadores e gera a taxa de bits original de 24 quadros / seg. Se você codificar o vídeo agora
30frames / seg de vídeo é criado. Este vídeo agora é muito curto para o áudio codificado.
A transcodificação pode funcionar, mas deve ser feita manualmente:
> MPEG2DEC -s -o pgmpipe mpeg2src.mpg │ pgmtoy4m -a 59:54 -r 25:1 -i t │ mpeg2enc -I 0 -f
4 -q 9 -V 230 -p -P -o svcd_stream.m2v
O -p diz ao mpeg2enc para gerar sinalizadores de cabeçalho para 3: 2 pull down de filme 24fps. Pode
também funcionará se você não adicionar o sinalizador -p. Você não precisa do sinalizador -p ao transcodificar para
Formato VCD porque não é compatível com MPEG1.
If Você queremos para do cada passo on sua próprio it precisarão olhar alguma coisa como esse
Extraindo áudio:
> gato teste2.mpg │ extrato_a52 - -s │ ac3dec -o wav -p som.wav 2> / dev / null
Uma das primeiras linhas mostradas contém o rótulo "SINCRONIZAÇÃO" que você deve usar desta vez mais tarde
ao multiplexar. O 2> / dev / null redireciona a saída de ac3dec para / dev / null. No
próxima etapa, você gera o arquivo de áudio MPEG:
> gato som.wav │ mp2enc -V -v 2 -o áudio.mp2
-V
força o formato VCD, a taxa de amostragem é convertida para 44.1 kHz de 48 kHz
-v 2
desnecessário, mas se você usá-lo, o mp2enc informa quantos segundos do arquivo de áudio são
já codificado.
-o
Especifica o arquivo de saída.
gato teste2.mpg │ extrato_a52 - -s │ ac3dec -o wav │ Sox -t wav / dev / stdin -t wav -r 44100
/ dev / stdout │ ferramenta -p 2 -b 224 / dev / stdin áudio.mp2
Uma das primeiras linhas de saída contém o rótulo ”SYNC”. Você tem que usar esse tempo
(referido como "SYNC_value" abaixo) ao fazer a multiplexação.
Para criação de VCD, use:
> MPEG2DEC -s -o pgmpipe teste2.mpg │ pgmtoy4m -a 59:54 -r 25:1 -i t │ mpeg2enc -s -o
vídeo_vcd.m1v
mpeg2dec:
-s
diz ao mpeg2dec para usar o demultiplexador de fluxo de programa
-o pgmpipe
o formato de saída das imagens, adequado para pgmtoy4m
Mplex com:
> complexo -f 1 -O SINC_valor áudio.mp2 vídeo_vcd.m1v -o vcd_stream.mpg
-f1
gera um fluxo VCD
-O SINC_valor
o valor mencionado acima
Para criação de SVCD, use:
> MPEG2DEC -s -o mpeg2src.mpg │ pgmtoy4m -a 59:54 -r 25:1 -i t │ mpeg2enc -f 4 -q 9 -V
230 -o vídeo_svcd.mpg
-q 9
Fator de qualidade para o fluxo (fluxo VBR) (padrão q: 12)
-V 230
Tamanho do buffer de vídeo de destino em KB
-o
Arquivo de saída
Mplex com:
> complexo -f 4 -b 230 áudio.mp2 vídeo_svcd -o svcd_stream.mpg
-f4
gerar um fluxo SVCD
-b 200
Especifique o tamanho do buffer de vídeo pelo dispositivo de reprodução.
Para outros formatos de saída de vídeo, isso pode funcionar:
> MPEG2DEC -s -o pgmpipe teste2.mpg │ pgmtoy4m -a 59:54 -r 25:1 -i t │ yuvscaler -O
TAMANHO_320 x 200 -O NOT_INTERLACED │ mpeg2enc -o estranho_vídeo.m1v
Se você quiser editar streams MPEG, isso também funciona, mas de uma maneira um pouco diferente. Para
demultiplexando você pode usar o bbdmux do pacote bbtools. Divide o vídeo ou
áudio de forma muito limpa. Você não pode obtê-lo mais na página inicial de Brent Beyler, ele pode
ainda será encontrado quando você pesquisar por ele usando as palavras-chave ”bbtools linux -suse
-caixa preta". Atualmente, ele pode ser encontrado em:
Primeira corrida:
> bbdmux meuvídeo.mpg
Você deve obter algo como isto:
ID de stream encontrado 0xE0 = Stream de vídeo 0
ID de fluxo encontrado 0xC0 = Fluxo de áudio MPEG 0
Id do stream encontrado 0xBE = Padding Stream
Extraia áudio com:
> bbdmux meuvídeo.mpg 0xC0 áudio.mp1
Converta para wav:
> mpg123 -w áudio.wav áudio.m1v
Extraia o vídeo com:
> bbdmux meuvídeo.mpg 0xE0 vídeo.m1v
Convertendo vídeo em um stream mjpeg avi:
> MPEG2DEC -o pgmpipe vídeo.m1v │ pgmtoy4m -a 59:54 -r 25:1 -i t │ yuv2lav -f a -o
teste.avi
Em seguida, adicionando o som ao avi:
> lavaddwav teste.avi áudio.wav final.avi
Se o vídeo de origem já tiver o tamanho do vídeo de destino, use -o YUV. Usando YUVh faz
o vídeo da metade do tamanho! O resto pode ser feito apenas como editar e codificar outros
córregos. Se você tiver vídeos com som ac3, basta adaptar os comandos acima.
Extraindo áudio:
> gato teste2.mpg │ extrato_a52 - -s │ ac3dec -o wav 2> dev / nulo > sound.wav
Extraia o vídeo e adicione o áudio em uma única etapa:
> MPEG2DEC -s -o pgmpipe │ pgmtoy4m -a 59:54 -r 25:1 -i t │ yuvscaler -O VCD │ yuv2lav -f
a -q 85 -w som.wav -o teste.avi
OBSERVAÇÃO: Você precisa de muito espaço em disco. 1 GB de vídeo tem um tamanho de cerca de 2 GB no formato SVCD e de
é necessário espaço em disco para alguns arquivos temporários. Converter o vídeo para mjpeg também leva
às vezes. No meu Athlon 500, nunca obtenho mais do que 6-7 frames por segundo. Você perde qualidade
cada vez que você converte um stream em outro formato! Qualidade / velocidade de negociação
Se a qualidade absoluta é o seu objetivo, uma melhoria modesta pode ser alcançada usando o -4
e -2 sinalizadores. Eles controlam o quão cruelmente mpeg2enc descarta correspondências com aparência ruim entre
seções de quadros adjacentes durante os estágios iniciais da pesquisa quando está trabalhando com
4 * 4 e 2 * 2 clusters de pixels em vez de pixels individuais. A configuração -4 1 -2 1 maximiza
qualidade. -4 4 -2 4 maximiza a velocidade. Observe que porque os critérios estatísticos mpeg2enc
usos para descartar fósforos com aparência ruim são geralmente bastante confiáveis quanto ao aumento / diminuição
em qualidade é modesto (mas perceptível).
Reduzir o raio da busca por seções correspondentes de imagens também aumenta a velocidade.
No entanto, devido à forma como o algoritmo de pesquisa funciona, o raio de pesquisa é arredondado
para o múltiplo mais próximo de 8. Além disso, em CPUs modernas, a velocidade ganha ao reduzir
o raio abaixo de 16 não é grande o suficiente para fazer a redução de qualidade marcada valer a pena
para a maioria dos aplicativos.
Criar córregos para be desempenhado da disco utilização Software players
Normalmente, o software do reprodutor MPEG é muito mais flexível do que o hardware embutido no DVD e
Jogadores VCD. Esta flexibilidade permite que uma compressão significativamente melhor seja alcançada
para a mesma qualidade. O truque é gerar streams de vídeo que usam grandes buffers de vídeo
(500 KB ou mais) e codificação de taxa de bits variável (o sinalizador -f / -q para mpeg2enc). Programas
os jogadores freqüentemente também reproduzem corretamente o MPEG camada 3 mais eficiente (sim, ”MP3”
formato de áudio. Um bom codificador de MP3 como o lame produzirá resultados comparáveis à camada 2 em
224 Kbps a 128 Kbps ou 160 Kbps.SMP e codificação distribuída
A codificação distribuída é uma teoria bastante obscura para a Máquina típica em 2013. Portanto, a maioria
os usuários podem pular esse ponto com segurança. A codificação SMP é mais interessante para a média
computador
O grau em que mpeg2enc tenta dividir o trabalho entre threads em execução simultânea é
controlado pela opção -M ou --multi-thread [0..32]. Isso otimiza o mpeg2enc para o
número especificado de CPUs. Por padrão (-M 1) mpeg2enc é executado com apenas um pequeno multi
threading: a leitura de frames ocorre simultaneamente à compressão. Isso é feito para permitir
pipelines de codificação que são divididos em várias máquinas (veja abaixo) para funcionar de forma eficiente
sem a necessidade de programas especiais de buffer. Se você estiver codificando em uma única CPU
máquina onde a RAM é apertada, você pode desligar o multithreading completamente, definindo
-M 0 funciona com um pouco mais de eficiência.
Para máquinas SMP com dois ou mais processadores, você pode acelerar o mpeg2enc configurando o
número de threads de codificação em execução simultânea que você deseja utilizar (por exemplo, -M 2).
Definir -M 2 ou -M 3 em uma máquina de 2 vias deve permitir que você acelere a codificação em cerca de
80%. Valores acima de 3 são aceitos, mas têm muito pouco efeito, mesmo em sistemas de 4 cpu.
Se você tiver uma máquina SMP muito rápida (atualmente 1. agosto.03) como um Athlon MP 2600 duplo ou
algo semelhante a -M 2 e a filtragem podem não manter ambas (ou mais) CPUs ocupadas.
O uso do buffer ou programa bfr com um buffer de 10-20 MB ajuda a manter ambas as CPUs ocupadas.
Obviamente, se o pipeline de codificação contém vários estágios de filtragem, é provável que
você pode manter duas ou mais CPUs ocupadas simultaneamente, mesmo sem usar -M. Denoising usando
yuvdenoise ou yuvmedianfilter é particularmente exigente e usa quase o mesmo processamento
poder como codificação MPEG.
Se você tiver mais de um computador, você também pode dividir o pipeline de codificação entre os computadores
usando os comandos de execução remota shell padrão 'rsh' ou 'rcmd'. Por exemplo, se você
tem dois computadores:
> rsh machine1 lav2yuv ”Mycapture.eli │ yuvscaler -O SVCD │ yuvdenoise ” │ mpeg2enc -f 4 -o
minhacaptura.m2vi
Aqui, o computador onde você executa o comando está fazendo a codificação MPEG e ”máquina1”
é a máquina que está decodificando, dimensionando e removendo ruído do vídeo capturado.
Obviamente, para que isso funcione ”máquina1” tem que ser capaz de acessar o vídeo e o computador
onde o comando é executado deve ter espaço para o vídeo codificado. Na prática, é
geralmente vale a pena configurar o armazenamento de arquivos de rede usando "NFS" ou outros pacotes se você
vão fazer coisas assim. Se você tem três computadores, pode levar isso a um estágio
além disso, um computador pode fazer a decodificação e escalonamento, o próximo pode fazer a remoção de ruído e
o terceiro poderia fazer a codificação MPEG:
> rsh machine1 ”Lav2yuv minhacaptura.eli │ yuvscaler -O SVCD ” │ Yuvdenoise │ rsh machine3
mpeg2enc -f 4 -o minhacaptura.m2v
OBSERVAÇÃO: Como as execuções de comandos remotos são configuradas para que os dados sejam enviados direto do
máquina que o produz até a máquina que o consome.
Na prática, para que isso valha a pena, a rede que você está usando deve ser rápida o suficiente para
evite se tornar um gargalo. Para máquinas da classe Pentium III ou superior, você precisará de um
Ethernet de 100 Mbps.
Para máquinas realmente rápidas, pode ser necessária uma Ethernet comutada de 100 MBps (ou melhor!). Configurando
o rshd (”Remote Shell Daemon” necessário para rsh fazer seu trabalho e configurar ”rsh” é
além do escopo deste documento, mas é um pacote padrão e deve ser facilmente
instalado e ativado em qualquer distribuição Linux ou BSD.
Esteja ciente de que este é potencialmente um problema de segurança, portanto, use com cuidado em máquinas que são
visível para redes externas! Interoperabilidade
Os arquivos Quicktime capturados com o lavrec podem ser editados com o Broadcast2000. Mas
Broadcast2000 não está mais disponível em heroinewarrior. arquivos AVI mjpeg capturados usando
a ferramenta streamer do pacote xawtv pode ser editada, comprimida e reproduzida
usando software. A reprodução de hardware não é possível para tais arquivos devido a limitações em
o hardware Zoran atualmente suportado. Vídeos gravados com NuppelVideo também podem ser
processado com as ferramentas mjpeg.
Se você tem um Macintosh (MAC) e deseja usar as ferramentas mjpeg, procure aqui:
Os arquivos MPEG produzidos com as ferramentas são reproduzidos corretamente em:
dxr2 (placa de decodificação de hardware)
xine
filme x
mplayer
vlc
MPEG-1 apenas: gtv
MS Media player versão 6 e 7 e versão posterior
vários reprodutores de DVD baseados em software
Para descobrir o que seu HW-player (na maioria das vezes, DVD player) pode fazer, dê uma olhada em:
Parece que o MS Media player gosta mais de streams MPEG-1 se você tiver usado -f 1 quando
multiplexação.
Se você tiver qualquer problema ou sugestão, sinta-se à vontade para me enviar um e-mail (Bernhard Praschinger): Lá
é um monte de coisas adicionadas a partir dos DICAS que Andrew Stevens criou. Wolfgang Goeller e
Steven M. Schultz verificou o documento em busca de bugs e erros de ortografia.
E para as pessoas que me ajudaram com as descrições e dicas do programa, obrigado
Use mjpegtools online usando serviços onworks.net