ffmpeg: option `unity` or `silence` not found for `afade` - ffmpeg

I would like to use unity and silence parameters of afade filter as documented here. To achieve partial fade-out, but getting an option not found error.
I am using ffmpeg version 5.1.2.
To reproduce:
ffmpeg -f lavfi -i "sine=frequency=500:duration=5" -filter_complex "afade=start_time=1:type=out:unity=0.1" -y test.wav
Error:
[Parsed_afade_0 # 0x148004c30] Option 'unity' not found
[AVFilterGraph # 0x148004ba0] Error initializing filter 'afade' with args 'start_time=1:type=out:unity=0.1'
Error initializing complex filters.
Option not found

They are currently available in git master builds, and will be available in ffmpeg 5.2 onwards.

Related

ffmpeg error At least one output file must be specified

my code:
ffmpeg -i "C:\Users\xxxxxxx\Desktop\aaaaaa\a.mp4" -frames 1 -vf "drawtext="fontsize=60:fontcolor=yellow select=not(mod(n,18)),scale=200:100,tile=15x48" "C:\Users\xxxxxxx\Desktop\aaaaaa\a.png"
i got this error:
At least one output file must be specified
where is the problem?
command is get error and i need fix

FFmpeg: use absolute path in "metadata=print:file="

I'm using FFmpeg to extract frames of a video and therefore I want to print the metadata of the video to a text file first (to get the scene\ value of each frame).
This already works for me with something like:
ffmpeg -i input.mp4 -vf "select='gte(scene,0)',metadata=print:file=scenescores.txt" -an -f null -
Because I'm using all this inside of a Java application I want to pass an absolute path (of an temp directory) to print:file= instead of the currently relative one which will write it to the root directory of the project.
But when I try to specify an absolute path like D:\scenescores.txt I get the following error:
[metadata # 00000203282ff0c0] Unable to parse option value "scenescores.txt" as boolean
[metadata # 00000203282ff0c0] Error setting option direct to value scenescores.txt.
[Parsed_metadata_1 # 00000203269bdf00] Error applying options to the filter.
[AVFilterGraph # 0000020328020840] Error initializing filter 'metadata' with args 'print:file=D:\scenescores.txt'
Is there any way to achieve printing to an absolute path? Am I missing some escape rules or something?
I played a lot with escaping different things and in the end it worked for me like this:
ffmpeg -i input.mp4 -vf "select='gte(scene,0)',metadata=print:file=\'D:\scenescores.txt\'" -an -f null -
The difference is that the path is surrounded by \'.
Also I read that escaping \ to \\ or / can help sometimes.

applying multiple filter ffmpeg

I'm trying to rotate videos and increase its sound as well as change itsframe rate
ffplay -i C:/Users/thota/OneDrive/Desktop/VET/Input.mp4 -af "volume="10.0",atempo="10.0" -vf "transpose=2,transpose=2,setpts=1/"10.0"*PTS,scale="3840:2160",fps="5.0"
I'm using FFmpeg as I'm trying to build a video editing application hence I need to combine many operations when i try to use above command I'm getting this error(in command im using ffplay as I just want to see output)
error
[atempo # 000001fdd50c7c40] [Eval # 00000047b79fe770] Undefined constant or missing '(' in
'vftranspose=2'
[atempo # 000001fdd50c7c40] Unable to parse option value "10.0 -vf transpose=2"
[atempo # 000001fdd50c7c40] [Eval # 00000047b79fe770] Undefined constant or missing '(' in
'vftranspose=2'
[atempo # 000001fdd50c7c40] Unable to parse option value "10.0 -vf transpose=2"
[atempo # 000001fdd50c7c40] Error setting option tempo to value 10.0 -vf transpose=2.
[Parsed_atempo_1 # 000001fdd50c7b40] Error applying options to the filter.
Error initializing filter 'atempo' with args '10.0 -vf transpose=2'
Pleas help me solve this issue and suggest me a best way to add multiple operations when i try to use , its being tough so is their any other way
If yes please let me know
Thank you
It looks like you are missing quotation marks " character in two places.
The following command works (weird audio, but no errors):
ffplay -i C:/Users/thota/OneDrive/Desktop/VET/Input.mp4 -af "volume="10.0",atempo="10.0"" -vf "transpose=2,transpose=2,setpts=1/"10.0"*PTS,scale="3840:2160",fps="5.0""
You don't need all the quotation marks, and you may improve readability by using '' instead of nested "".
The following command is equivalent:
ffplay -i C:/Users/thota/OneDrive/Desktop/VET/Input.mp4 -af "volume=10.0,atempo=10.0" -vf "transpose=2,transpose=2,setpts=1/10.0*PTS,scale='3840:2160',fps=5.0"

What does `-map data-re` option in FFMPEG do?

I am trying to extract and parse KLV data from a video stream. I found the following example in a Github repository. I am wondering what does the mapping option data-re do?
$ ffmpeg -i Day\ Flight.mpg -map data-re -codec copy -f data -
I understand the rest of the command, and know that -map is used to choose streams from inputs. But what does data-re mean. I couldn't find any explanation for it (or similar mapping option or stream identifier) in the documentation, e.g. here and here.
It's a typo and incorrect. The only time you use arbitrary label names is when using -filter_complex.
Use:
$ ffmpeg -i Day\ Flight.mpg -map 0:d -c copy -f data -
I could understand a user trying data, but data-re? Might be a double typo for -map data -re, where -re is intended to be the "Read input at native frame rate" input option (-map data is still invalid in this case).
It's not a valid value currently. It could possibly have been a value historically, but I doubt it. Most likely, it "worked" because the map arg parser would ignore additional letters if a lazy evaluation matched a stream and the d in data-re would match data streams. The parser is no longer that clumsy.

Does ffmpeg offer an option to prevent the creation of the Info tag in an MP3 file?

I have various MP3 files which I need to process.
The processing includes quite a few steps, but one important one is to remove the Info/Xing tag from the file.
I successfully do so by running lame -t .... However, there are times when I want to run ffmpeg to do a conversion which will happen after the lame -t ... conversion and I see that ffmpeg re-insert an Info/Xing tag in the MP3 file.
Is there a command line option I can use so ffmpeg does not re-insert the Info/Xing tag?
-write_xing 0
See ffmpeg -h muxer=mp3

Resources