![Número de linhas em um arquivo de vídeo](https://rvso.com/image/1402592/N%C3%BAmero%20de%20linhas%20em%20um%20arquivo%20de%20v%C3%ADdeo.png)
Ok pessoal, copiar e colar o arquivo de vídeo com o editor hexadecimal ou com o plugin do editor hexadecimal notepad ++ funciona perfeitamente bem. Agora, quero encontrar o número de linhas em um arquivo de vídeo-
primeiro) Abri o arquivo de vídeo no notepad ++ e o número total de linhas é 1876 (a coluna mais à esquerda).
Segundo) Eu visualizo o arquivo no modo hexadecimal, o número total de linhas é 39.240;
Terceiro) Eu construí um programa c++ para ler o número de linhas do mesmo arquivo de vídeo. Meu código é:
char c;
int total_line=0;
ifstream file("vid.avi",ios::binary | ios::in)
while(!file.eof())
{
c=file.get();
if(c=='\n')
{
total_line++;
}
}
file.close();
cout<<"Total line "<<total_line<<endl;
Isso dá uma linha total de 1313. Qual é o correto e qual é falso, alguém ajuda.
Responder1
Não há “caracteres” ou “linhas” em um arquivo de vídeo. Isso porque os dados em um arquivo de vídeo não são texto, mas vídeo! :)
Portanto, para entender um arquivo contendo algo diferente de texto, você precisa abri-lo em modo binário e tratar o arquivo como uma grande bolha de dados binários contendo vários bytes. Agora, para processar esse tipo de arquivo, você pode ler os bytes desse arquivo em pedaços (por exemplo, 1024 bytes por vez)
Agora, para processar este arquivo e extrair os dados de maneira significativa, você precisa saber o formato desse arquivo e como os dados são dispostos em binário para esse formato de arquivo específico.
Vamos dar uma olhada no formato de arquivo de imagem simples, por exemplo, formato BMP.http://en.wikipedia.org/wiki/BMP_file_format
Lá você pode ver como o arquivo bitmap é dividido em vários pedaços de comprimento fixo e variável. Por exemplo, os primeiros 14 bytes do arquivo BMP são um cabeçalho de bitmap e fornecem algumas informações gerais sobre o arquivo. Outros cabeçalhos informarão sobre o formato do pixel, largura, altura, etc. da imagem. Você pode usar esses dados em cabeçalhos para entender o restante dos dados da imagem armazenados no arquivo.
Responder2
Não existe um conceito útil de "linha" em um arquivo de vídeo. Por que você está procurando o número de "linhas"?
Em relação à diferença nos números relatados: o Notepad++ provavelmente detecta mais quebras de linha do que apenas "\n" (veja por exemplohttp://en.wikipedia.org/wiki/Newline). Quando você visualiza o arquivo no modo hexadecimal, ele é exibido com 2 caracteres por byte com uma largura fixa de bytes por linha, então
hex > notepad++ > seu código
parece razoável.