仅转换编解码器(保留音频和字幕)

仅转换编解码器(保留音频和字幕)

我有一个视频文件 h265 mkv,它有双音频和多个字幕。我想将其转换为 h264,因为它不需要在我的 jellyfin 服务器上进一步转码。但我找不到正确的参数来保留所有音频和字幕,只转码视频。

我目前想到的命令是:

./ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i "input.mkv" -c:a copy -c:v h264_nvenc -ss 00:00:13 -t 30 -map 0:v -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 "output.mp4"

我得到了输出

Automatic encoder selection failed for output stream #0:3. Default encoder for format mp4 (codec none) is probably disabled. Please choose an encoder manually.
Error selecting an encoder for stream 0:3

当我同时进行转码和复用时,我得到了这个输出

单独转码为 mp4 并进行多路复用即可

谢谢

答案1

我们可以通过添加-c:s mov_text参数来选择字幕编解码器,如下所述这里

ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i "input.mkv" -c:a copy -c:v h264_nvenc -c:s mov_text -ss 00:00:13 -t 30 -map 0:v -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 "output.mp4"

另一个选项是选择 MKV 容器而不是 MP4 容器:

ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i "input.mkv" -c:a copy -c:v h264_nvenc -ss 00:00:13 -t 30 -map 0:v -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 "output.mkv"


您遇到的问题“FFmpeg 不会自动选择 MP4 的字幕编解码器“ 如下所述
“stream #0:3”是字幕流,我们必须指定字幕编解码器明确地


为了测试,我们可以使用带字幕的合成模式来重现该问题:

  • 首先创建两个字幕文本文件:

in0.srt

1
00:00:00,0 --> 00:00:01,0
Eng 0 to 1

2
00:00:01,0 --> 00:00:02,0
Eng 1 to 2

3
00:00:02,0 --> 00:00:03,0
Eng 2 to 3

4
00:00:03,0 --> 00:00:04,0
Eng 3 to 4

in1.srt

1
00:00:00,0 --> 00:00:01,0
Ita 0 to 1

2
00:00:01,0 --> 00:00:02,0
Ita 1 to 2

3
00:00:02,0 --> 00:00:03,0
Ita 2 to 3

4
00:00:03,0 --> 00:00:04,0
Ita 3 to 4
  • 使用 FFmpeg创建input.mkv合成视频、两个合成音频流和两个字幕流(用于测试):

ffmpeg -y -f lavfi -i testsrc=size=384x206:rate=1 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=1000 -sub_charenc CP1252 -i in0.srt -sub_charenc CP1252 -i in1.srt -map:v 0 -map:a 1 -map:a 2 -map:s 3 -map:s 4 -vcodec libx265 -crf 17 -pix_fmt yuv420p -acodec aac -ar 22050 -scodec ass -metadata:s:s:0 language=eng -metadata:s:s:1 language=ita -disposition:s:s:1 default+forced -t 10 input.mkv

  • 执行问题中的 FFmpeg 命令以重现错误消息:

ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i "input.mkv" -c:a copy -c:v h264_nvenc -ss 00:00:13 -t 30 -map 0:v -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 "output.mp4"

错误信息:

输出流 #0:3 的自动编码器选择失败。mp4 格式(编解码器无)的默认编码器可能已禁用。请手动选择编码器。为流 0:3 选择编码器时出错

  • 执行“更正后的” FFmpeg 命令(不带-ss-t):

ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i "input.mkv" -c:a copy -c:v h264_nvenc -c:s mov_text -map 0:v -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 "output.mp4"

MediaInfo 输出:

General
Complete name                            : C:\Tmp\output.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 214 KiB
Duration                                 : 10 s 78 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 174 kb/s
Writing application                      : Lavf59.27.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : [email protected]
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 2 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 10 s 0 ms
Bit rate mode                            : Variable
Bit rate                                 : 31.1 kb/s
Maximum bit rate                         : 3 200 kb/s
Width                                    : 384 pixels
Height                                   : 206 pixels
Display aspect ratio                     : 1.85:1
Frame rate mode                          : Constant
Frame rate                               : 1.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.393
Stream size                              : 37.9 KiB (18%)
Codec configuration box                  : avcC

Audio #1
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 10 s 78 ms
Bit rate mode                            : Constant
Bit rate                                 : 67.5 kb/s
Channel(s)                               : 1 channel
Channel layout                           : C
Sampling rate                            : 22.05 kHz
Frame rate                               : 21.533 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 83.0 KiB (39%)
Default                                  : Yes
Alternate group                          : 1

Audio #2
ID                                       : 3
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 10 s 78 ms
Bit rate mode                            : Constant
Bit rate                                 : 66.2 kb/s
Channel(s)                               : 1 channel
Channel layout                           : C
Sampling rate                            : 22.05 kHz
Frame rate                               : 21.533 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 82.6 KiB (39%)
Default                                  : No
Alternate group                          : 1

Text #1
ID                                       : 4
Format                                   : Timed Text
Muxing mode                              : sbtl
Codec ID                                 : tx3g
Duration                                 : 10 s 46 ms
Duration_FirstFrame                      : -954 ms
Bit rate mode                            : Variable
Bit rate                                 : 100 b/s
Stream size                              : 125 Bytes (0%)
Language                                 : English
Default                                  : No
Forced                                   : No
Alternate group                          : 3

Text #2
ID                                       : 5
Format                                   : Timed Text
Muxing mode                              : sbtl
Codec ID                                 : tx3g
Duration                                 : 10 s 46 ms
Duration_FirstFrame                      : -954 ms
Bit rate mode                            : Variable
Bit rate                                 : 100 b/s
Stream size                              : 125 Bytes (0%)
Language                                 : Italian
Default                                  : Yes
Forced                                   : No
Alternate group                          : 3

如果由于我的假设错误而仍然不起作用,您可以使用 MediaInfo 检查您的输入文件(将信息添加到您的问题中)。

相关内容