本文完成於2017/8/29,時間太久就自己考慮要不要參考,因為我相信技術是日新月異的
寫這文是因為本身遇到,我先說明一下遇到的情形
使用手機(android or iphone)直立時拍攝影片,影片儲存後將它上傳到串流主機上(Wowza),
使用各種播放軟體或WEB播放器來播放 http://[server ip]/vod/[videoname]/playlist.m3u8
得到的結果是應該直立的影片,變成橫放的,如果以解析度來說,就是原本拍攝時應該為720x1280的影片變成了1280x720.
另外做了個測試,如果以播放軟體或WEB播放器來播放原檔,而不要透過串流主機,則部分正常,部分是倒罝的.
再深入的看了一下影片的資訊,發現手機的拍攝影片是以影片的metadata中的rotation來區分是否直立,
也就是說解析度是一樣的1280x720,但rotation分為0,90,180,270度,剛好構成了手機拍攝的四個方向,
而rotation這個flag,也並不是所有的播放器或browser都支擾的,所以造成播放器有些能正常顯示,有些不能,
那些能那些不能你可以參考 https://addpipe.com/blog/mp4-rotation-metadata-in-mobile-video-files/
而Wowza的串流工作,是把影片切片變成一段段的TS檔,如果客戶端要求時,再傳輸TS檔給客戶端的播放器,
但是注意.....TS檔沒有rotation這個flag的參數,所以經過Wowza出來的影片切片是沒有rotation的,
所以不管你用什麼播放器,得到的都是倒置的影像,
如果要解決此問題,你就必須上傳影片前,先進行一次轉檔,如果使用ffmpeg,可以參考下面的指令參數
ffmpeg -i input.mp4 -codec copy -metadata:s:v:0 rotate=0 output.mp4
另外也可以使用ffmpeg的transpose選項來達成,指令如下
ffmpeg -y -i input.mp4 -vf "transpose=1" output.mp4
轉檔完後再上傳就沒問題了,如果你不用ffmpeg也沒關係,可以使用這個網站提供的服務
http://www.rotatevideo.org/
將影片上傳再按照你的需求,它就會幫你轉檔了,之後你再下載下來然後上傳到Wowza就行了,
至於有沒有不用轉檔就可以上傳並正常顯示的的方法呢??
呵呵...我正在找,如果你知道,請你告訴我.
留言列表