Lalit Sharma
Lalit Sharma

Reputation: 1150

Speed change command fails when audio stream is not present in video - ffmpeg

I am trying to change speed of the video that does not contain audio stream via below command

String[]{"ffmpeg", "-y", "-i", orginalFile, "-threads", "5", "-preset", "ultrafast", "-strict", "experimental", "-filter_complex", "[0:v]setpts=0.50*PTS[v];[0:a]atempo=2.0[a]", "-map", "[v]", "-map", "[a]", "-b", "2097k", "-ab", "48000", "-ac", "2", "-ar", "22050", "-vcodec", "mpeg4", destinationFile};

Command fails stating that video does not have audio stream. So, do I need to check whether audio stream is present in the video or is there something I can do in this scenario?

Upvotes: 9

Views: 402

Answers (3)

Gyan
Gyan

Reputation: 93349

If you use stream-specific filterchains, you use should be able to process all files - with or without audio.

Use

String[]{"ffmpeg", "-y", "-i", originalFile, "-threads", "5",
         "-map", "0:v", "-map", "0:a?",
         "-vf setpts=0.50*PTS", "-vcodec", "mpeg4", "-preset", "ultrafast", "-b:v", "2097k",
         "-af atempo=2.0", "-b:a", "48000", "-ac", "2", "-ar", "22050",
         "-strict", "experimental", destinationFile}

Upvotes: 2

Eli
Eli

Reputation: 768

You need to check the video before running the command (using ffmpeg -i ) You will get the information in the vk.log. Parse it, and see if you have audio. Then run the correct command.

Upvotes: 3

mdtuyen
mdtuyen

Reputation: 4548

Option -map a only accept video with audio stream, There are some video have not audio. you need use -map 0. Solution for two case is you use ?:

 -map [a?]

The ? teels ffmpeg to only map the stream if it exists.

Upvotes: 2

Related Questions