我想知道在H.264編碼中丟失了什麼。我使用libx264對視頻進行編碼,並用ffmpeg對其進行解碼,然後使用相同的參數對結果視頻進行編碼,並使用相同的參數對其進行解碼,然後再對其進行第二次解碼。我預計第一個和第二個解碼視頻的大小和外觀必須相同,但是,它不是!例如,我在第一個編碼幀中的第一個片NAL單元中有13000個字節,在第二個編碼幀中有12000個字節,這是奇數。因爲在第一個編碼過程中,幀中存在的任何有損信息都應該被消除,並且第二個編碼應該是其結果相同的NAL單元的過程。我錯了,還是在我的實現中我錯了?libx264和ffmpeg如何對H.264進行編碼和解碼
1
A
回答
6
這個問題是不可能回答的。有損編解碼器實際上應該被稱爲世代有損。像複印機一樣,有史以來的一代都稍有改動。要「確切」知道將會丟失什麼的唯一方法是實際運行該算法。現代壓縮由幾個步驟組成。運動估計/補償,量化,環路濾波和解塊。並且在每個步驟去除多少信息由速率控制算法決定。根據參數和內容,這些步驟中的每一個都可能會丟失甚至添加信息。編解碼器的實現甚至可能不同。
+0
謝謝。除量化步驟外,你能解釋一下,其他部分如何處理信息丟失? –
+0
有很多關於這個主題的書籍,以及可能在互聯網上的資源,你應該從那些開始,然後問在stackoverflow上的具體問題。 – szatmary
相關問題
- 1. 使用gstreamer和ffmpeg進行H.264解碼
- 2. H.264編解碼器
- 3. 調諧FFmpeg H.264解碼器
- 4. 使用FFmpeg編碼H.264 CBR視頻
- 5. 如何使用ffmpeg以編程方式解碼H.264 HL?
- 6. 如何使用ffmpeg與h.265(或h.264)編碼?
- 7. H.264編碼器和解碼器在iOS中
- 8. 尋找JMF h.264/rtp編碼器和解碼器插件
- 9. 如何使用libx264包進行解碼?
- 10. 解碼H.264沒有流
- 11. h.264 udp流解碼
- 12. h 264硬件編碼/解碼對於IOS(IPhone/Ipad)?
- 13. 解碼在iOS上編碼爲H.264的單幀編碼
- 14. Flowplayer H.264視頻編碼
- 15. Java - h.264視頻編碼
- 16. H.264視頻編碼
- 17. 通過UDP對h.264編碼視頻進行流式處理
- 18. 我想在ffmpeg中使用libx264編解碼器。但Ffmpeg libx264的配置失敗
- 19. 使用FFMPEG進行H.264編碼 - 某些視頻不能正常工作
- 20. android:不能改變編碼視頻大小和如何編碼h.264
- 21. Windows上的FFMPEG(用於H.264 RTSP解碼)
- 22. 使用FFmpeg無法解碼H.264流(Annex.B)
- 23. 使用ffmpeg將H.264編碼數據保存到文件中
- 24. 在ffmpeg中轉儲libx264編碼參數
- 25. FFMPEG和MP3。如何解碼
- 26. 如何在Jsp中對文本進行編碼和解碼
- 27. 如何在swift中對struct NSData進行編碼和解碼?
- 28. 如何在JAVA中對SecretKey進行編碼和解碼?
- 29. 如何對此類進行編碼和解碼
- 30. 如何在VBA和C中對XML進行編碼/解碼#
大多數有損壓縮算法並不能保證使用相同參數進行解碼和重新編碼將產生相同的輸出。 – cdhowie
有沒有任何官方的參考文件發佈過這個問題? –
是什麼讓你覺得這是一個問題? – cdhowie