简体   繁体   中英

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?

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.

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.

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}

One solution which you can try is to first convert video using this command:

 String[]{"-ss", lastTime, "-i", selectedVideoPath, "-t", now,  "-filter:v", "setpts=0.5*PTS","-strict", "-2", videoPath};

Then convert audio and check if it executes try code or catch on the basis of result.If audio is successfully executed then merge audio and video else save finalized video without audio .

it might not be the best solution but it should work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM