2013-01-18 41 views
4

我的最終目標是創建一個FFmpeg命令,將我的h264.DTS.mkv文件轉換爲與AppleTV兼容的格式,同時保留原來的質量。如何禁用FFmpeg中用於mp4文件的非第一音頻流/曲目

我幾乎在那裏,但我一直無法弄清楚如何禁用流/軌道。

到目前爲止我有:

ffmpeg -i FILE \ 
-y -strict experimental \ 
-map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \ 
-c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \ 
OUTPUT 

這就產生,看起來像一個輸出文件:

  1. H264視頻軌道(啓用)
  2. AAC 2聲道音頻[由原來的複製]跟蹤(啓用)
  3. AC3 6聲道音頻軌道(啓用)
  4. DTS 6聲道音頻軌道(啓用)[警察從原創]
  5. 字幕軌(啓用)滅蠅燈

的問題是我需要它看起來像:

  1. 1 H264視頻軌道(從原來的複製)(啓用)
  2. 1 AAC 2聲道音頻軌道(啓用)
  3. 1 AC3 6聲道音頻軌道(禁用)
  4. 1 DTS 6聲道音頻軌道(警察從原來的IED)(禁用)
  5. 1字幕軌(啓用)

因此,我需要知道我可以禁用非一日音頻流/曲目。

從我讀到的,這是位於「tkhd.flags」位置的軌道標題原子的一部分。但我一直無法弄清楚如何通過命令行參數進行設置。

任何幫助將不勝感激。

回答

2

你檢查了這個:http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option 只是不要複製你不需要的輸出流。

ffmpeg -i FILE \ 
-y -strict experimental \ 
-map 0:0 -map 0:1 -map 0:4 \ 
-c:0 copy -c:1 aac -ac:a 2 -c:4 mov_text \ 
OUTPUT 

我希望我得到了你正確的問題!

+0

我想你已經誤解了,但是我需要上面列出的所有輸出流,但是一些音頻流已禁用。在mp4容器中,其中一個可能的流標頭是「禁用的」。禁用的流仍然可以播放,但是播放器默認不播放它,它需要用戶切換到該流。此流的一個示例使用是流中的不同語言音軌。在我的情況下,我正在使用此功能來獲得多個高質量的音頻流。 – Dipesh

+0

默認播放器播放哪個音頻流?它不會選擇第一個嗎?那樣的話,那不是你想要的嗎? – d33pika

0

禁用音軌並不意味着完全刪除它。

看到的畫面

enter image description here

+0

圖片應該顯示的是什麼(既然是俄文),這個問題如何回答? – NSNoob

2

你好Dipesh這將解決你的問題。

的問題

你試圖完成什麼是標誌哪個音頻流將是默認的,而在所有不需要的音頻流否定了這個標誌。當試圖選擇哪個(如果有的話)字幕軌道將被默認和/或可能被強制時,該解決方案將是類似的。

的通用解決方案

的FFmpeg會自動標記所有default無需用戶干預。因此該標誌將需要在所有流上設置爲-default,除了所期望的那個流之外。該問題可以通過使用以下命令解決:value = -default。其使用

-disposition[:stream_specifier] value (output,per-stream) 

詳細信息可在FFmpeg Documentation5.4主要選項被發現。

特定的解決方案

ffmpeg -i FILE \ 
-y -strict experimental \ 
-map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \ 
-c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \ 
-disposition:a -default -disposition:a:0 default \ 
OUTPUT 

在解決-disposition:a -default標誌所有音頻流輸出文件默認。而-disposition:a:0 default將輸出文件中的第一個音頻流標記爲默認值。

相關問題