2017-02-21 37 views
1

여러 해상도에서 mp4 비디오 + aac을 HLS로 트랜스 코딩하는 단일 명령이 있습니까?라이브 스트리밍을위한 hls 해상도 생성을위한 동기화 및 동시 처리


저는 변환 서버가 있고 여러 개의 해상도로 실시간 스트리밍을하고 있다고 생각합니다. 동시에 모든 해상도를 만들어야하며이 프로세스는 동시에 이루어져야합니다.
나는이 문제를 제기 나는 동시에에 examply 을 비디오의 4 해상도를 만들기 위해 별도로 4 cmd를에서 코드 아래에 다음을 실행 wtih이 과정을 수행하기 때문에 :

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s hd720 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 720p/out.m3u8 

2- 480P

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s hd480 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 480p/out.m3u8 

-3- 360p의

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s nhd -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 360p/out.m3u8 
,584,4- 200p

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s cga -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 200p/out.m3u8 

그러나 이러한 방식으로 수행하는 것은 몇 가지 문제가 있습니다.
1- 해상도의 .TS 부분이 동시에 다른 해상도 부분과 함께 생성되지 않습니다 (이 문제는 전환 해상도에서 이루어 지므로 플레이어는 선택한 해상도를 계속 사용할 수 없습니다.).
2- 라이브 스트리밍마다 일부 스레드를 실행했습니다.

답변

2

내 대답은 다음과 같습니다. -hls_time 원하는 경우 각 해상도의 숫자 부분을 같게 지정하십시오.

ffmpeg -re -i 123.mp4 
-c:a aac -c:v libx264 -s hd480 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 480p/out.m3u8 
-c:a aac -c:v libx264 -s nhd -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 360p/out.m3u8 
-c:a aac -c:v libx264 -s cga -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 200p/out.m3u8