2011-10-06 120 views
1

我有一個應用程序,允許用戶從他們的庫中選擇一個視頻,或者用相機拍攝視頻,然後將它們上傳到服務器。當我將視頻發送到服務器時,我需要視頻採用特定的格式(m4v,h.264,AAC)。在iOS 5或更早版本中,視頻記錄爲.mov文件(儘管使用h.264和AAC)。在iPhone上轉換視頻

如何將視頻轉換爲m4v?無可否認,我對視頻編碼的細節和差異有點粗略,所以如果我在這裏無知,請原諒我。

+0

您是否有能力在服務器上進行轉碼? –

+0

我認爲他需要的不是*轉碼*而是容器的更換。例如。編解碼器很好,但容器是錯誤的(.mov vs m4v)。但我同意在服務器上執行它可能會更好。 – haimg

+0

另請參閱:http://超級用戶。COM /問題/ 960431 /什麼-ffmpeg的命令,將變頻-A-視頻換的ipad,iphone,ipod的 –

回答

4

David,我可以建議你的服務器進行轉碼嗎?在手機上進行轉碼是複雜而乏味的。然而,iPhone已經使用h.264和AAC編碼,所以你確定你甚至需要做任何事情? .mov vs .m4v對你來說可能並不重要,所有的擴展指示的是容器支持的原子。我發現90%的時間視頻非常基本,並使用容器格式的最小特徵集。比較檢查維基頁面:http://en.wikipedia.org/wiki/Comparison_of_container_formats

你總是可以使用Atom Box Viewer仔細檢查文件的結構(有一個2天的試用版下載期,它可以用於調查視頻文件結構)http://www.jongbel.com/?page_id=114。不幸的是,它不是很直觀,因爲它假定你對視頻容器有了解,但是,你可以很快地判斷你的目標容器是否與你從iPhone獲得的容器相匹配。

如果您確實需要強制執行容器/內容語義,儘管編寫自己的代碼轉換器不足,但我建議您考慮使用ffmpeg http://ffmpeg.org/。 ffmpeg支持音頻和視頻的許多不同容器和格式。例如,您可以通過調用它像這樣執行自己的標準:

ffmpeg.exe -i inputFile.mp4 -vcodec libx264 -s 320x240 -acodec libfaac outputFile.m4v 

我給你的是很簡單的例子,把它分解了這一點:

-i => input file 
-vcodec libx264 => video codec set to use h.264 using the x264 encoder. to list more you can do: ffmpeg -formats 
-s 320x240 => here I'm just explicitly specifying my size. If you don't set a size it will use whatever the input source size is 
-acodec libfaac => use the faac AAC encoding library to transcode the audio 

,最終輸出文件作爲最後一個參數

如果你願意,你可以得到更具體的信息,指定你需要多少次編碼通行證(2次通過會給你更好的壓縮和更少的瑕疵),你的目標比特率是多少(也許你想限制你的將代碼轉換爲一定數量的數據有效地流?)。

讓我建議你去http://forum.doom9.org/這是一個很好的論壇,更詳細的視頻編碼/轉碼。其他鏈接http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs有其他ffmpeg配置,您可能會覺得有用。

另外一個可供你使用的GUI設置是http://handbrake.fr/(手剎),它實際上是一個ffmpeg包裝。

手剎捆綁ffmpeg與它的安裝,所以我會從那裏得到它。請注意ffmpeg/handbrake上的許可,因爲它們是在法國發布的,我不確定您可以將它分發給您的應用程序,但您可能可以在服務器端使用它。我總是模糊這件事的合法性。

我希望這至少能指引您朝着正確的方向發展。