我擁有的是一部帶有視訊串流和音訊串流的 MP4 電影。
我想要的輸出是一個 MP4 文件,其中包含:
- 相同的視訊串流
- 相同的音訊串流
- 具有較低位元速率的相同視訊串流
誰能告訴我合適的 ffmpeg 指令嗎?
答案1
原則上是這樣完成的。編碼為較低位元率,無音訊。當然,這假設您有 H.264 影片。檢查編碼指南了解更多。
ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4
然後,合併您的文件:
ffmpeg -i input.mp4 -i lower.mp4 -c copy -map 0:v -map 0:a -map 1:v output.mp4
這將獲取第一個檔案的第一個視訊和音訊串流以及第二個檔案的第一個視訊串流,並將它們複製到輸出容器。
不過,正如 @trikly 所提到的,這樣做並沒有真正的優勢。特別是因為您已經用「視訊串流」標記了您的問題,請注意,透過在容器內添加另一個串流,您將增加客戶端必須下載的檔案的大小,而不是僅提供較小的表示,這是您通常希望在頻寬受限的環境中執行的操作。
真正的解決方案是做某種自適應串流媒體,使用 MPEG-DASH 或 HLS*。 ffmpeg 可以建立可用於 DASH 和 HLS 串流的分段文件,但您還需要產生元資訊檔案等。
如果設定太多,您只需提供兩種不同格式的視頻,每種格式都有自己的連結。
*可擴充視訊編碼也是出於類似的目標而設計的,但目前還沒有人真正使用它。