Похоже, он висит на втором потоке и без движения. SOS Пожалуйста, помогите. У меня есть 4 потока URL. Я хочу, чтобы они записывались вместе одновременно.
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
Вы пробовали просто запустить ffmpeg 4 раза?
Lawrence 9 лет назад
0
Я сделал, по какой-то причине только 2 начали бы запись. Но отдельно все стримы работают и запись нормально. Но я начинаю записи из Java, используя: p = Runtime.getRuntime (). Exec (recordCommand);
user3146313 9 лет назад
0
1 ответ на вопрос
0
user3146313
Уууууу, я понял проблему! Так что это исправление. В моем случае FFMPEG зависал на одном из проблемных потоков и поэтому не собирался начинать запись остальных потоков в списке. В основном с FFMPEG вы должны выполнить команду для каждого потока в отдельном потоке. В основном настройте метод main в вашем фляге, чтобы запустить отдельные потоки, которые затем начнут запись для каждого потока отдельно. Таким образом, если ffmpeg не может подключиться к одному из них и зависает, это не прервет запись остальных потоков.
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(); } } }