2017-10-21 19 views
1

저는 ffmpeg를 사용하여 HDHomerun Prime의 라이브 스트림을 코드 변환합니다. 모든 것이 아름답게 작동합니다. 그러나 가능하다면 ffmpeg 트랜스 코딩 프로세스를 중지하고 다시 시작할 필요없이 HDHomerun의 채널을 변경할 수있는 능력이 필요합니다.채널 변경시 HDHomerun Prime을 코드 변환하는 동안 Ffmpeg가 중단됨

ffmpeg 프로세스를 시작하여 HDHomerun에서 UDP 피드를 읽기 시작합니다. m3u8 재생 목록이있는 일련의 * .ts 파일에 스트림을 씁니다.

[mpegts @ 0000018b4e05be60] New video stream 0:3 at pos:295211888 and DTS:40884.7s=108 drop=0 speed=1.02x [mpegts @ 0000018b4e05be60] New audio stream 0:5 at pos:295279568 and DTS:40884.4s frame= 4488 fps= 29 q=23.0 q=27.0 q=23.0 size=N/A time=00:02:28.94 bitrate=N/A dup=108 drop=0 speed=0.959x

내가는 FFmpeg을 실행 사용하고 명령은 다음과 같습니다 :

ffmpeg.exe -t 03:00:00 -i "udp://192.168.1.150:5000?fifo_size=1000000&overrun_nonfatal=1" -vf yadif=0:-1:1 -y -threads 4 -c:v libx264 -s 1280x720 -r 30 -b:v 4500k -force_key_frames expr:gte(t,n_forced*2) -profile:v high -preset fast -x264opts level=41 -c:a libfdk_aac -b:a 96k -ac 2 -hls_time 10 -hls_list_size 6 -hls_wrap 6 -hls_base_url /stream/ -hls_flags temp_file -hls_playlist_type event "C:\temp\streams\4500-stream.m3u8"

나는 장치의 채널을 변경하는 hdhomerun_config을 사용하여 두 번째는,는 FFmpeg 즉시 다음과 정지를보고

ffmpeg가 "복구"할 수 있도록 허용 할 수있는 특정 명령이 있습니까? 아니면, 처음에이 중단을 방지하는 arg가 있습니까? Windows 용으로 우분투에서 크로스 컴파일 된 ffmpeg의 최신 버전 v3.4를 사용하고 있습니다. 이 문제는 또한 ffmpeg.org에서 Windows 용 ffmpeg의 안정 버전 v3.4를 사용하여 발생했습니다.

편집 :

문제에 대한 새로운 발견,하지만 여전히 아직 해결되지 않은 : 나는 원래 채널로 채널을 변경하는 경우는 FFmpeg 스트림을 작성 계속할 수있다 .

예 : 채널 X에서 시작합니다. Ffmpeg가 파일에 녹음 중입니다. 채널 Y로 변경합니다. Ffmpeg는 위에 게시 된 메시지와 유사한 메시지를 출력하고 "중단됩니다." 채널 X로 다시 변경하고 ffmpeg는 중단 된 부분을 픽업합니다. 문제는 없습니다.

+0

아마도 새 스트림을 가져 오는 스크립트를 작성해야 할 것입니다. 필자는 FFmpeg가 매달려있는 것은 의심의 여지가 있습니다. 원래 한 스트림으로 시작 했으므로 원래의 스트림에서 더 이상 데이터가없는 새롭고 관련없는 스트림이 있습니다. – Brad

+0

새로운 ffmpeg 프로세스를 시작 하시겠습니까? – devo1929

답변

0

문제 및 없음 대답,하지만 기본적으로 https://github.com/bkirkman/hdhrtv

에서 다른 소프트웨어 패키지를 기반으로 잠시 동안이 일을하려고했던 언급하기에 너무 새로운 기능이 구현은 각각의 새로운 스트림을 여는하고있다 채널. 나는 당신이 똑같이해야 할 필요가 있다고 생각하는데, 그 이유는 당신이 "뒤로"갈 때 채널이 스스로 다시 시작하는 이유를 설명하기 때문입니다. 불행히도 재생 목록을 만들고 모든 채널을 버퍼링하지 않으면 입력 스트림이 변경되어 솔루션을 얻을 수 없을 수도 있습니다.

코드를 공유하고 싶다면 테스트하고 살펴 보는 데 관심이 있습니다.