好吧,夥計們,使用十六進制編輯器或記事本++十六進制編輯器插件複製和粘貼視頻文件完全沒問題。
首先)我在notepad++中開啟影片文件,總行數是1876(最左邊的列)。
第二)我以十六進位模式查看檔案總行數為39240;
第三)我建立了一個 C++ 程式來讀取相同視訊檔案的行數。
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 行。
答案1
影片檔案中沒有「字元」或「台詞」。這是因為,視訊檔案中的資料不是文字而是影片! :)
因此,要理解包含文字以外的任何內容的文件,您需要以二進位模式開啟它,並將該文件視為包含多個位元組的大二進位資料區塊。現在,要處理此類文件,您可以從該文件中分塊讀取位元組(例如一次 1024 個位元組)
現在,要處理該文件並以有意義的方式提取數據,您需要了解該文件的格式以及該特定文件格式的數據如何以二進制形式排列。
讓我們來看看簡單的圖像檔案格式,例如 BMP 格式。http://en.wikipedia.org/wiki/BMP_file_format
在那裡您可以看到點陣圖檔案如何分為各種固定和可變長度的區塊。例如,BMP 檔案的前 14 個位元組是位元圖示頭,告訴您有關該檔案的一些常規資訊。其他標題會告訴您影像的像素格式、寬度、高度等。您可以在標頭中使用此資料來理解檔案中儲存的其餘影像資料。
答案2
視訊檔案中沒有有用的“線”概念。為什麼要尋找「行」的數量?
關於報告數字的差異:Notepad++ 可能偵測到的換行符號不僅僅是「\n」(請參閱範例http://en.wikipedia.org/wiki/Newline)。當您以十六進位模式查看檔案時,它以每個位元組 2 個字元顯示,每行位元組寬度固定,因此
十六進位 > notepad++ > 你的程式碼
聽起來很合理。