2

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

    ffprobe -v quiet -print_format json -show_streams "input.avi"

我可以打印出视频的所有流信息,但这包括视频信息、音频信息、所有元数据、所有标签和其他我不需要的信息。

问题:是否可以启动只返回视频编解码器的 FFMpeg 命令,这样我就不必通过不必要的信息挥手?

4

3 回答 3

2

简单地grep字符串怎么样?

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

您还可以cut输出并读取纯字符串:

ffprobe -v quiet -show_streams -select_streams v output.mpg | grep "codec_name" | cut -d= -f 2

如果您在 Windows 上:

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

于 2013-06-06T16:50:41.437 回答
1

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

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

另请参阅http://www.ffmpeg.org/ffprobe.html上的文档

于 2013-11-15T14:11:07.183 回答
0

这在 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)
于 2014-06-18T01:47:14.557 回答