ffmpegならこちらへ 2 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0834名無しさん@お腹いっぱい。
2016/11/23(水) 01:14:51.43ID:89dtXQX10長時間だとニコニコの仕様で何分割かでファイルが保存されるがこれらをFFmpeg 1.1以降に搭載されているconcat(demuxer)を使い以下の実行書式で無劣化連結しようと試みた
ffmpeg.exe -f concat -safe 0 -i 全分割flvが記述されたテキスト.txt -c copy 連結後の統合flv.flv
(.txtの中身)
file 分割1.flv
|
file 分割最後.flv
このtxtを作り終えconcatを実行する前に連結部分で重複フレームの存在を確認し発見次第それぞれの末尾と冒頭をカットしようと思って(但し区切るのは必ずキーフレーム)各flvファイルに対し
ffprobe.exe -of json -show_packets -show_data_hash adler32 -i 分割.flv -select_streams v > show_data_hash.json
を実行して整合性を取り(data_hashがフレームデータなのでこの重複を確認→flagsがキーフレーム「K_」か確認→ptsでそれぞれの末尾と冒頭の時間特定)
durationやoutpointやinpointの確定作業を進めようと実際に実行したのだがいくつかのflvでffprobe.exeが強制終了したのでとりあえずカットはパスし連結コマンドを実行した
連結後の統合flvを再生するとある時間からある時間が静止画状態止になったり再生すらしない箇所があった
(正常に連結出来ない原因がflvの中にあるのか?)と思って全分割flvファイル中のストリーム配列と構造体を以下の書式で確認してみたんだわ
ffmpeg -i 分割.flv
すると少数のflvだけストリーム配列が
Stream #0:0: Audio
Stream #0:1: Subtitle
Stream #0:2: Video
で残りの大多数が
Stream #0:0: Audio
Stream #0:1: Video
だったから同じストリーム番号同士がオプションで細かく指定しない限り自動的に連結されるからそりゃ駄目だわって気が付いたんだがここでお前らに質問
ffmpegでファイルから上記のSubtitleストリームを削除して後者と同じにする方法とかある?これが出来ればまず無劣化連結出来るかなと
■ このスレッドは過去ログ倉庫に格納されています