2013-07-08 4 views
2

나는 stitchedStreamPlayer를 사용하여 스트림 비디오를 재생 해왔다. 그러나, 나는 비디오의 마지막 프레임에서 멈출 수 없다. 그것은 검은 화면을 보이고있다. 속성을 설정했습니다.AVPlayer가 HLS 스트리밍 비디오의 마지막 프레임에서 멈추지 않는 이유는 무엇입니까?

[player setActionAtItemEnd:AVPlayerActionAtItemEndPause]; 

여전히 마지막 프레임의 비디오를 멈추지 않습니다. 마지막 프레임에서 어떻게 멈춰야합니까?

+0

이것을 알아 냈습니까? – BigCheesy

+0

여기에서 같은 문제가 발생합니다. 어떤 해결책입니까? 감사. – aleberguer

답변

0

이 문제는 긴 오디오 트랙이 원인 인 것 같습니다. 아래 스크립트는 마지막 .ts 파일을 수정합니다.

last_ts=$(ls -1 "$dir"/out_*.ts | sort | tail -1) 
bak=$last_ts.bak 
filename="${last_ts##*/}" 
basename="${filename%.*}" 
workdir=/tmp 

# copy only on the first run 
[ -f "$bak" ] || cp -r "$last_ts" "$bak" 

ffmpeg -y -i "$bak" -vn -c:a copy "$workdir/${basename}_a.ts" 

video_stream_info="$(ffprobe "$bak" 2>&1 | grep 'Stream #0:0')" 
resolution=$(echo "$video_stream_info" | perl -pe 's/^.*?, ([0-9]*x[0-9]*).*$/\1/g') 
fps=$(echo "$video_stream_info" | perl -pe 's/^.*?([0-9.]*) fps.*$/\1/g') 
bitrate="" 
# FIXME 
if [ $quality = low ];then 
    bitrate=400k 
elif [ $quality = mid ];then 
    bitrate=900k 
elif [ $quality = high ];then 
    bitrate=1200k 
fi 
extended_duration=$(ffprobe "$bak" 2>&1 | perl -ne '/Duration: (\d*):(\d*):(\d*)\.(\d*)/ && print((((((int($1) * 60) + int($2)) * 60) + int($3)) * 100 + int($4) + 10)/100)') 

ffmpeg -y -f lavfi -i nullsrc=s=${resolution}:d=${extended_duration}:r=${fps} -i "$bak" \ 
     -filter_complex "[0:v][1:v]overlay[video]" -map "[video]" \ 
     -b:v $bitrate -c:v libx264 -an "$workdir/${basename}_v.ts" 

ffmpeg -y -i "$workdir/${basename}_v.ts" -i "$workdir/${basename}_a.ts" \ 
     -c:a copy -c:v copy \ 
     "$last_ts" 
관련 문제