Java FFMPEG额外视频编码信息

Java FFMPEG额外视频编码信息,java,video,ffmpeg,video-processing,Java,Video,Ffmpeg,Video Processing,我计划使用FFMPeg和Java,来检测一个特定的编解码器并将其转换为另一个。使用FFMpeg行- ffprobe -v quiet -print_format json -show_streams "input.avi" 我可以打印视频的所有流信息,但这包括视频信息、音频信息、所有元数据、所有标签和其他我不需要的信息 问:是否可以启动一个只返回视频编解码器的FFMpeg命令,这样我就不必浏览不必要的信息 简单地将字符串对齐怎么样 ffprobe-v quiet-show_stream

我计划使用FFMPeg和Java,来检测一个特定的编解码器并将其转换为另一个。使用FFMpeg行-

    ffprobe -v quiet -print_format json -show_streams "input.avi"
我可以打印视频的所有流信息,但这包括视频信息、音频信息、所有元数据、所有标签和其他我不需要的信息

问:是否可以启动一个只返回视频编解码器的FFMpeg命令,这样我就不必浏览不必要的信息

简单地将字符串对齐怎么样

ffprobe-v quiet-show_streams-select_streams v input.avi | grep“codec_name”

您还可以
剪切
输出并读取普通字符串:

ffprobe-v quiet-show_streams-select_streams v output.mpg | grep“codec_name”| cut-d=-f2

如果您在windows上:


ffprobe-v quiet-show_streams-select_streams v input.avi | find/i“codec_name”

可能有点太晚了,这里有一个命令显示第一个视频流的编解码器名称:

ffprobe -v quiet \
  -select_streams v:0 \
  -show_entries 'stream=codec_name' \
  -print_format 'default=nk=1:nw=1' INFILE
或者,一个较短的替代方案:

ffprobe -v quiet \
    -select_streams v:0 \
    -show_entries 'stream=codec_name' \
    -of 'csv=p=0' INFILE

另请参见

中的文档,这在Windows/VBScript上运行良好(是的,需要多个兔子耳朵:

Set objShell = CreateObject("WScript.Shell")

TheCommand = "cmd /c [PathTo]\ffprobe.exe -v quiet -show_streams -select_streams v ""    [PathTo]\FileName.avi"" | find /i ""codec_name""" 

Set objExec = objShell.Exec(TheCommand)

Do
    retCodec = retCodec & objExec.StdOut.ReadLine()
Loop While Not objExec.Stdout.atEndOfStream

WScript.Echo(retCodec)

您可以在
ffprobe
中添加
-选择\u streams
选项以仅输出视频信息。
-选择\u streams v
将输出所有视频流(如果有多个视频流),和
-选择\u streams v:0
将只输出第一个视频流。有关详细信息,请参阅和的文档。@EladG-我无法在windows上进行grep,很遗憾,否则这将是完美的。@LordNeckbeard-我也尝试了您的提示,但没有任何积极的结果。我有一行ffprobe-选择\u streams v“input.wmv"它会打印信息,但我看不到任何关于编解码器的内容。@EladG-我会快速运行它。工作起来就像做梦一样!谢谢朋友。我欠你一杯啤酒。@EladGI目前正在开发一个递归版本,它将通过文件夹结构运行并将结果导出到CSV文件。如果有人感兴趣,很高兴与大家分享……作为回报,也许有人可以n回答这个问题:我必须将AVI转换为XVID编解码器,有没有简单的方法?