I'm trying to code a little soft in C# (it's new langage for me), and i've a little problem.
In a batch script, with Mediainfo.exe to export data, like framerate, into a text file, you just have to write :
So, i've been searching on how to execute a program with parameters in C#, I found :Code:MediaInfo --inform=Video;%%FrameRate%% "video.mp4" > "framerate.txt"
So i've put :Code:System.Diagnostics.Process.Start("PROGRAM.exe", "COMMAND OPTION");
And of course, it doesn't work. Well, the window open and close very fast, and with a screenshot i've been able to see what's written, and it's good, but the part which doesn't work, is writing into the txt file.Code:System.Diagnostics.Process.Start("MediaInfo.exe", "--inform=Video;%%FrameRate%% c:/test/file.mp4 > c:/test/test.txt");
I don't know what to do to make it work. If I can't write into a txt file, I'd like to put the information in a variable
+ Reply to Thread
Results 1 to 13 of 13
It doesn't change anything, I think it's the ">", which is the command (in batch) to write into a txt file...
it doesn't work because "> c:/test/test.txt" isn't part of the command options. It is a redirection of the standard output."The greatest trick the Devil ever pulled was convincing the world he didn't exist."
Is there a way to affect the value display by the execution of the program into a variable?
That mediainfo CLI worked for me but it can return only basic info, for example it could not return if video was progressive etc.
, so I used mediainfo.dll from Ripbot264 that can dump txt file with mediainfo listings into a tree structure, not sure where it came from, maybe it is RipBot264 author, Atak Snajpera who modified that DLL.
"%mediainfo%" %1 dumpinfo:"unicodefile.txt" TYPE "unicodefile.txt" > "ascii.txt"
that double % is ok there, otherwise it would not work, but that goes for windows batch script, no idea what is legit for C#
a. instead of using the pipe one could specifiy an output file '--Output=file://Text.txt' , see: "mediainfo --help-output"
b. if you call it from a program there should also be a possibility to capture the command line output with your program, which would allow to avoid any temporal files
c. if you call mediainfo inside a programm you could also use the dll,...
I don't know how to use the dll actualy... If you can show me..
I succeded to do what I wanted but it exports in txt file, it's fine for me but if I can avoid that would be great
capturing the std:ut with C#: http://stackoverflow.com/questions/285760/how-to-spawn-a-process-and-capture-its-stdout-in-net
C# Wrapper for MediaInfo: http://www.teejeetech.in/2013/01/mediainfo-wrapper-for-net-projects.html
First of all on my computer this works:
"MediaInfo.exe", "--inform=Video;%%FrameRate%% " "c:/test/file.mp4" > "c:/test/test.txt"
This does not
"MediaInfo.exe", "--inform=Video;%%FrameRate%% c:/test/file.mp4 > c:/test/test.txt"
Also, I just went through the exact same thing creating a program that copies the UTC Encoded date to the Created date of videos. Basically when your program calls a CLI screen, whether you keep the CMD Window open or not, it is starting a separate process and considers it finished and goes on with it's code without waiting for the output from MediaInfo. Tests showed anywhere from 2.0 to 4.5 seconds for Media Info to return information. You can see this if you open a Command window and run the command following on a folder full of videos:
C:\Users\Bud\Desktop\Holder Folder\New Holder>for %a in (*.*) do "MediaInfo.exe" "--Inform=General;Encoded Date = %Encoded_Date%\r\nTagged Date = %Tagged_Date%" "%a" > "%a.txt".
It takes a period for the information to show up and all files to be written and if your program looks for it before it is actually there, which it will, it will fail to find it. You can use the excellent method linked by Selur above or if you have problems getting WaitForExit() to work, build a delay in with a timer to 'wait' until it had finished before proceeding. By that I mean launch the CLI, finish execution until the timer times out and go get the variable or StdOut and obtain what you need.