Ладно, ребята, копирование и вставка видеофайлов в шестнадцатеричный редактор или в плагин шестнадцатеричного редактора notepad++ работает отлично.Теперь я хочу найти количество строк в видеофайле

во-первых) я открыл видеофайл в notepad++, и общее количество строк составляет 1876(самый левый столбец).

Во-вторых, я просматриваю файл в шестнадцатеричном режиме, общее количество строк составляет 39240;

В-третьих) Я создал программу на С ++ для чтения количества строк из одного и того же видеофайла.Мой код:

  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;

Это дает общую линию 1313.Кто из них верен, а кто ложен, помогите.

2 ответа2

1

В видеофайле нет "символов" или "строк". Это потому, что данные в видеофайле - это не текст, а видео! :)

Итак, чтобы разобраться с файлом, содержащим что-либо, кроме текста, вам нужно открыть его в двоичном режиме и рассматривать файл как большой двоичный объект двоичных данных, содержащий несколько байтов. Теперь, чтобы обработать этот тип файла, вы можете читать байты из этого файла кусками (например, 1024 байта за раз)

Теперь, чтобы обработать этот файл и извлечь данные осмысленно, вам нужно знать формат этого файла и то, как данные располагаются в двоичном формате для этого конкретного формата файла.

Давайте взглянем на простой формат файла изображения, например, формат BMP. http://en.wikipedia.org/wiki/BMP_file_format

Там вы можете увидеть, как растровый файл делится на различные фрагменты фиксированной и переменной длины. Например, первые 14 байтов файла BMP являются заголовком растрового изображения и сообщают вам некоторую общую информацию о файле. Другие заголовки расскажут вам о формате пикселей, ширине, высоте и т.д. Изображения. Вы можете использовать эти данные в заголовках, чтобы понять остальные данные изображения, хранящиеся в файле.

0

В видеофайле нет полезного понятия "линия". Почему вы ищете количество "линий"?

Что касается разницы в сообщаемых числах: Notepad++, вероятно, обнаруживает больше разрывов строк, чем просто "\n" (см., Например, http://en.wikipedia.org/wiki/Newline). Когда вы просматриваете файл в шестнадцатеричном режиме, он отображается с 2 символами на байт с фиксированной шириной байтов на строку, поэтому

hex> notepad++> ваш код

звучит разумно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .