我计划使用ffmpeg和java,检测一个特定的编解码器并将其转换为另一个。使用ffmpeg行-
ffprobe -v quiet -print_format json -show_streams "input.avi"
我可以打印出所有的流信息的视频,但这包括视频信息,音频信息,所有的元数据,所有的标签和其他信息,我只是不需要。问:是否可以启动一个只返回视频编解码器的ffmpeg命令,这样我就不必浏览不必要的信息了?
ryoqjall1#
这在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)
qq24tv8q2#
可能有点晚了,这里有一个命令来显示第一个视频流的编解码器名称:
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
hsvhsicv3#
把绳子弄成灰色怎么样? 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"
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
ffprobe -v quiet -show_streams -select_streams v input.avi | find /i "codec_name"
3条答案
按热度按时间ryoqjall1#
这在windows/vbscript上运行得很好(是的,需要多个兔子耳朵:
qq24tv8q2#
可能有点晚了,这里有一个命令来显示第一个视频流的编解码器名称:
或者,一个较短的替代方案:
另请参见http://www.ffmpeg.org/ffprobe.html
hsvhsicv3#
把绳子弄成灰色怎么样?
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"