
我有一些視訊檔案已轉換為 MP4,但不完全正確。當我使用 exiftool 檢查元資料時,我看到以下元資料值:
Duration : 0:11:23
Track Duration : 0:11:23
Media Duration : 0:04:13
最後一項是不正確的。在 VLC 媒體播放器中,影片播放得很好,但我用來在網路應用程式中播放影片的工具 (Flowplayer) 會認真對待「媒體持續時間」值並截斷影片。
為了修復我嘗試過的元數據
exiftool -"Media Duration"="0:11:23" video_1.mp4
但我得到了
Warning: Sorry, Media is not writable
Nothing to do.
須藤沒有幫助。根據其手冊頁和網站、exif工具能讀取和寫入 MP4 文件上的元數據,但“如果 ExifTool 檢測到文件格式存在重大問題,則不會重寫文件。”
我該如何修復這些文件?
編輯:我對 ffmpeg 或 mediainfo 沒有運氣。
答案1
我找到了解決方案。我沒有編輯元數據,而是使用 ffmpeg 重新編碼文件,這樣視訊和音訊內容就可以簡單地複製並包裝在新的、無錯誤的 MP4 容器中。這是命令:
ffmpeg -i video_1.mp4 -vcodec copy -acodec copy video_1_fixed.mp4
答案2
列出的 exiftool 命令不起作用有兩個原因。
首先,「媒體持續時間」不是標籤的名稱,而是描述。從ExifTool 常見問題#2
…預設情況下,它會列印所提取資訊的描述,而不是標籤名稱。 …。請注意,描述通常在單字之間包含空格,但標籤名稱從不包含空格。此外,標籤名稱始終是英文,無論
-lang
環境。若要列印標籤名稱而不是描述,請使用-s
選項擷取資訊時
第二個問題是該MediaDuration
標籤不是可寫入標籤(請參閱QuickTime 媒體標題標籤)。