I tried the following, but it does not work.
Code:ffmpeg -i rtmp://83.229.210.89/RAZTV/BTVraztv1 -map 0 -b:v 900k -vcodec libx264 -acodec aac -b:a 256k -strict -2 -t 3600 /media/TV_1T_3T_6/ffmpegtest/ort.mp4 -i rtmp://mirtv.cdnvideo.ru/mirtv-live/mirtv600.sdp -map 1 -b:v 900k -vcodec libx4 -acodec aac -b:a 256k -strict -2 -t 3600 /media/TV_1T_3T_6/ffmpegtest/mir.mp4 -i rtmp://chanson.cdnvideo.ru/chanson-live/shansontv.sdp -map 2 -b:v 900k -vcodec libx264 -acodec aac -b:a 256k -strict -2 -t 3600 /media/TV_1T_3T_6/ffmpegtest/shansontv.mp4 -i rtmp://83.229.210.89:1935/TROTV/BTVtro0 -map 3 -b:v 900k -vcodec libx264 -acodec aac -b:a 256k -strict -2 -t 3600 /media/TV_1T_3T_6/ffmpegtest/tro.mp4
Looks like it hangs on a second stream and no movement. S.O.S. Please help.
I have 4 stream URLs. I want them to be recording together at the same time.
The log that I get right now is:Code:With one ffmpeg command: I want: rtmp://83.229.210.89/RAZTV/BTVraztv1 to record into file: /media/TV_1T_3T_6/ffmpegtest/ort.mp4 I want: rtmp://mirtv.cdnvideo.ru/mirtv-live/mirtv600.sdp to record into file: /media/TV_1T_3T_6/ffmpegtest/mir.mp4 I want: rtmp://chanson.cdnvideo.ru/chanson-live/shansontv.sdp to record into file: /media/TV_1T_3T_6/ffmpegtest/shansontv.mp4 I want: rtmp://83.229.210.89:1935/TROTV/BTVtro0 to record into file: /media/TV_1T_3T_6/ffmpegtest/tro.mp4
Code:ffmpeg version 2.2.4 Copyright (c) 2000-2014 the FFmpeg developers built on Jul 6 2014 21:42:17 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvpx --enable-libmp3lame libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 [flv @ 0x24981c0] Stream discovered after head already parsed Input #0, flv, from 'rtmp://83.229.210.89/RAZTV/BTVraztv1': Metadata: Server : NGINX RTMP (github.com/arut/nginx-rtmp-module) displayWidth : 720 displayHeight : 576 fps : 25 profile : level : Duration: 00:00:00.00, start: 1826.816000, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 699 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc Stream #0:1: Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s Stream #0:2: Data: none [flv @ 0x261c7e0] Stream discovered after head already parsed [flv @ 0x261c7e0] negative cts, previous timestamps might be wrong Last message repeated 8 times Input #1, flv, from 'rtmp://mirtv.cdnvideo.ru/mirtv-live/mirtv600.sdp': Metadata: author : copyright : description : keywords : rating : title : presetname : Custom creationdate : Fri Jul 11 03:34:37 2014 : videodevice : AVerMedia Hybrid TV Video Capture avclevel : 30 avcprofile : 66 videokeyframe_frequency: 5 audiodevice : ?8=. 2E>4 (#AB@>9AB2> A ?>445@6 audiochannels : 1 audioinputvolume: 100 Duration: N/A, start: 0.000000, bitrate: 1038 kb/s Stream #1:0: Video: h264 (Baseline), yuv420p(tv), 720x576 [SAR 1:1 DAR 5:4], 972 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc Stream #1:1: Audio: mp3, 44100 Hz, mono, s16p, 65 kb/s Stream #1:2: Data: none
+ Reply to Thread
Results 1 to 2 of 2
-
Last edited by wwwmaster2k; 11th Jul 2014 at 01:13.
-
WhooHooo, I understood the problem! So this is the fix. In my case FFMPEG was hanging on one of the problematic streams and thus wasn’t going forward to start recordings of the rest of the streams in the list. Basically with FFMPEG you have to execute command for each stream in a separate thread. Basically setup main method in your jar to start separate threads that would then start recording for each stream separately. This way if ffmpeg can’t connect to one of them and hangs, it won’t interrupt the recording of the rest of the streams.
Code:package igor.recorder.ffmpeg; import java.io.IOException; import java.io.InputStream; public class RecordRazTV extends Thread { String streamUrl="rtmp://83.229.210.89/RAZTV/BTVraztv1"; String recordingPath="/media/TV_580_3T_9/raztv"; String recordCommand = ""; String streamAliasFileName=""; public void run() { System.out.println("Igors Log >> Inside the thread!"); streamAliasFileName = recordingPath.substring(recordingPath.lastIndexOf("/") + 1); recordCommand = "ffmpeg -i " + streamUrl + " -b:v 900k -vcodec libx264 -acodec aac -b:a 256k -strict -2 -t 3600 /media/TV_1T_3T_6/ffmpegtest/raztv.mp4"; Process p; try { System.out.println("Igors Log >> Executing Runtime for FFMPEG: " + recordCommand); p = Runtime.getRuntime().exec(recordCommand); System.out.println("Igors Log >> Done executing Runtime for FFMPEG"); InputStream in = p.getErrorStream(); int c; while ((c = in.read()) != -1) { System.out.print((char)c); } in.close(); interrupt(); } catch (IOException e) { e.printStackTrace(); } } }