我想將輸入視頻的關鍵幀間隔設置爲5秒。只有這樣我才能使用FFmpeg實現恆定的5秒HLS分段。如何使用FFmpeg將關鍵幀間隔設置爲5秒? (FFmpeg提示行代碼讚賞)如何更改ffmpeg中的關鍵幀間隔
回答
您需要重新編碼。將x264的keyint參數設置爲5 * fps並禁用scenecut。如果你的FPS是例如24:
ffmpeg -i <input> -vcodec libx264 -x264-params keyint=120:scenecut=0 -acodec copy out.mp4
這顯然不是最佳的質量,但它會符合您的需求。
按照嘆氣男孩的建議,編輯將no-scenecut
更改爲scenecut=0
。
感嘆。
關於no-scenecut選項的錯誤信息已經持續了比我所記得的更長的時間。永遠不要爲無景物剪裁輸入一個值。
鏈接到文檔可以找到here。
對於FFmpeg的,你需要使用下面的兩個開關:
-g 120將確定120幀的GOP創建五秒GOP爲23.976fps內容。這可與no-scenecut選項一起使用。
-x264opts no-scenecut將強制關鍵幀根據FFmpeg使用的GOP值創建。 libx264的默認值是在檢測到場景更改時創建關鍵幀。如果使用MediInfo檢查輸出文件而沒有該選項,將會看到「scenecut = 40」。正確完成後,這將是「scenecut = 0」。如果未使用此選項,則ABR內容的關鍵幀將不對齊,並且段大小將不可預知。
請不要誤會我的意思,請在bash shell下運行以下代碼,其中$ inputfile是要分析的文件的名稱。如果使用上面顯示的兩個開關,則會在命令提示符下看到關鍵幀轉儲的非常平穩的節奏。
ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv $inputfile | grep -n I | cut -d ':' -f 1
您也可以參考我寫了一封關於如何創建一致的內容here適當ABR框架的文章。
要獲得完整的準確性,您應該使用'frame = key_frame'。有可能有I幀不是關鍵幀。 – Mulvya
- 1. 無法更改視頻關鍵幀間隔使用的ffmpeg
- 2. 如何強制FFMpeg不要更改關鍵幀序列
- 3. 如何使用帶h.264_qsv的ffmpeg以給定間隔強制關鍵幀?
- 4. 使用安卓相機更改關鍵幀間隔
- 5. FFMPEG限制關鍵幀
- 6. FFMPEG閱讀關鍵幀
- 7. ffmpeg關鍵幀提取
- 8. Windows中的ffmpeg關鍵幀提取
- 9. 如何設置RTMFP流的關鍵幀間隔?
- 10. 如何破解ffmpeg將I幀視爲關鍵幀?
- 11. 使用ffmpeg更改幀率
- 12. FFmpeg的靜態關鍵幀速率
- 13. 動態更改JavaFX中的關鍵幀時間屬性
- 14. 如何停止和更改Javascript中的CSS關鍵幀?
- 15. 由remux FFMPEG修剪不寫關鍵幀
- 16. 如何控制ffmpeg的關鍵幀生成?
- 17. 關鍵幀動畫的關鍵時間
- 18. 動態更改關鍵幀CSS Firefox
- 19. 使用關鍵幀CSS更改內容
- 20. 如何使用原始JavaScript更改CSS3關鍵幀動畫的持續時間
- 21. 如何更改元素上的關鍵幀位置
- 22. 在AVAsset中檢測當前關鍵幀間隔
- 23. 在關鍵幀動畫期間更改不透明度Swift
- 24. CSS3關鍵幀 - 更改動畫持續時間導致「跳躍」
- 25. 如何更改perfmon時間軸間隔
- 26. 設置H264實時視頻編碼的關鍵幀間隔
- 27. 如何使用ffmpeg更改部分視頻的幀速率
- 28. 如何更改/更新NSTimer中的時間間隔?
- 29. 如何更改FFMPEG中的採樣率
- 30. 更改CSS3關鍵幀動畫中的其他元素屬性
感謝你......你說得對,經常會出現關鍵幀間隔混亂的問題。 –
你有沒有說「如果我們設置關鍵幀間隔,質量壞的事情發生」的任何消息來源? –
它會損害質量或比特率。有一個場景剪輯時,智能編碼器將放置關鍵幀,以便將來的幀可以有乾淨的參考。如果您強制設置時間間隔,關鍵幀在未來的幀中將不會達到最佳效果,並且這會影響整個流。 – Ely