FFmpeg 编码在 Raspberry Pi 3 上运行良好,但在 Raspberry Pi 4 上挂起

FFmpeg 编码在 Raspberry Pi 3 上运行良好,但在 Raspberry Pi 4 上挂起

我尝试在 Raspberry Pi 4 上进行编码,但没有成功。我在 Raspberry Pi 3 上进行了测试,可以正常工作。我使用的是相同的测试文件。.ts来自我的 TVHeadend 服务器的文件包含 3 个轨道:0:0 视频 h264、0:1 音频 mp2、0:3 图文电视。

我使用以下配置为两个 RPi 编译了 FFmpeg:

 configuration: --arch=armel --target-os=linux --enable-gpl --enable-omx --enable-omx-rpi --enable-nonfree --enable-mmal

我使用以下命令开始编码:

 ffmpeg -fflags +igndts -ss 00:01:00 -c:v h264_mmal -i 'test.ts' -to 00:05:00 -map 0:0 -map 0:1 -c:v h264_omx -b:v 1500k -flags +global_header -c:a:0 copy 'test.mp4'

FFMPEG 启动了,但随后就挂起了,所以我不得不中断它,屏幕如下所示:

[h264 @ 0x1d570e0] non-existing PPS 0 referenced
[h264 @ 0x1d570e0] decode_slice_header error
[h264 @ 0x1d570e0] no frame!
[mpegts @ 0x1d524b0] PES packet size mismatch
Last message repeated 4 times
Input #0, mpegts, from 'test.ts':
Duration: 00:11:20.09, start: 789.536711, bitrate: 11924 kb/s
Program 101
Metadata:
service_name    : DR1
service_provider: YouSee
Stream #0:0[0x456]: Video: h264 (High) ([27][0][0][0] / 0x001B),
yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps,
25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x457](dan): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz,
stereo, fltp, 384 kb/s
Stream #0:2[0x458](dan): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Stream mapping:
Stream #0:0 -> #0:0 (h264 (h264_mmal) -> h264 (h264_omx))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[h264_mmal @ 0x1d59fc0] Did not get output frame from MMAL.
Error while decoding stream #0:0: Unknown error occurred
[h264_mmal @ 0x1d59fc0] Changing output format.
[h264_omx @ 0x1d8da20] Using OMX.broadcom.video_encode
Output #0, mp4, to 'test.mp4':
Metadata:
encoder         : Lavf58.28.101
Stream #0:0: Video: h264 (h264_omx) (avc1 / 0x31637661), yuv420p,
1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 1500 kb/s, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder         : Lavc58.53.101 h264_omx
Stream #0:1(dan): Audio: mp2 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp,
384 kb/s

我真的不知道为什么会挂起。我尝试了不同的启动命令,有或没有:

fflags +igndts -flags -global_header -flags +global_header

我现在在 Raspberry Pi 4 上有一个新的 Broadcom 芯片。我已经关闭了 4K 分辨率和模拟输出,看看是否发生了变化,但有差异。

那么是我做错了什么还是 FFmpeg 还没有为新的 Raspberry Pi 4 / Broadcom 芯片做好准备?

相关内容