2016-12-13 143 views
1

我通過ffprobe使用此代碼提取視頻信息:ffprobe選擇音頻和視頻流

ffprobe -show_streams -of json -v quiet -i input.mp4 

,而我需要的訴只有所有信息流的信息出現在輸出:0和:0流。

我知道有-select_streams選項用於流選擇,但它只接受一個參數,如:-select_streams v:0

我可以使用-select_streams兩個參數v:0a:0或使用它兩次嗎?

回答

1

您可以簡單地忽略-select_streams參數,並使用-show_entries參數傳遞 領域,你想在輸出看到,像這樣:

ffprobe -show_streams -show_entries format=bit_rate,filename,start_time:stream=duration,width,height,display_aspect_ratio,r_frame_rate,bit_rate -of json -v quiet -i input.mp4 

這應該給你類似這樣的輸出:

{ 
    "programs": [ 

    ], 
    "streams": [ 
     { 
      "width": 360, 
      "height": 202, 
      "display_aspect_ratio": "16:9", 
      "r_frame_rate": "2997/100", 
      "duration": "68.601935", 
      "bit_rate": "449366", 
      "disposition": { 
       "default": 1, 
       "dub": 0, 
       "original": 0, 
       "comment": 0, 
       "lyrics": 0, 
       "karaoke": 0, 
       "forced": 0, 
       "hearing_impaired": 0, 
       "visual_impaired": 0, 
       "clean_effects": 0, 
       "attached_pic": 0 
      }, 
      "tags": { 
       "language": "eng", 
       "handler_name": "VideoHandler" 
      } 
     }, 
     { 
      "r_frame_rate": "0/0", 
      "duration": "68.475646", 
      "bit_rate": "65845", 
      "disposition": { 
       "default": 1, 
       "dub": 0, 
       "original": 0, 
       "comment": 0, 
       "lyrics": 0, 
       "karaoke": 0, 
       "forced": 0, 
       "hearing_impaired": 0, 
       "visual_impaired": 0, 
       "clean_effects": 0, 
       "attached_pic": 0 
      }, 
      "tags": { 
       "language": "eng", 
       "handler_name": "SoundHandler" 
      } 
     } 
    ], 
    "format": { 
     "filename": "input.mp4", 
     "start_time": "0.000000", 
     "bit_rate": "522013" 
    } 
} 

從中你可以只索引到你想要的,如在PowerShell中的數據流,與返回的JSON對象流:

PS C:\Users\User> $json.streams[0] 


width    : 360 
height    : 202 
display_aspect_ratio : 16:9 
r_frame_rate   : 2997/100 
duration    : 68.601935 
bit_rate    : 449366 
disposition   : @{default=1; dub=0; original=0; comment=0; lyrics=0; karaoke=0; forced=0; hearing_impaired=0; visual_impaired=0; clean_effects=0; attached_pic=0} 
tags     : @{language=eng; handler_name=VideoHandler} 




PS C:\Users\User> $json.streams[1] 


r_frame_rate : 0/0 
duration  : 68.475646 
bit_rate  : 65845 
disposition : @{default=1; dub=0; original=0; comment=0; lyrics=0; karaoke=0; forced=0; hearing_impaired=0; visual_impaired=0; clean_effects=0; attached_pic=0} 
tags   : @{language=eng; handler_name=SoundHandler} 

有鍵字段名稱的列表,你可以從不同類型的流在這裏得到:https://trac.ffmpeg.org/wiki/FFprobeTips

0

我知道我遲到了,但如果別人搜索(從here)類似的東西:

ffprobe -show_streams -select_streams a INPUT 

其中一個代表音頻和當然可以被替換

  • v for video;
  • 一個:1屬於音頻流索引1音頻分組;
  • 五:99屬於視頻流指數99等等視頻數據包

請注意,如果您想查看2個不同的流(如音頻和視頻),則需要運行ffprobe兩次。

對於更多好吃的東西,雖然寫得很一般,但您也可以查看:https://trac.ffmpeg.org/wiki/FFprobeTips