2016-01-08 156 views
2

我試圖將h264編碼的baseline4.0的avi文件轉換爲使用baseline3編碼的新h264 mpeg文件。FFMPEG將.avi轉換爲可播放的iOS電影mp4

文件原始文件沒有任何iOS設備上播放,由於baseline4.0(我想?)

我使用這個包裝類在這裏https://github.com/OpenWatch/FFmpegWrapper

但實際上我不知道如何設置基線。我可以轉換爲mpeg4,但似乎每次都默認爲baseline4.0。

我試圖把它放在了AVCodecContext

AVCodecContext *outputCodecContext = outputStream->codec; 
outputCodecContext->level = 31; 
outputCodecContext->profile = FF_PROFILE_H264_BASELINE; 

但這並沒有影響。

也許任何人都有線索,或者有更好的FFMPEGWrapper。

規格從原始視頻: original video

+0

你解決了你的問題嗎?我有類似的。 – Vive

回答

2

首先來看看this網站了解哪些蘋果設備支持什麼樣的:使用H.264壓縮

  • 編碼視頻

    • H.264基線3.0:所有設備
    • H.264基準3.1:iPhone 3G及更高版本,以及iPod touch第二代及更高版本。
    • H.264主要配置文件3.1:iPad(所有版本),Apple TV 2及更高版本和iPhone 4及更高版本。
    • H.264 Main Profile 4.0:Apple TV 3及更高版本,iPad 2及更高版本,iPhone 4S及更高版本。
    • H.264 High Profile 4.0:Apple TV 3及更高版本,iPad 2及更高版本,iPhone 4S及更高版本。
    • H.264 High Profile 4.1:iPad 2及更高版本和iPhone 4S及更高版本。

在每個配置文件的末尾數字是不是配置文件的版本!它的一個級別。這意味着如果你想支持所有設備,你應該堅持基線配置文件和3.0級。

我不知道關於這個包裝的東西,但使用簡單的ffmpeg可以使用此選項:

-profile:v baseline -level 3.0 

編輯

對不起,我沒注意到你已經設置了關卡(可能是以正確的方式)。但這裏還有一個提示。請注意撥打av_register_all()avcodec_register_all()撥打FFmpegWrapperinit。是否可以首先初始化包裝,然後更改AVCodecContext

+0

是的,這個包裝器並沒有真正的選項列表,就像使用命令行一樣。所以我需要像上面提到的那樣直接將值設置爲AVCodec/CodecContext。是的,我初始化包裝,然後我改變AVCodecContext,我應該如何改變? –

+0

是否有可能先創建一個包裝器對象,然後設置編解碼器上下文,然後進行初始化? – incBrain

+0

不,我需要包裝對象,因爲有觸發整個libav的東西的所有值和功能。我檢查了AVCodecContext對輸出文件的更改,當轉碼開始時,正確的值在AVCodecContext中設置,但ffmpeg不使用它。也許我必須通過libav直接設置它。 –

相關問題