ffmpeg:将传输流(MPEG2 或 h264)重新编码为另一个传输流(h264)

标签 ffmpeg synology

目前,我正在努力解决我想在 Synology DiskStation 上使用 perl 脚本执行的任务。
我不确定要使用的 ffmpeg 命令。
实际上,DiskStation 支持硬件编码,它对 MKV 文件的编码效果很好。唯一缺少的东西:我不想编码为 MKV,因为很难用我的其他切割软件处理这些文件。
因此,我想再次编码为传输流。
我现在正在使用这个命令:

sudo ffmpeg -hide_banner -loglevel verbose -vaapi_device /dev/dri/renderD128 -i my_input_file.ts -map 0:v -map 0:a -c:v h264_vaapi -vf yadif,format=nv12,hwupload -y -b:v my_bitrate my_output_file.ts

现在,我总是得到一个错误:
Automatic encoder selection failed for output stream #0:1. Default encoder for format mpegts (codec mp2) is probably disabled. Please choose an encoder manually.
Error selecting an encoder for stream 0:1

对我来说,它似乎没有意识到我想使用 h264 编码而不是传输流的默认编码器。

对此有什么想法吗?

解释:
  • 完成映射是为了摆脱不受支持的流,例如图文电视,并减少一些流,因为我通常会获得一种以上的语言流。
  • 需要 sudo,因为在 Synology 上仅允许 root 使用 vaapi 设备(可能在所有系统上)

  • 如果有人可以帮我解决这个问题,那就太好了。

    谢谢,
    马蒂亚斯

    最佳答案

    该错误与音频流有关。默认编码器是 mp2,但您的构建似乎没有它。添加 -c:a aac (更安全)或 -c:a copy .如果 ffmpeg 的 MPEG-TS 多路复用器支持输入音频编解码器,则后者将起作用。

    关于ffmpeg:将传输流(MPEG2 或 h264)重新编码为另一个传输流(h264),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44544325/

    相关文章:

    ffmpeg - 使用 FFMPEG 更改容器会产生 NAL 单元错误

    java - 使用FFMPEG时使用 '-acodec'选项时编解码器参数不正确

    ffmpeg - 为什么 ts 文件只包含一帧时无法播放?

    android - 将ffmpeg OMX编解码器添加到Genymotion Android 4.4.2模拟器

    linux - 如何获取文件仍然为 ftp 打开的信息

    port - 防止 Synology NAS (DSM 5) 上的端口 80 到 5000 的默认重定向

    git - Visual Studio Code 和 Git 在我的 NAS 上阻止了我的 IP

    audio - ffmpeg - 制作干净的 WAV 文件