0

我正在使用h264優化用於網絡的MP4。我有一段視頻,其中最初的1-2秒內有一些據說是損壞的幀。使用(框下面提供)Corrupt Frame As seen in VLC Media Player.FFMPEG在使用h264編碼器進行代碼轉換時從原始視頻中丟棄據稱損壞的幀

在轉碼:

ffmpeg -i orig.mp4 -c:v libx264 -crf 25 -vf scale="-2:min(ih\,720)" -b:v 600K -g 90 -c:a libfdk_aac output.mp4 

輸出MP4有這些幀退學了,我有我的輸出與它的開始從原始視頻延遲約1〜2秒,從而導致輸出視頻的整體時間更短。此外,大多數媒體播放器在回放時也會跳過這些幀(如快速播放器等)。但是VLC媒體播放器能夠在不跳過這些幀的情況下播放該視頻。

有沒有辦法不使用ffmpeg丟幀?如果可能的話,是否有可能在視頻中識別並修復這些幀?

注:我嘗試編碼使用AWS彈性轉碼器實際上固定這些幀(幀下面提供)相同的視頻: Frame from video transcoded by Elastic Transcoder

注:原始視頻可以在這裏找到 - https://drive.google.com/file/d/0B9VkhR9Zu60ybXFDeno3RGpQTUE/view?usp=sharing 視頻由AWS轉碼Elsatic轉碼器可以在這裏找到 - https://drive.google.com/file/d/0B9VkhR9Zu60yWUVHQk5MTk05QVk/view?usp=sharing

EDIT1:如意見建議的@Mulvya,TS-轉碼的視頻可以在這裏找到 - (https://drive.google.com/file/d/0B9VkhR9Zu60yU0t6T0dMME9ZMmc/view?usp=sharing

+0

我不能和你原來的視頻重現行爲。 – Mulvya

+0

嗨。嘗試使用VLC媒體播放器打開原始視頻。您將能夠在1到2秒內觀察到損壞的幀。另請看看由AWS彈性轉碼器轉碼的視頻 - (https://drive.google.com/file/d/0B9VkhR9Zu60yWUVHQk5MTk05QVk/view?usp=sharing)。您將清楚地看到初始幀和視頻持續時間的差異。此轉碼是使用有問題的原始視頻完成的。 – t6nand

+0

如果有助於重現問題,只需添加,我嘗試使用ffmpeg和vlc媒體播放器從原始視頻中提取每一幀。 Ffmpeg開始在這些被破壞的幀之後進行提取。然而,使用VLC上的視頻場景過濾器來提取幀,我能夠得到這些被破壞的幀,如問題所示。 – t6nand

回答

1

您的源視頻有一些沒有時間戳的幀。

在這種特殊情況下,提取原始比特流,然後轉碼工作:

ffmpeg -i orig.mp4 -c copy orig.264 

ffmpeg -i orig.264 -i orig.mp4 -map 0 -map 1:a -c:v libx264 -crf 25 -vf scale="-2:min(ih\,720)" -b:v 600K -g 90 -c:a libfdk_aac output.mp4 
+0

雖然這個工程。但是最終視頻中的音頻似乎不同步。 – t6nand

+0

通過將音頻流與視頻流同步來解決問題。謝謝。 – t6nand