Page 1 of 1
no video in RVCamView
Posted: Tue Aug 10, 2021 11:35 am
by Marcin_W
Priviet!
I write such code :
1. on click button
RVCameraInPanel.URL := 'rtsp://user:pass@my_ip:554/cam/realmonitor?channel=1&subtype=0';
RVCameraInPanel.DeviceType := rvdtRTSP;
RVCameraInPanel.VideoFormat := rvvfMP4_MPEG;
RVCamViewInPanel.VideoSource := RVCameraInPanel;
(RVCamViewInPanel.VideoSource as TRVCamera).PlayVideoStream;
2. in RVCamView component (in header) appears the URL,
the OnStartVideoStream event of the RVCamera component is triggered
3. there is no video in RVCamView, I got "No Video" prompt
4. exactly the same code works in other, test, application.
Re: no video in RVCamView
Posted: Tue Aug 10, 2021 12:54 pm
by Marcin_W
I have noticed, that the problematic application after executing:
Code: Select all
(RVCamViewInPanel.VideoSource as TRVCamera).PlayVideoStream;
almost doesn't consume processor usage (about 0.3%), while the test app consume
about 10%.
Re: no video in RVCamView
Posted: Tue Aug 10, 2021 1:19 pm
by Marcin_W
In Delphi debug window after launching
Code: Select all
(RVCamViewInPanel.VideoSource as TRVCamera).PlayVideoStream
in problematic app:
Thread Start: Thread ID: 8772. Process Security.exe (12984)
Thread Start: Thread ID: 9540. Process Security.exe (12984)
Thread Start: Thread ID: 14972. Process Security.exe (12984)
Module Load: avformat-56.dll. No Debug Info. Base Address: $61680000. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Security.exe (12984)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Security.exe (12984)
Module Unload: swresample-1.dll. Process Security.exe (12984)
Module Unload: avcodec-56.dll. Process Security.exe (12984)
Module Unload: avutil-54.dll. Process Security.exe (12984)
Module Unload: avformat-56.dll. Process Security.exe (12984)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Security.exe (12984)
Module Unload: swresample-1.dll. Process Security.exe (12984)
Module Unload: avutil-54.dll. Process Security.exe (12984)
Module Unload: avcodec-56.dll. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Unload: avutil-54.dll. Process Security.exe (12984)
Module Load: swscale-3.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61770000. Process Security.exe (12984)
Module Unload: avutil-54.dll. Process Security.exe (12984)
Module Unload: swscale-3.dll. Process Security.exe (12984)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Unload: avutil-54.dll. Process Security.exe (12984)
Module Unload: swresample-1.dll. Process Security.exe (12984)
Module Load: avformat-56.dll. No Debug Info. Base Address: $61680000. Process Security.exe (12984)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Security.exe (12984)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Security.exe (12984)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Security.exe (12984)
Module Load: swscale-3.dll. No Debug Info. Base Address: $615F0000. Process Security.exe (12984)
In Delphi debug window after launching
Code: Select all
(RVCamViewInPanel.VideoSource as TRVCamera).PlayVideoStream
in test (working) app:
Thread Start: Thread ID: 11016. Process Project1.exe (7888)
Thread Start: Thread ID: 13812. Process Project1.exe (7888)
Thread Start: Thread ID: 15964. Process Project1.exe (7888)
Module Load: avformat-56.dll. No Debug Info. Base Address: $61680000. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Project1.exe (7888)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Project1.exe (7888)
Module Unload: swresample-1.dll. Process Project1.exe (7888)
Module Unload: avcodec-56.dll. Process Project1.exe (7888)
Module Unload: avutil-54.dll. Process Project1.exe (7888)
Module Unload: avformat-56.dll. Process Project1.exe (7888)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Project1.exe (7888)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Unload: swresample-1.dll. Process Project1.exe (7888)
Module Unload: avutil-54.dll. Process Project1.exe (7888)
Module Unload: avcodec-56.dll. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Unload: avutil-54.dll. Process Project1.exe (7888)
Module Load: swscale-3.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61770000. Process Project1.exe (7888)
Module Unload: avutil-54.dll. Process Project1.exe (7888)
Module Unload: swscale-3.dll. Process Project1.exe (7888)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Unload: avutil-54.dll. Process Project1.exe (7888)
Module Unload: swresample-1.dll. Process Project1.exe (7888)
Module Load: avformat-56.dll. No Debug Info. Base Address: $61680000. Process Project1.exe (7888)
Module Load: avutil-54.dll. No Debug Info. Base Address: $61F10000. Process Project1.exe (7888)
Module Load: avcodec-56.dll. No Debug Info. Base Address: $5E480000. Process Project1.exe (7888)
Module Load: swresample-1.dll. No Debug Info. Base Address: $63570000. Process Project1.exe (7888)
Module Load: swscale-3.dll. No Debug Info. Base Address: $615F0000. Process Project1.exe (7888)
Thread Start: Thread ID: 15204. Process Project1.exe (7888)
Module Load: MSWSOCK.dll. No Debug Info. Base Address: $74CD0000. Process Project1.exe (7888)
Thread Start: Thread ID: 13056. Process Project1.exe (7888)
Module Load: CRYPTSP.dll. No Debug Info. Base Address: $727E0000. Process Project1.exe (7888)
Module Load: RSAENH.dll. No Debug Info. Base Address: $727B0000. Process Project1.exe (7888)
Module Load: bcrypt.dll. No Debug Info. Base Address: $767B0000. Process Project1.exe (7888)
Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $727A0000. Process Project1.exe (7888)
Module Load: NAPINSP.dll. No Debug Info. Base Address: $669E0000. Process Project1.exe (7888)
Module Load: PNRPNSP.dll. No Debug Info. Base Address: $669C0000. Process Project1.exe (7888)
Module Load: wshbth.dll. No Debug Info. Base Address: $67080000. Process Project1.exe (7888)
Module Load: nlaapi.dll. No Debug Info. Base Address: $669A0000. Process Project1.exe (7888)
Module Load: IPHLPAPI.DLL. No Debug Info. Base Address: $75B90000. Process Project1.exe (7888)
Module Load: DNSAPI.dll. No Debug Info. Base Address: $719E0000. Process Project1.exe (7888)
Module Load: NSI.dll. No Debug Info. Base Address: $776D0000. Process Project1.exe (7888)
Module Load: WINRNR.dll. No Debug Info. Base Address: $66990000. Process Project1.exe (7888)
Thread Start: Thread ID: 13168. Process Project1.exe (7888)
Thread Start: Thread ID: 14340. Process Project1.exe (7888)
Thread Start: Thread ID: 11756. Process Project1.exe (7888)
Thread Start: Thread ID: 15660. Process Project1.exe (7888)
Thread Start: Thread ID: 13828. Process Project1.exe (7888)
Thread Start: Thread ID: 2456. Process Project1.exe (7888)
Thread Start: Thread ID: 9156. Process Project1.exe (7888)
Thread Start: Thread ID: 10876. Process Project1.exe (7888)
Thread Start: Thread ID: 10228. Process Project1.exe (7888)
Thread Exit: Thread ID: 13168. Process Project1.exe (7888)
Thread Exit: Thread ID: 14340. Process Project1.exe (7888)
Thread Exit: Thread ID: 11756. Process Project1.exe (7888)
Thread Exit: Thread ID: 15660. Process Project1.exe (7888)
Thread Exit: Thread ID: 13828. Process Project1.exe (7888)
Thread Exit: Thread ID: 2456. Process Project1.exe (7888)
Thread Exit: Thread ID: 9156. Process Project1.exe (7888)
Thread Exit: Thread ID: 10876. Process Project1.exe (7888)
Thread Exit: Thread ID: 10228. Process Project1.exe (7888)
Thread Exit: Thread ID: 15204. Process Project1.exe (7888)
Thread Start: Thread ID: 7224. Process Project1.exe (7888)
Thread Start: Thread ID: 2364. Process Project1.exe (7888)
I see, that in problematic app some DLLs are not loaded:
MSWSOCK.dll
CRYPTSP.dll,
RSAENH.dll,
bcrypt.dll,
CRYPTBASE.dll,
NAPINSP.dll,
PNRPNSP.dll,
wshbth.dll,
nlaapi.dll,
IPHLPAPI.DLL,
DNSAPI.dll,
NSI.dll,
WINRNR.dll
Re: no video in RVCamView
Posted: Wed Aug 11, 2021 7:42 am
by Marcin_W
Well, all DDLs I've described above are loaded earlier in problematic app, before start playing stream.
Re: no video in RVCamView
Posted: Wed Aug 11, 2021 1:12 pm
by Marcin_W
I've upgraded from version 8.0 to 8.1, did not help.
Re: no video in RVCamView
Posted: Wed Aug 11, 2021 1:41 pm
by Sergey Tkachenko
1) Make sure that the project that works and the project that does not work have the same version of RVMedia
2) Make sure that these projects have the same bitness (32 bit / 64 bits)
3) Make sure that these projects use the same version of FFmpeg. It's better to place FFmpeg DLLs at the same folder as EXE file, and do not call LoadFFMpegLibraries to load FFmpeg from another location.
4) Make sure that bitnesses of FFmpeg DLLs and the projects are the same
5) Make sure that RVCamera in the both projects have identical property settings. Subproperties of FFmpegProperty property are especially important.
To simplify comparison, view the form's DFM as text (right click the form at design time, choose "View as Text" in the context menu, find properties of TRVCamera)
6) Make sure that you do not have event handlers that may affect the result assigned to event of TRVCamera
7) Check the events: OnLoginFailed, OnEndVideoStream, OnStartVideoStream.
Are they called? What's the value of Status parameter of OnEndVideoStream?
Re: no video in RVCamView
Posted: Wed Aug 11, 2021 7:35 pm
by Marcin_W
Thank you for your response.
ad. 1, 2, 3, 4, 5
Checked.
ad. 6
I've found in unit MRVType constant RV_WM_USER. I understand it is used for messages.
I've changed it to RV_WM_USER = $400 + $1D4C;, because value $400 interferes with constant in problematic app.
Unfortunately it did not help. Maybe I have to make changes in other files?
ad. 7
OnLoginFailed - is not fired neither in test (working) app nor in problematic app
OnEndVideoStream, OnStartVideo and OnStartVideoStream - are fired fired in both apps, OnEndVideoStream returns 0 in both cases
Re: no video in RVCamView
Posted: Wed Aug 11, 2021 7:42 pm
by Marcin_W
I forgot to mention, I use Delphi 10.4, Windows 10 64bits, both apps are 32 bits.
Maybe some project properties could make difference?
Re: no video in RVCamView
Posted: Thu Aug 12, 2021 9:07 am
by Marcin_W
Unit
MRVFFMPEGObject:
Code: Select all
function TRVMFFMPEG.PlayDecode : boolean;
var
frame_finished: Integer;
delay: double;
IsFirstFrame, DropIt: Boolean;
begin
Result := False;
Err := ReadFrame(FormatContext, Packet, DecCurTime);
if (Err < 0) then
Exit;
try
IsDecodeStart := False;
if GetPacketStreamIndex(Packet) = DecVideoStreamIndex then
begin
frame_finished := 0;
// Video stream packet
DecodeVideo(VideoCodecContext, DecFrame, Packet, frame_finished);
unit
MRVFFmpegSW:
Code: Select all
function GetPacketStreamIndex(pPacket: PCustomAVPacket) : Integer;
begin
case rvFFMPEG of
rvffmpeg_Ver1:
Result := PAVPacket_Old(pPacket)^.stream_index;
rvffmpeg_Ver2:
Result := PAVPacket(pPacket)^.stream_index;
else
Result := PAVPacket57(pPacket)^.stream_index;
end;
end;
In test application
GetPacketStreamIndex returns
PAVPacket57(pPacket)^.stream_index,
in problematic application returns
PAVPacket(pPacket)^.stream_index
This causes that the condition is not met in
Code: Select all
if GetPacketStreamIndex(Packet) = DecVideoStreamIndex then
frame is not rendered, but function
TRVMFFMPEG.PlayDecode always returns true
Re: no video in RVCamView
Posted: Thu Aug 12, 2021 11:23 am
by Marcin_W
Sergiej, please take a look at TRVCamRTSPGetThread - looks like values width and/or height are "shifted" in memory.
Re: no video in RVCamView
Posted: Thu Aug 12, 2021 12:38 pm
by Sergey Tkachenko
As for the condition
Code: Select all
if GetPacketStreamIndex(Packet) = DecVideoStreamIndex then
Packets received using FFmpeg may be of different stream types: video, audio, subtitles.
Normally, video has a single video stream.
RVMedia searches for the first video stream in video and plays packets only if they belong to this stream. Other packets are ignored.
Video stream index is calculated in FindFormatContextVideoStream (MRVFFmpegSW.pas)
Theoretically, video file may define several video streams, but the actual video may be not in the first stream. In this case, RVMedia will not be able to play this video (as well as many other video players).
You can debug FindFormatContextVideoStream and check the count of video streams, and the count of AVMEDIA_TYPE_VIDEO streams.
Re: no video in RVCamView
Posted: Thu Aug 12, 2021 12:40 pm
by Sergey Tkachenko
As for TRVCamRTSPGetThread, please describe where is the problem exactly
(maybe by email, richviewgmailcom )
Re: no video in RVCamView
Posted: Fri Aug 13, 2021 12:09 pm
by Marcin_W
Sent email to :
richview at gmail.com