((ffmpeg)VBV缓冲区大小未设置-MPG到MPG

问题描述 投票:0回答:1

我有一个带有两个音频流的MPG文件(mpeg2)。

我只想删除其中一个音频流而不会重新编码或质量下降。

这是我的命令(我不映射要删除的音频):

ffmpeg -i input.MPG
-map 0:v:0 -map 0:a:1
-vcodec mpeg2video
-c:a mp2
-y
output.MPG

但是它有此错误/警告:

[mpeg @ 0000020268f9a300] VBV buffer size not set, using default size of 230KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size

当然,输出视频的质量太糟糕了!

我该如何解决?

非常感谢您的回答;)

ffmpeg mpeg
1个回答
0
投票

如果要删除媒体中的一个流,请复制所有内容但要删除的流。

查找媒体中的所有流

您可以通过以下方式获得媒体内部的所有流:

ffprobe mediafile.mpg 2>&1 | grep -i stream

示例

这是我的一种媒体的示例输出:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 171 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 55 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Stream #0:2(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Stream #0:3(deu): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 130 kb/s
Stream #0:4(fra): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s

它有两个视频流(来自两个摄像机)和三个音频流(以不同的语言)。

如何复制(无损)

现在,如果要复制流,则需要单词copy作为编解码器。示例:

ffmpeg -i media.mpg -c copy output.mkv

或更明确的(视频和音频编解码器)

ffmpeg -i media.mpg -c:v copy -c:a copy output.mkv

作为标准,它将仅复制第一个视频流,第一个音频流,第一个字幕流等。>>

注意:mkv是现代媒体容器(avimpg相当老旧且过时,mp4也较新,但是mkv更灵活)。但是您也可以使用mpg容器作为输出。

删除流

现在,我将向您展示如何选择要从上方复制示例媒体文件的流。其他流将被忽略(=删除):

ffmpeg -i media.mkv -c copy -map 0:0 -map 0:2 -map 0:3 output.mkv

如上所述,我有两个视频流(0:0和0:1)和三个音频流(0:2、0:3、0:4)。在我的命令中,我省略了流0:1和0:4(我删除了它们)。

您的案件

对于您的情况,您应该有0:0(视频)和0:1(音频)和0:2(音频):

ffmpeg input.mpg -c copy -map 0:0 -map 0:1 output.mpg
    
© www.soinside.com 2019 - 2024. All rights reserved.