ffmpeg转码国标PS流为固定分辨率1280*720

目前使用不带音频的PS流,使用filter可以缩放为1280*720 但使用音频时 转成. dvd提示不支持的音频流,解析出来的音频流是pcm_alaw 希望可以来个思路,不是文件,是要求最后是要符合PS流,通过代码实现的不是命令行的方式

目的就是为了收到PS流后缩放为1280*720重新再搞成PS流发出去,国标

可以尝试使用 FFmpeg 对 PS 流进行转码,将音频流转换为支持的格式,然后再通过 PS 流合并工具将视频流和转码后的音频流合并为新的 PS 流。

具体的步骤如下:

(1)使用 FFmpeg 对音频流进行转码,将 pcm_alaw 格式的音频流转换为支持的格式(例如 aac 格式)。可以使用如下命令实现:ffmpeg -i input.ps -c:a aac -strict experimental -f mpegts output.ts
(2)使用 PS 流合并工具将视频流和转码后的音频流合并为新的 PS 流。
如果需要使用代码实现,可以使用 Python 的 subprocess 模块调用命令行工具进行转码和合并操作。

具体的代码实现方式可以参考如下示例:

import subprocess

# 定义转码命令
cmd = ['ffmpeg', '-i', 'input.ps', '-c:a', 'aac', '-strict', 'experimental', '-f', 'mpegts', 'output.ts']

# 执行转码命令
subprocess.run(cmd)

# 定义合并命令
cmd = ['ps_merge', '-i', 'input.ps', '-a', 'output.ts', '-o', 'output.ps']

# 执行合并命令
subprocess.run(cmd)

上述代码中,使用 subprocess 模块调用了 FFmpeg 和 PS 流合并工具,实现了将 pcm_alaw 格式的音频流转换为 aac 格式,并将视频流和音频流合并为新的 PS 流的操作。

注意,需要确保使用的命令行工具(FFmpeg 和 PS 流合并工具)已经安装并配置到系统环境变量中,才能正常使用。

另外,如果需要在合并后的 PS 流中缩放视频分辨率,可以在转码命令中加入视频分辨率参数,例如:

ffmpeg -i input.ps -c:v libx264 -s 1280x720 -c:a aac -strict experimental -f mpegts output.ts

上述命令中的 -s 1280x720 参数表示将视频分辨率缩放为 1280x720。

注意,由于视频分辨率的改变会导致视频帧率的变化,因此在使用视频分辨率参数时可能需要额外调整帧率参数,以保证转码后的视频质量。

ffmpeg 的 scale 过滤器来调整视频的分辨率。例如,下面的命令将输入视频的分辨率缩放为 1280x720:

ffmpeg -i input.ps -vf scale=1280:720 output.mp4
如果需要保留音频流,则可以在命令中包含音频选项。例如,下面的命令将输入视频的视频流缩放为 1280x720,并将音频流转换为 AAC 格式:

ffmpeg -i input.ps -vf scale=1280:720 -c:a aac -b:a 128k output.mp4
ps,这里使用了 -c:a 和 -b:a 选项来指定音频编码器和码率。可以根据自己的需要调整这些参数。

另外,如果希望最终的输出格式是 PS 流,则可以使用 -f mpegts 选项来指定输出格式:

ffmpeg -i input.ps -vf scale=1280:720 -c:a aac -b:a 128k -f mpegts output.ts

使用ffmpeg进行国标PS流转码为固定分辨率1280*720的命令如下:

ffmpeg -i input.ps -vf scale=1280:720 -c:v h264 -c:a aac output.mp4

其中,input.ps是你要转码的国标PS流文件,output.mp4是转码后的输出文件。

注意:本命令中使用了视频编码器h264和音频编码器aac,如果你的系统没有安装这些编码器,请替换为你的系统支持的编码器。

提供参考实例【ffmpeg转码指南】,链接:https://www.cnblogs.com/yuandaozhe/p/6009190.html