
다음 체인과 동등한 것을 사용하여 시뮬레이션된 라이브 HLS/DASH 서버를 만들려고 합니다.
tsplay -loop multi_resolution.ts | shaka_packager | nginx
문제는 "multi_solution.ts" 파일을 생성하는 것입니다. 여기에는 720p, 480p 및 360p에 대해 각각 하나씩 오디오 PID 1개와 비디오 PID 3개가 있는 단일 프로그램이 포함되어야 합니다. 왜? 왜냐하면 그것이 shaka_packager가 필요로 하는 방식이기 때문입니다.
트랜스코딩된 스트림을 출력 파일에 매핑하는 방법이 혼란스러운 것 같습니다. 내가 어려움을 겪고 있는 작동하지 않는 명령은 다음과 같습니다.
ffmpeg -i "big_buck_bunny_1080p.mov" -threads 16 \
-c:a aac -ac 2 -b:a:0 128k \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:1 5000k -minrate 2000k -maxrate 2000k -bufsize 4000k -g 30 -s 1280x720 \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:2 1500k -minrate 1000k -maxrate 1000k -bufsize 2000k -g 30 -s 854x480 \
-c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:3 500k -minrate 500k -maxrate 500k -bufsize 1000k -g 30 -s 640x360 \
-program program_num=1:title=multi_p30:st=0:st=1:st=2:st=3 \
-f mpegts "big_buck_bunny_720_480_360.ts"
각 인코딩을 개별적으로 테스트했는데 괜찮아 보입니다. 내 스트림 관리/매핑에 문제가 있는 것 같습니다.
돕다?
답변1
출력에 여러 스트림을 삽입하려면 각 입력 스트림을 명시적으로 매핑해야 합니다. 인코딩 옵션 자체로는 출력에 스트림 할당을 생성하지 않습니다. 여기에는 적용되지 않는 자동 스트림 선택 문제가 있지만 다음에서 이에 대해 읽을 수 있습니다.https://ffmpeg.org/ffmpeg.html#Stream-selection
그래서,
ffmpeg -i "big_buck_bunny_1080p.mov" -threads 16 \
-map 0:a -map 0:v -map 0:v -map 0:v \
-c:a aac -ac 2 -b:a 128k \
-s:v:0 1280x720 -s:v:1 854x480-s:v:2 640x360 \
-g 30 -c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.0 -preset veryslow -tune film \
-vsync cfr -x264-params "nal-hrd=cbr" \
-b:v:0 5000k -minrate:v:0 2000k -maxrate:v:0 2000k -bufsize:v:0 4000k \
-b:v:1 1500k -minrate:v:1 1000k -maxrate:v:1 1000k -bufsize:v:1 2000k \
-b:v:2 500k -minrate:v:2 500k -maxrate:v:2 500k -bufsize:v:2 1000k \
-program program_num=1:title=multi_p30:st=0:st=1:st=2:st=3 \
-f mpegts "big_buck_bunny_720_480_360.ts"