[FFmpeg-devel] [PATCH] fate: use the lavfi -graph_file option to workaround path issues.

jamal jamrial at gmail.com
Fri Oct 26 00:49:02 CEST 2012

On 25/10/12 2:59 AM, Clément Bœsch wrote:
> On Wed, Oct 24, 2012 at 08:13:19PM -0300, jamal wrote:
>> On 24/10/12 6:42 PM, Clément Bœsch wrote:
>>> ---
>>> FATE is still broken due to various path issues. This is an attempt to fix it
>>> using the new introduced -graph_file option. I have no mean to test it with
>>> mingw/msys/msvc stuff so I have no idea if it works as expected.
>>> Here are the two issues supposed to be fixed:
>>>   - the source file is passed as a standalone argument to printf, and I just
>>>     hope here msys will do its work and replace paths such as "/d/foo/bar" into
>>>     "d:/foo/bar". This is a problem currently happening with the scene
>>>     detection because the filename is bogged down into the middle of the
>>>     filtergraph and isn't substitute.
>> It's not doing it. scenedetect.lavfi contains the following for me when using SAMPLES=/ffmpeg/samples
>> sws_flags=+accurate_rnd+bitexact; movie='/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov',select=gt(scene\,.4)
> Mmh, do you have any idea where/when the substitution is supposed to
> happen? I thought MSYS was doing the replace from "/d/foo/bar" to
> "d:\foo\bar" for each command argument, and since printf is just another
> command

> Maybe it is using a shell built-in and thus would ignore the argument
> search & replace? (is it better with a explicit /usr/bin/printf?)
> Or I'm just completely mistaken?

http://www.mingw.org/wiki/Posix_path_conversion these seems to be the rules used when converting paths, though I have no idea when said conversion takes place.

I did some tests and got this:


ffprobe -show_frames -of compact=nk=1:p=0 -bitexact -f lavfi "movie=/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4)"

[movie @ 02CA3500] Missing key or no key/value separator found after key '/MinGW/msys/1.0/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov'
[lavfi @ 02CA2900] Error initializing filter 'movie' with args 'D:/MinGW/msys/1.0/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov'
movie=D:/MinGW/msys/1.0/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4): Invalid argument

The path was converted and is valid, but it still fails for some reason.


ffprobe -show_frames -of compact=nk=1:p=0 -bitexact -f lavfi "sws_flags=+accurate_rnd+bitexact; movie=/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4)"

[Parsed_movie_0 @ 034335E0] Failed to avformat_open_input '/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov'
[lavfi @ 03432960] Error initializing filter 'movie' with args '/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov'
sws_flags=+accurate_rnd+bitexact; movie=/ffmpeg/samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4): No such file or directory

The path was not converted.


ffprobe -show_frames -of compact=nk=1:p=0 -bitexact -f lavfi "sws_flags=+accurate_rnd+bitexact; movie=../samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4)"
ffprobe -show_frames -of compact=nk=1:p=0 -bitexact -f lavfi "movie=../samples/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.4)"

Both of these work with no errors whatsoever.


Also tried you patch with /bin/printf as well, but the contents of scenedetect.lavfi ended up being the same.


More information about the ffmpeg-devel mailing list