有没有办法使用支持库中的MediaMetadataCompat附加功能?
使用MediaMetadata我可以设置额外内容,但使用compat,我不能.
亲爱的 Stack Overflow 的朋友们,我注意到这里有很多类别的提问模式,但为了这个主题,我将讨论 MediaInfo CLI。同类型的问题不断重复出现,因为源问题没有解决,就是教人钓鱼,而不是喂鱼。
有人问:“我不知道如何仅从 MediaInfo 获取 BitRate”。他们受到尊重,回答他们的高级用户也受到尊重。其他人对 FrameRate、Duration 和 Resolution 提出了同样的问题……我尊重他们,也尊重回答他们的人。
然而,我真的很抱歉这个过程是多余的。不幸的是,MediaInfo 网站文档没有说明如何正确使用带有 CLI 版本的 MediaInfo.exe 来提取特定信息,并且 --Info 参数只是列出了很多参数,而没有说明如何使用它们。
因此,为了使用 MediaInfo.exe CLI 提取视频的特定信息,我只需要在这里提问,因为我无法自己自定义参数,因为我没有获得文档中的语法。我会采取简单的方法来问你我需要从视频中提取什么样的信息,但是每个不知道语法的人都会回来问多余的问题。
相反,我决定通过编写所有这些来浪费您更多的时间,希望您能帮助我和其他所有来搜索有关如何使用 MediaInfo CLI --Info-Parameters 语法的特定问题的人,以便不会为每个自定义查询重复答案。
老实说,我想了解如何使用它,而不仅仅是复制粘贴我将收到的现成的单行答案。
我将首先提到我所知道的,任何新的询问者都可以从我所知道的很少中学习,然后我会请你教我如何编写正确的 MediaInfo --Info-Parameters 语法来提取特定的视频信息.
在终端上运行以下命令:
MediaInfo.exe --help >Help.txt
MediaInfo.exe --Info-Parameters >Info_Parameters.txt
现在您有一些帮助文件来搜索您需要的信息。这个简单文档的其余部分取决于我的 StackOverflow 成员的慷慨。
为了更清楚我的问题,一劳永逸:如何为 MediaInfo.exe CLI 编写正确的语法以提取特定信息,例如帧速率、持续时间和分辨率?我需要比现成的解决方案更了解语法,以便以后能够对其进行自定义。
感谢您的时间!
根据 MediaInfo ChangeLog,Amazon S3 支持已在 v0.7.76 中添加,甚至在 v0.7.77(最新)中进行了修补。
但是,我找不到有关如何实现它的任何文档。它不在 CLI 帮助菜单中,也不在 SourceForge 项目页面中。我希望这里有人可能有一些见解,因为 SourceForge 论坛已关闭。
如何制作 MediaInfo 命令以将 Amazon S3 与访问密钥和秘密密钥一起使用?我正在使用 CLI。
我能找到的最接近的东西是某人的示例 Java 代码:http : //fossies.org/linux/MediaInfo_CLI/MediaInfoLib/Source/Example/HowToUse_Dll.JNA.java
看起来他们正在为 S3 制作自定义 HTTP 请求并将响应流式传输到 MediaInfo。我不知道。我不懂 Java;我只知道 Bash、Ruby、PHP。
有没有人成功地让 MediaInfo 与 S3 一起工作?像这样的东西?
mediainfo https://AWSAccessKeyId:AWSSecretAccessKey@s3.amazonaws.com/bucketname/filename
Run Code Online (Sandbox Code Playgroud) 我想使用 ffprobe 找出视频文件的确切格式/容器,但我无法到达它的“确切”部分。
当我运行此示例命令时:
ffprobe -hide_banner -loglevel fatal -show_error -show_format -print_format json INPUT
我收到以下输出:
{
"format": {
"filename": "INPUT",
"nb_streams": 2,
"nb_programs": 0,
"format_name": "matroska,webm",
"format_long_name": "Matroska / WebM",
"start_time": "0.000000",
"duration": "2.969000",
"size": "2376430",
"bit_rate": "6403314",
"probe_score": 100,
"tags": {
"COM.ANDROID.VERSION": "9",
"MAJOR_BRAND": "mp42",
"MINOR_VERSION": "0",
"COMPATIBLE_BRANDS": "isommp42",
"COM.ANDROID.CAPTURE.FPS": "30.000000",
"ENCODER": "Lavf57.83.100"
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您可能已经理解的, ffprobe 给出了value内的格式列表format_name。对于 mp4、mkv、webm 等多种视频格式来说都是如此。
然而,mediainfo能够找出格式的确切类型Format,即它输出如下所示的单个:
命令:mediainfo INPUT
输出:
General
Unique ID : 41836023869371892704046005573890259380 (0x1F79533A912A2117C3D4CEB704EAB9B4) …Run Code Online (Sandbox Code Playgroud) 鉴于我有一个.wav文件,在C#中读取其比特率属性的最佳方法是什么.我试过Shell,并问了一个问题"比特率"属性是否固定在索引28中?没有asnwers所以.此外,我现在相信Shell不是读取音频文件属性的最佳方式.我研究过不同的开源媒体库,但是找不到多少.
TagLib#:这个工作正常,但有两个问题.在比特率非常低(如小于30)的某些情况下,它不反映实际比特率,它只返回0.其次,我不确定是否可以将其用于商业用途.许可证说 http://opensource.org/licenses/LGPL-2.1
NAudio:根本没有暴露任何属性来读取比特率,所以我必须计算它.经过研究,我得到了这个公式来计算比特率.bitrate = Samplerate*Channels*BitsPerSample.这在大多数情况下都可以正常工作,但是如果某些.wav文件的BitsPerSample = 0则会失败.是的文件绝对没问题,我可以播放,但BitsPerSample仍为0.
MediaInfo:再次没有直接属性,必须遍历音频文件的所有属性,然后搜索"整体比特率".而且必须在项目中添加两个dll,一个是.net包装器,另一个是实际的dll.
为这么长的总结道歉,但我不想问"嘿我怎么能得到音频文件的比特率"而不显示我已经做过的事情.那么,如果你有一个.wav音频文件,你会用什么库/方法来获得比特率?
目录包含2个(或更多)具有任意随机名称的视频文件.
video1.mkv
video2.mkv
Run Code Online (Sandbox Code Playgroud)
需要找出每个视频的持续时间.为此,我们使用MediaInfo.
setlocal EnableDelayedExpansion
for %%a in (*.mkv) do (
for /f "usebackq" %%a in (`"mediainfo --Inform=Video;%%Duration%% %%a"`) do set duration=%%a
echo "!duration!" > "data.txt"
)
Run Code Online (Sandbox Code Playgroud)
问题是,它只打印1个值/持续时间(我认为是最后一个文件).它有效,只购买一个文件.
如何使其与目录中的所有文件一起使用?
windows batch-file command-line-interface mediainfo windows-10
我需要从视频文件中提取元数据信息以及该文件的缩略图.为此,我尝试了ffmpeg,并在stdout上看到元数据(如持续时间,分辨率,编解码器,creation_time等).如果我需要使用这些,我应该解析stdout并提取我需要的元数据.
我还读到了MediaInfo实用程序,它也提供了元数据.我不确定它是否可以提供缩略图.我也知道MediaInfo并没有使用ffmpeg.
我想知道是否有人对ffmpeg和MediaInfo以及我上面提到的要求都有工作知识,是否有人可以建议哪两个更适合.
两者的内存占用比较也很大.
如何以毫秒为单位查找视频文件的持续时间,即以确定的方式以整数形式查找.我使用ffprobe来获取持续时间,但它没有给出所有文件格式的持续时间.
我正在尝试在 Zenity 对话框中显示一些 mediainfo 输出,使用
mediainfo 00000.MTS | zenity --text-infoRun Code Online (Sandbox Code Playgroud)
和这里的有结果。如图所示,由于空格,文本格式错误,而在 terminal 中显示恰到好处。
我可以改变这个吗?此外,是否可以格式化特定的文本字符串(例如:“常规”和“视频”标题)?
我正在开发一个程序,该程序扫描放置文件夹中的文件,并将它们注册到另一个需要文件持续时间的系统。到目前为止,我能找到的最佳解决方案是使用 MediaInfo 从标头获取持续时间,但由于某种原因,它往往需要几秒钟才能返回结果。
假设我有 1,000 个文件路径的列表,并且我想获取每个文件路径的持续时间,但获取持续时间需要 15 秒。对列表进行线性迭代只需要 4 个多小时,甚至并行运行 8 个任务也需要半个小时。根据我的测试,这将是最好的情况。
我尝试过使用 MediaInfo DLL 以及调用 .exe,两者似乎都有相似的处理时间。
DLL代码:
MediaInfo MI;
public Form1()
{
InitializeComponent();
MI = new MediaInfo();
}
private void button1_Click(object sender, EventArgs e)
{
MI.Open(textBox1.Text);
MI.Option("Inform", "Video;%Duration%");
label2.Text = MI.Inform();
MI.Close();
}
Run Code Online (Sandbox Code Playgroud)
可执行代码:
Process proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "MediaInfo.exe",
Arguments = $"--Output=Video;%Duration% \"{textBox1.Text}\"",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
StringBuilder line = new StringBuilder();
proc.Start(); …Run Code Online (Sandbox Code Playgroud) mediainfo ×10
ffmpeg ×3
c# ×2
ffprobe ×2
video ×2
amazon-s3 ×1
android ×1
audio ×1
batch-file ×1
c#-4.0 ×1
chromecast ×1
formatting ×1
info ×1
metadata ×1
multimedia ×1
naudio ×1
parameters ×1
syntax ×1
taglib-sharp ×1
windows ×1
windows-10 ×1
zenity ×1