0

如何在 ffmpeg-python 中为不同的分辨率使用多个地图值?

    -map [v1out] -c:v:0 libx264 -b:v:0 1900k -bufsize 3800k \
    -map [v2out] -c:v:1 libx264 -b:v:0 900k -bufsize 1800k \
4

2 回答 2

0

您可以在 ffmpeg-python 中提供多个地图值,例如:

ffmpeg.input('in.mp4').output(
...
map = [
    "[v1out] -c:v:0 libx264 -b:v:0 1900k -bufsize 3800k",
    "[v2out] -c:v:1 libx264 -b:v:0 900k -bufsize 1800k"
  ]
)
于 2021-09-23T11:17:55.320 回答
0

你可以尝试这样的事情:

import ffmpeg

input_file = 'input.mp4'
output_file = 'output.mp4'
subtitles_file = 'subtitles.srt'
    
# Load the video/audio master.
input_ffmpeg = ffmpeg.input(input_file)

# Load the subtitle master.
input_ffmpeg_sub = ffmpeg.input(subtitles_file)

# Refer to the master audio, video and subtitles streams separately.
input_video = input_ffmpeg['v']
input_audio = input_ffmpeg['a']
input_subtitles = input_ffmpeg_sub['s']

output_ffmpeg = ffmpeg.output(
    input_video, input_audio, input_subtitles, output_file,
    vcodec='copy', acodec='copy', scodec='mov_text'
)

# If the destination file already exists, overwrite it.
output_ffmpeg = ffmpeg.overwrite_output(output_ffmpeg)

# Print the equivalent ffmpeg command we could run to perform the same action as above.
print(ffmpeg.compile(output_ffmpeg))

# Do it! transcode!
ffmpeg.run(output_ffmpeg)

这是等效的 ffmpeg 命令:

ffmpeg -i input.mp4 -i subtitles.srt -map 0:v -map 0:a -map 1:s -acodec copy -vcodec copy -scodec mov_text output.mp4 -y

或者

ffmpeg -i input.mp4 -i subtitles.srt -map 0:v -map 0:a -map 1:s -c:a copy -c:v copy -c:s mov_text output.mp4 -y

我希望它对你有帮助,它对我有用。

于 2022-01-04T07:46:04.453 回答