我正在为Android应用程序构建一个帮助程序库,我需要为我正在使用的一些支持库提供完整的OpenSSL实现.我正在创建一个构建链并编译libssl并libcrypto使用它但在运行时我得到:
java.lang.ExceptionInInitializerError
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library:
soinfo_relocate(linker.cpp:975): cannot locate symbol "tcgetattr" referenced by "libcrypto.so.1.0.0"...
Run Code Online (Sandbox Code Playgroud)
我猜我需要做些什么来帮助tcgetattr在运行时找到它?
编辑:在撰写本文时,FFMPEG 中没有任何功能可以检测/处理 RTP/RTSP 流何时仍处于活动状态但不再传送有效帧。我能找到的唯一解决方案是通过停止录制来定期重置流,然后重新连接并开始新的录制,但这-f segment是行不通的。
我正在使用 FFMPEG 从网络摄像机录制 RTSP 流,并在一段时间后(通常大约一个半小时到两个小时)。我确信这具体是我使用的相机的问题,而不是 FFMPEG 或我的系统资源的问题。
具体发生的情况是视频冻结,但摄像机的网络流量仍在继续 - 它似乎没有发送新帧。由于这种行为,FFMPEG 不会断开连接/继续录制,因为网络连接仍然存在。几分钟后,FFMPEG 输出中总会出现一个警告:
More than 1000 frames duplicated
但它会继续录制 - 只是一遍又一遍地显示同一帧。
我正在使用的命令是:
ffmpeg -stimeout 1000000 -rtsp_transport udp -fflags discardcorrupt -i rtsp://192.168.1.163/live/0/MAIN -vc libx265 -f segment -segment_time 300 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 "163-%Y-%m-%d_%H-%M-%S-h265.mp4"
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
让 FFMPEG 在复制 > 1000 帧后失败并退出实际上是理想的,因为这样我就可以从脚本中生成 FFMPEG,监视进程,并在进程结束时重新启动它。任何解决方案都会很棒。