Issue
I am trying to encode an external HLS (m3u8) link into MPEG-TS over UDP via ffmpeg with this command:
ffmpeg -re -i http://example.com/index400.m3u8 -vcodec copy -acodec copy -f mpegts udp://127.0.0.1:10000?pkt_size=1316
Currently I am executing the command directly inside a terminal which I keep open on my Centos server. However, and after some time (volatile), I get the following error :
Failed to resolve hostname example.com: Temporary failure in name resolution
[hls,applehttp @ 0x349b420] Failed to reload playlist 0
My question is, how can I run this command in a bash script or upstart or … so that whenever it unexpectedly stops, it automatically restarts. I prefer not to use third parties like monit, and please be explicit in writing the script with annotation for newbies, I am not well experienced on this.
Solution
Turned out to be simpler than I thought. For future reference, this is what I did, in a terminal:
Create a new script:
vi test.sh
Insert the following code:
#!/bin/bash
while :
do
echo `ffmpeg -re -i http://example.com/index400.m3u8 -vcodec copy -acodec copy -f mpegts udp://127.0.0.1:10000?pkt_size=1316`
done
Press Esc W Q Enter to save and exit.
Execute the following commands:
chmod +x test.sh
./test.sh
And voilĂ , ffmpeg
will automatically restart when an error occurs.
Answered By - APIS Answer Checked By - Marilyn (WPSolving Volunteer)