首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux是否有一种方法可以等待创建一个文件来创建一个符号链接?

Linux是否有一种方法可以等待创建一个文件来创建一个符号链接?
EN

Unix & Linux用户
提问于 2021-04-01 22:42:31
回答 2查看 640关注 0票数 0

这个问题会显得很奇怪,请花点时间阅读。

1-我有一个包含ffmpeg命令的.sh (这个命令可以工作,这里可以)

2-我通过API调用触发.sh来开始记录(这里也很好)

3- ffmpeg开始生成.mp4

4-我想将.mp4与.m3u8进行符号链接(因为safari不会将.mp4作为清单阅读)

**您可能想知道:为什么不将.sh中的ffmpeg更改为输出.m3u8?

*我确实尝试过,但是由于未知的原因,除了.mp4之外,脚本不喜欢任何扩展名

*如果输出.mov .mkv .m3u8 =>,我不知道为什么,但它在10秒后停止:

*我找到的解决方案是让ffmpeg创建.mp4,然后创建一个指向.m3u8的符号链接,这样hls.js就可以在包括safari在内的所有浏览器中播放.

在创建符号链接之前,我正在寻找一种等待这个.mp4存在的方法。

在使用ln -s fileThatDontExistsYet.mp4 NewFile.m3u8之前,我进行了测试以创建符号链接,但是当试图访问NewFile.m3u8时,结果是一个404 not .如果我手动等待.mp4,然后执行相同的=>命令,它就能工作。

所以在这种奇怪的情况下,我发现在创建符号链接之前的睡眠x秒是危险的,而且不是很好的实践.有办法通过linux命令循环直到文件到达符号链接吗?

-编辑1-编辑1

上下文: SERVER1 =>网站SERVER2 => openvidu与docker一起运行

-1-用户创建聊天室( SERVER2 ) -2- SERVER2向SERVER1发送网络钩子通知会话开始-3-然后,一个API调用: SERVER1告诉SERVER2记录和composed.sh被触发-同时: SERVER1等待x秒,远程ssh创建符号链接-4- - .sh启动ffmpeg -5- ffmpeg在聊天过程中创建.mp4 -6- -我的修改是生成一个HLS格式流- -7- -其他用户通过他们的浏览器访问.m3u8 (页面必须播放.m3u8) {SERVER1} -8- -我可以为流实现4秒的延迟,这还不错;)

查看完整原始.sh的链接如下:https://raw.githubusercontent.com/OpenVidu/openvidu/master/openvidu-server/docker/openvidu-recording/scripts/composed.sh

*第79行*

代码语言:javascript
复制
-c:a aac -c:v libx264 -preset ultrafast -crf 28 -refs 4 -qmin 4 -pix_fmt yuv420p

用这个

代码语言:javascript
复制
-c:a aac -c:v libx264 -movflags +dash 
-preset ultrafast -crf 28 -refs 4 -qmin 4 -pix_fmt yuv420p 
-tune zerolatency -c:a aac -ac 2 -profile:v main 
-flags -global_header -bufsize 969k 
-hls_time 1 -hls_list_size 0 -g 30 
-start_number 0 -streaming 1 -hls_playlist 1 
-lhls 1 -hls_playlist_type event -f hls

听起来很奇怪但很管用..。我唯一担心的是“等待x秒”来创建一个符号链接..。什么是服务器非常繁忙,.mp4是在x秒之后生成的.它会产生播放流的问题。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-04-02 01:07:38

我不得不承认,我没有读过你的全部问题,但从标题来看,这应该是可行的:

while [ ! -f /tmp/originalfile ] ; do sleep 1 ; done ; ln -s /tmp/originalfile /tmp/symlink

票数 1
EN

Unix & Linux用户

发布于 2021-04-02 01:44:09

您可以使用inotifywait等待在父目录中创建文件:

代码语言:javascript
复制
inotifywait -e create /path/to/parent
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/643159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档