면책 조항 : 이것은 실제 질문이 아니라 "지식을 공유하십시오, Q & A 스타일"
그래서, 나는 내 Raspberry Pi에서 Xbmc를 실행 중이며 실제로 재생할 수있는 것과 그렇지 않은 것을 이해하는 데 어려움을 겪고 있습니다.
RPi가 H.264로 인코딩 된 비디오를 재생할 수 있지만 x264로 인코딩 된 비디오 만 찾을 수 있다고 읽었습니다 . 저것도 작동할까요? 그렇다면 왜 일부 파일이 작동 하지 않습니까?
면책 조항 : 이것은 실제 질문이 아니라 "지식을 공유하십시오, Q & A 스타일"
그래서, 나는 내 Raspberry Pi에서 Xbmc를 실행 중이며 실제로 재생할 수있는 것과 그렇지 않은 것을 이해하는 데 어려움을 겪고 있습니다.
RPi가 H.264로 인코딩 된 비디오를 재생할 수 있지만 x264로 인코딩 된 비디오 만 찾을 수 있다고 읽었습니다 . 저것도 작동할까요? 그렇다면 왜 일부 파일이 작동 하지 않습니까?
답변:
H.264 (도트 포함)가 실제로 무엇인지에 대해 많은 오해가있는 것 같습니다. 따라서 Wikipedia 에서 인용하면 :
H.264 / MPEG-4 파트 10 AVC는 (고급 비디오 코딩)이다 표준 비디오 압축을위한 , 현재 가장 일반적으로 사용되는 포맷 중 하나 인 [...]
여기서 늘리는 중요한 부분은 단지 표준 이라는 것 입니다. 즉, 비디오는 실제로 H.264로 인코딩되지 않고 H.264 표준을 충족하는 코덱으로 인코딩됩니다. 가장 일반적인 것 중 하나는 x264입니다 (소문자 x, 점 없음).
x264는 비디오 스트림을 H.264 / MPEG-4 AVC 형식 으로 인코딩하기위한 무료 소프트웨어 라이브러리입니다 .
[...]
x264는 다른 H.264 인코더와 비교하여 많은 기능을 구현합니다.
따라서 H.264는 일종의 인터페이스이고 x264는 해당 인터페이스의 구현 (실제 기능 포함)입니다.
따라서 Pi는 x264로 인코딩 된 파일을 잘 재생할 것입니다.
그렇다면 왜 일부 x264 인코딩 파일이 원활하게 재생되지 않고 4-6 초마다 멈추는가 (GPU-Ram의 양에 따라)?
대부분 의 경우 소리 입니다. x264는 HD 비디오 파일 용 인코더이므로 대부분의 파일에는 DTS 코덱 을 사용하는 디지털 고품질 사운드 트랙이 제공 됩니다.
Pi는 (현재) DTS 트랙을 하드웨어 디코딩 할 수 없으며 CPU가 충분히 강력하지 않습니다. 공식 포럼에서 이에 대한 토론이 있습니다.
이 경우에 해당하는지 확인하려면 mediainfo
-tool을 사용할 수 있습니다 (설치해야 함, 패키지 이름은 배포판에 따라 다름).
[tv@raspberry]$ mediainfo some_random_movie.mkv
# Shortened output!
Audio #2
ID : 3
Format : DTS
Format/Info : Digital Theater Systems
Codec ID : A_DTS
이제 두 가지 옵션이 있습니다.
수신기 (HDMI 케이블을 꽂은 것)가 할 수있는 기능을 tvservice
찾으 려면 -tool (PATH에 있지 않으므로 전체 경로가 필요함)을 사용하십시오.
[tv@raspberry ~]$ /opt/vc/bin/tvservice -a
PCM supported: Max channels: 2, Max samplerate: 48kHz, Max samplesize 24 bits.
AC3 supported: Max channels: 6, Max samplerate: 48kHz, Max rate 640 kb/s.
보시다시피, 현재 수신기는 PCM 및 AC3 (DTS 아님)를 디코딩 할 수 있습니다.
이 문제에 대한 나의 해결책은 DTS 인 오디오 트랙을 AC3으로 변환하는 것입니다. 다음은 모든 오디오 스트림 infile.mkv
을 AC3 로 변환 하고 비디오를 건드리지 않는 작은 하나의 라이너입니다 .
ffmpeg :
ffmpeg -i infile.mkv -map 0 -codec:v copy -codec:s copy -codec:a ac3 outfile.mkv
avconv :
avconv -i infile.mkv -map 0 -vcodec copy -acodec ac3 -ab 256k outfile.mkv
참고 : 위의 명령 은 결과 AC3 인코딩 오디오 스트림 의 비트 전송률 도 설정합니다(필요한 것 같습니다). 256kbps가 적당하지만 (대부분의 DVD는 192kbps를 사용합니다), 증가 / 감소를 원할 수 있습니다.
운 좋게도 하드웨어에 따라 5 분 정도 걸립니다 (물론 하드웨어에 따라 다름). 약간의 보너스로 파일이 작아지고 Audiophile 가 아닌 경우 차이를 듣지 못합니다.
여전히 1080p FullHD 동영상이 끊기고 소리가 들리지 않고 화면이 몇 초 동안 검게 변하지 만 비디오 재생은 계속되는 것 같습니다. 영화는 AC3 트랙이있는 MKV 컨테이너에 H.264로 인코딩되어 있습니다. 무엇이 문제입니까?
영화 파일에는 문제가 없지만 Xbmc 설정에는 문제가 없을 수 있습니다. 필자의 경우 문제는 Xbmc의 "새로 고침 빈도"였습니다 . 기본적으로 60Hz로 설정되어 있습니다. 720p 및 기타 작은 비디오 파일의 경우 Pi에 문제가없는 것으로 보이지만 1080p 파일로 인해 위의 문제가 발생합니다.
화면 주사율을 60Hz 미만으로 낮추십시오 (동영상에는 24Hz 이상이면 충분합니다). 여기에는 두 가지 옵션이 있습니다.
System -> Settings -> System -> Video output -> Refresh rate
System -> Settings -> Video -> Playback -> Adjust display refresh rate to match video
화면 주사율을 낮추면 1080p 동영상도 제대로 재생됩니다.
sudo apt-get install ffmpeg
. RPI에서 이것을 시도 했습니까? 잘 작동합니까?
ffmpeg
는 deprected되지 않습니다. avconv
포크입니다.