내가 가지고 있는 것은 비디오 스트림과 오디오 스트림이 있는 MP4 영화입니다.
출력에서 원하는 것은 다음을 포함하는 MP4 파일입니다.
- 동일한 비디오 스트림
- 동일한 오디오 스트림
- 비트 전송률이 낮은 동일한 비디오 스트림
누구든지 적절한 ffmpeg 명령을 알려주실 수 있나요?
답변1
원칙적으로는 그렇게 되어있습니다. 오디오 없이 낮은 비트 전송률로 인코딩합니다. 물론 이는 H.264 비디오가 있다고 가정합니다. 을 체크 해봐인코딩 가이드더 많은 정보를 위해서.
ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4
그런 다음 파일을 병합합니다.
ffmpeg -i input.mp4 -i lower.mp4 -c copy -map 0:v -map 0:a -map 1:v output.mp4
그러면 첫 번째 파일의 첫 번째 비디오 및 오디오 스트림과 두 번째 파일의 첫 번째 비디오 스트림을 가져와서 출력 컨테이너에 복사합니다.
그런 다음 @trikly가 언급했듯이 이 작업을 수행해도 실질적인 이점은 없습니다. 특히 질문에 "비디오 스트리밍"이라는 태그를 붙였으므로 컨테이너 내부에 또 다른 스트림을 추가하면 더 작은 표현을 제공하는 대신 클라이언트가 다운로드해야 하는 파일의 크기가 늘어납니다. 이는 제한된 대역폭 환경에서 일반적으로 수행하려는 작업입니다.
실제 해결책은 일종의 작업을 수행하는 것입니다.적응형 스트리밍, MPEG-DASH 또는 HLS*를 사용합니다. ffmpeg는 DASH 및 HLS 스트리밍에 사용할 수 있는 세그먼트화된 파일을 생성할 수 있지만 메타 정보 파일 등도 생성해야 합니다. 그리고 DASH 또는 HLS를 지원하는 클라이언트가 필요합니다.
설정하기가 너무 많은 경우에는 각각 고유한 링크가 있는 두 가지 형식으로 비디오를 제공해야 합니다.
*확장 가능한 비디오 코딩비슷한 목표로 설계되었지만 요즘에는 누구도 실제로 사용하지 않습니다.