我正在嘗試使用 ffmpeg 串流傳輸到 STB,但沒有成功。從機上盒軟體支援我得到了這個答案:
4.1.5.1 Random_access_indicator 對於H.264/AVC 位元流,以下內容適用: 編碼:只要視訊串流中出現H.264/AVC RAP,就應設定random_access_indicator 位元(請參閱第3.1 條和第5.5 條中的Hrandom_access_indicator 位元(請參閱第3.1 條和第5.5 條中的H. 264/AVC RAP 定義) .5).解碼:IRD 可能會忽略 random_access_indicator 位元。它可以有利地與elementary_stream_priority指示符一起使用來識別RAP。
3.1 H.264/AVC RAP:H.264/AVC 位元流中帶有 AU 定界符的存取單元,IRD 可以在該單元成功開始解碼視訊。這個訪問單元應恰好包括一個帶有 VUI 的序列參數集(處於活動狀態)以及解碼相關圖片所需的圖片參數集。 SPS 也應位於該存取單元中的任何 SEI NAL 單元之前。此訪問單元必須包含IDR圖片或I圖片
我不知道如何設定那個位!透過工作流程,我的 STB 顯示:
dec[2][base] :: set_video_track() : -1 -> 0 [H264]
dec[2][base] :: set_audio_track() : -1 -> 0 [AAC] [eng]
但隨著我的直播
dec[1][base] :: set_video_track() : -1 -> -1 []
dec[1][base] :: set_audio_track() : -1 -> 0 [AAC] [spa]
我的 FFmpeg 指令
ffmpeg -nostdin -loglevel 資訊 -ss 10 -hwaccel_device 0 -hwaccel cuvid -c:v h264_cuvid -deint 2 -y -re -i udp://XXXX:XXXX?pkt_size=1316\&buffer_size=4096000&fital_000&fital_004000&b; =1 -movflags isml+frag_keyframe -f ismv -threads 0 -c:a libfdk_aac -ac 2 -b:a 64k -map 0:v -filter:v:0 scale_npp=w=1024:h=576 -c:v :0 h264_nvenc -preset llhq -g 150 -keyint_min 150 -forced-idr 1 -aud 1 -strict_gop 1 -bbf 2 -flags:v +global_header -pcr_period 5 -bbf 2 -flags:v +global_header -pcr_period 5 -b:v:0 1200064xd -pcr_period 5 -b:v:0 120006000bx :v -filter:v:1 scale_npp=w=1920:h=1080 -c:v:1 h264_nvenc -preset llhq -g 150 -keyint_min 150 -forced-idr 1 -aud 1 -strict_gop 標誌 - 2 - - v +global_header -pcr_period 5 -b:v:1 2000k -bsf:v h264_mp4toannexb -map 0:v -filter:v:2 scale_npp=w=640:h=368 -c:v:2 h264_nven=w=640:h=368 -c:v:2 h264_nvenc -preset 150 -keyint_min 150 -forced-idr 1 -aud 1 -strict_gop 1 -bf 2 -flags:v +global_header -pcr_period 5 -b:v:2 1200k -bsf:v h264_mp4toannexb -map 0:00http://XXX/X/X
我正在使用最新版本的 ffmpeg 和 nvidia。
有任何想法嗎?
謝謝。