本發(fā)明屬于計算機技術領域,尤其涉及一種視頻編碼的方法及裝置。
背景技術:
隨著多媒體技術的發(fā)展,網(wǎng)絡電視劇、網(wǎng)絡電影、網(wǎng)絡綜藝以及網(wǎng)絡直播等網(wǎng)絡視頻越來越受人們的青睞,播放量不計其數(shù)。
在制作網(wǎng)絡視頻的過程中,拍攝的視頻文件需要轉換為計算機上的數(shù)據(jù)才能在網(wǎng)絡上播放,直接轉換后的數(shù)據(jù)量非常大,因此在轉換的時候需要對拍攝的視頻文件進行壓縮,壓縮過程還要考慮到視頻數(shù)據(jù)的還原和不失真的問題。可見,視頻編碼耗時較長,提高視頻編碼的效率是視頻編碼的關鍵。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種視頻編碼的方法及裝置,旨在解決由于現(xiàn)有技術無法提供一種有效的視頻編碼方法,導致視頻編碼的效率較低的問題。
一方面,本發(fā)明提供了一種視頻編碼的方法,所述方法包括下述步驟:
接收視頻源文件,將所述視頻源文件的視頻流和音頻流進行分離;
將分離后的所述視頻流輸入到預設的vapoursynth控件中,通過所述vapoursynth控件生成vpy格式的視頻文件;
對所述vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對所述音頻流進行編碼,以得到對應的音頻文件;
將所述編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻。
另一方面,本發(fā)明提供了一種視頻編碼的裝置,所述裝置包括:
音視頻分離模塊,用于接收視頻源文件,將所述視頻源文件的視頻流和音頻流進行分離;
視頻流輸入模塊,用于將分析后的所述視頻輸入到預設的vapoursynth控件中,通過所述vapoursynth控件生成vpy格式的視頻文件;
音視頻編碼模塊,用于對所述vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對所述音頻流進行編碼,以得到對應的音頻文件;以及
音視頻封裝模塊,用于將所述編碼的視頻文件和對應的音頻文件進行格式封裝,生成所述預設視頻格式的編碼視頻。
本發(fā)明在接收到視頻源文件時,將視頻源文件的視頻流和音頻流進行分離,將分離后的視頻流輸入到預設的vapoursynth控件中,通過vapoursynth空間生成vpy格式的視頻文件,再對vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對音頻流進行編碼,以得到對應的音頻文件,將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻,從而通過采用多線程的視頻處理空間vapoursynth作為視頻編碼的橋梁,有效地提高了計算機資源的充分利用,有效地提高了視頻編碼的效率。
附圖說明
圖1是本發(fā)明實施例一提供的視頻編碼的方法的實現(xiàn)流程圖;
圖2是本發(fā)明實施例二提供的視頻編碼的裝置的結構示意圖;以及
圖3是本發(fā)明實施例二提供的視頻編碼的裝置的優(yōu)選結構示意圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
以下結合具體實施例對本發(fā)明的具體實現(xiàn)進行詳細描述:
實施例一:
圖1示出了本發(fā)明實施例一提供的視頻編碼的方法的實現(xiàn)流程,為了便于說明,僅示出了與本發(fā)明實施例相關的部分,詳述如下:
在步驟s101中,接收視頻源文件,將視頻源文件的視頻流和音頻流進行分離。
本發(fā)明實施例適用于視頻編碼平臺或系統(tǒng)。接收用戶輸入的待編碼的視頻源文件,由于視頻和音頻的編碼方式不同,需通過預設的分離器將視頻源文件的視頻流和音頻流分離開來,其中,視頻源文件為拍攝后未經(jīng)編碼處理的視頻文件,被分離出來的音頻流轉換為wav格式。具體地,分離器可為ffmpeg工具。
在步驟s102中,將分離后的視頻流輸入到預設的vapoursynth控件中,通過vapoursynth控件生成vpy格式的視頻文件。
在本發(fā)明實施例中,vapoursynth是一個視頻腳本控件,或者說是一個用于支持開發(fā)python腳本的frameserver(幀服務器)的庫,具備多線程處理能力,可以作為視頻編碼中的橋梁,在視頻文件和視頻編碼應用中承擔一個“中間人”的角色。先建立一個python腳本語言,打開該腳本語言后,將視頻流輸入通過vapoursynth控件中,其中,可通過avisource.avisource函數(shù)輸入avi格式的視頻流、通過ffms2.source函數(shù)輸入mp4格式的視頻流,再為將要輸出的視頻文件設置視頻分辨率。在視頻流中截取預設數(shù)量個視頻片段,將所有截取的視頻片段合并得到vpy格式的視頻文件,以對視頻流進行進一步的處理。其中,vpy格式可以有效地防止視頻被反編譯或者被破解。
在步驟s103中,對vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對音頻流進行編碼,以得到對應的音頻文件。
在本發(fā)明實施例中,預設的視頻編碼器可能無法直接識別vpy格式的視頻文件,需先對vpy格式的視頻文件進行解析,以將vpy格式的視頻文件轉換為編碼工具可以識別的文件。接著,通過視頻編碼器對解析后的視頻文件進行編碼,生成編碼的音頻文件,同時,通過預設的音頻編碼器對視頻源文件的音頻流進行編碼。其中,視頻編碼器可為x264、mencoder等。
在步驟s104中,將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻。
在本發(fā)明實施例中,將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻。作為示例地,使用ffmeg工具將編碼的視頻文件和編碼的音頻文件封裝為mkv、mp4等格式。
在本發(fā)明實施例中,將視頻源文件的視頻流和音頻流進行分離,將分離后的視頻流輸入到預設的vapoursynth控件中,生成vpy格式的視頻文件,再對vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對音頻流進行編碼,以得到對應的音頻文件,將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻,從而通過使用多線程的視頻處理空間vapoursynth作為視頻編碼的橋梁,有效地提高了計算機資源的充分利用,有效地提高了視頻編碼的效率。
本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質,如rom/ram、磁盤、光盤等。
實施例二:
圖2示出了本發(fā)明實施例二提供的視頻編碼的裝置的結構,為了便于說明,僅示出了與本發(fā)明實施例相關的部分,其中包括:
音視頻分離模塊21,用于接收視頻源文件,將視頻源文件的視頻流和音頻流進行分離。
在本發(fā)明實施例中,接收用戶輸入的待編碼的視頻源文件,由于視頻和音頻的編碼方式不同,需通過預設的分離器將視頻源文件的視頻流和音頻流分離開來。
視頻流輸入模塊22,用于將分析后的視頻輸入到預設的vapoursynth控件中,通過vapoursynth控件生成vpy格式的視頻文件。
在本發(fā)明實施例中,打開該腳本語言后,將視頻流輸入通過vapoursynth控件中,其中,可通過avisource.avisource函數(shù)輸入avi格式的視頻流、通過ffms2.source函數(shù)輸入mp4格式的視頻流,再為將要輸出的視頻文件設置視頻分辨率。在視頻流中截取預設數(shù)量個視頻片段,將所有截取的視頻片段合并得到vpy格式的視頻文件,以對視頻流進行進一步的處理。
音視頻編碼模塊23,用于對vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對音頻流進行編碼,以得到對應的音頻文件。
在本發(fā)明實施例中,預設的視頻編碼器可能無法直接識別vpy格式的視頻文件,需先對vpy格式的視頻文件進行解析,以將vpy格式的視頻文件轉換為編碼工具可以識別的文件。接著,通過視頻編碼器對解析后的視頻文件進行編碼,生成編碼的音頻文件,同時,通過預設的音頻編碼器對視頻源文件的音頻流進行編碼。
音視頻封裝模塊24,用于將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻。
優(yōu)選地,如圖3所示,音視頻分離模塊21包括:
音頻流分離轉換模塊311,用于接收視頻源文件,通過預設的分離器將視頻源文件的音頻流分離出來,并將音頻流轉換為wav格式。
優(yōu)選地,視頻流輸入模塊22包括輸入設置模塊321和片段截取合并模塊322,其中:
輸入設置模塊321,用于將分離后的視頻流輸入到vapoursynth控件中,設置vpy格式視頻文件的視頻分辨率;以及
片段截取合并模塊322,用于在視頻流中截取預設數(shù)量個視頻片段,將所有截取的視頻片段進行合并,生成vpy格式的視頻文件。
優(yōu)選地,音視頻編碼模塊23包括視頻解析模塊331、視頻編碼模塊332和音頻編碼模塊333,其中:
視頻解析模塊331,用于對vpy格式的視頻文件進行解析,以將vpy格式轉換為預設的視頻編碼器的識別格式;
視頻編碼模塊332,用于通過視頻編碼器對解析后的視頻文件進行編碼,生成編碼后的視頻文件;以及
音頻編碼模塊333,用于通過預設的音頻編碼器對音頻流進行編碼,生成對應的音頻文件。
將視頻源文件的視頻流和音頻流進行分離,將分離后的視頻流輸入到預設的vapoursynth控件中,生成vpy格式的視頻文件,再對vpy格式的視頻文件進行解析和編碼,以得到編碼后的視頻文件,同時對音頻流進行編碼,以得到對應的音頻文件,將編碼后的視頻文件和對應的音頻文件進行格式封裝,生成預設視頻格式的編碼視頻,從而通過使用多線程的視頻處理空間vapoursynth作為視頻編碼的橋梁,有效地提高了計算機資源的充分利用,有效地提高了視頻編碼的效率。
在本發(fā)明實施例中,視頻編碼裝置的各模塊可由相應的硬件或軟件模塊實現(xiàn),各模塊可以為獨立的軟、硬件模塊,也可以集成為視頻編碼裝置的一個軟、硬件模塊,在此不用以限制本發(fā)明。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。